extend _components/base.pug

block pagetitle
    title What Is Apache Ignite - FAQ
    meta(name="description", content="What is Apache Ignite? What is in-memory computing? Read the answers on our FAQ page.")
    link(rel="canonical", href="https://ignite.apache.org/faq.html")

    meta(property="og:title", content="What Is Apache Ignite - FAQ")
    meta(property="og:type", content="article")
    meta(property="og:url", content="https://ignite.apache.org/faq.html")
    meta(property="og:image", content="/img/og-pic.png")
    meta(property="og:description", content="What is Apache Ignite? What is in-memory computing? Read the answers on our FAQ page.")

block css 
    link(rel="stylesheet", href="../css/faq.css?ver=" + config.version)
    link(rel="stylesheet", href="../css/tooling.css?ver=" + config.version)

block main
    - global.pageHref = "faq"
    - config.hdrClassName = "hdr__blue"
    include ./_components/header.pug


    section.innerhero.innerhero--faq
        .container.innerhero__cont
            .innerhero__main.innerhero__main--long
                h1.h1.innerhero__h1 Frequently Asked Questions <br>About Apache Ignite
                .innerhero__descr.pt-5.h4.
                    Ignite’s rich feature set enables it for a myriad of use cases. <br>
                    Is Ignite a cache, transactional database, key-value store? <br>Find the answers below.
            img.innerhero__pic.innerhero__pic--faq(src="/img/faq/hero.svg", alt="Frequently asked questions")
    // /.innerhero



    section.faqabout.container 
        .capstext Apache Ignite FAQs
        .faqabout__wrap.flexi.pt-5
            .faqabout__left
                h2.h4.pb-2 What Is In-Memory Computing?
                p In-memory computing is a software and data-processing technique that stores data sets in memory across a cluster of interconnected nodes. An average speed performance is 10-1000x faster than in disk-based systems. 
                p In-memory computing software includes a distributed in-memory store with APIs and libraries optimized for high-performance data processing. Each cluster node (physical or virtual machine) contributes its available memory space with CPU cores to the total capacity of the cluster. 
                p An application interacts with the cluster as a single unit, letting the in-memory computing software shield and manage all the internals related to inter-node communications, data distribution, and queries processing. The cluster scales linearly and horizontally to meet the data volume and throughput goals of the applications.
            aside.faqabout__right
                .faqabout__num.h3 10-1000x
                p.h5 performance increase
                .faqabout__rightbot.h5 Unlimited horizontal scalability
    // /.faqabout




    section.faqfeats.container
        h2.h4.faqfeats__title Apache Ignite Belongs To&nbsp;The In-Memory <br>Computing Category:
        .faqfeats__wrap.flexi.pt-5
            article.faqfeat.pt-1
                .faqfeat__iconwrap.flexi 
                    img(src="/img/faq/icon-faq1.svg", alt="")
                .faqfeat__text.pt-2 Build real-time and event-driven solutions that process data with in-memory speed
            article.faqfeat.pt-1
                .faqfeat__iconwrap.flexi 
                    img(src="/img/faq/icon-faq2.svg", alt="")
                .faqfeat__text.pt-2 Scale up&nbsp;and out across available memory and disk capacity
            article.faqfeat.pt-1
                .faqfeat__iconwrap.flexi 
                    img(src="/img/faq/icon-faq3.svg", alt="")
                .faqfeat__text.pt-2 Take advantage of&nbsp;built-in SQL, high-performance computing and real-time processing APIs
    // /.faqfeats




    section.faqboxs.container
        article.faqbox.cardsimple
            h3.faqbox__itemtitle.h5 Is Ignite A Distributed Cache?
            .faqbox__anwser.h5.pt-3 Yes
            .faqbox__text.pt-3
                p When Ignite native persistence is&nbsp;disabled, Ignite can function as&nbsp;a&nbsp;distributed in-memory cache with support distributed ACID&nbsp;transactions, SQL queries, high-performance computing APIs, and more.
            .cardsimple__bottom
                a.cardsimple__button.button.button--shadow(href="/use-cases/in-memory-cache.html") Learn More: In-Memory Cache

        article.faqbox.cardsimple
            h3.faqbox__itemtitle.h5 Is Ignite A Distributed Database?
            .faqbox__anwser.h5.pt-3 Yes
            .faqbox__text.pt-3
                p Ignite is&nbsp;a&nbsp;distributed database for high-performance computing with in-memory speed.
                p Data in&nbsp;Ignite is&nbsp;stored in-memory and/or on-disk, and is&nbsp;either partitioned or&nbsp;replicated across a&nbsp;cluster of&nbsp;multiple nodes. This provides scalability, performance, and resiliency.
            .cardsimple__bottom
                a.cardsimple__button.button.button--shadow(href="/arch/multi-tier-storage.html") Learn More: Multi-Tiered Storage

        article.faqbox.cardsimple
            h3.faqbox__itemtitle.h5 Is Ignite An In-Memory Database?
            .faqbox__anwser.h5.pt-3 Yes
            .faqbox__text.pt-3
                p Ignite multi-tier storage supports both in-memory and disk tiers. You can always disable the native persistence and use Ignite as&nbsp;a&nbsp;distributed in-memory database, with support for SQL, transactions and other APIs.
            .cardsimple__bottom
                a.cardsimple__button.button.button--shadow(href="/use-cases/in-memory-database.html") Learn More: In-Memory Database

        article.faqbox.cardsimple
            h3.faqbox__itemtitle.h5 Is Ignite An In-Memory Data Grid?
            .faqbox__anwser.h5.pt-3 Yes
            .faqbox__text.pt-3
                p Ignite is&nbsp;a&nbsp;full-featured distributed data grid. As&nbsp;a&nbsp;grid, Ignite can automatically integrate with and accelerate any 3rd party databases, including any RDBMS or&nbsp;NoSQL stores.
            .cardsimple__bottom
                a.cardsimple__button.button.button--shadow(href="/use-cases/in-memory-data-grid.html") Learn More: In-Memory Data Grid

        article.faqbox.cardsimple
            h3.faqbox__itemtitle.h5 Is Ignite An SQL Database?
            .faqbox__anwser.h5.pt-3 Not fully
            .faqbox__text.pt-3
                p Although Ignite supports SQL natively, there are differences in&nbsp;how Ignite handles constraints and indexes.
                p Ignite supports primary and secondary indexes, however the uniqueness can only be&nbsp;enforced for the primary indexes. Ignite also does not support foreign key constraints at&nbsp;the moment.
            .cardsimple__bottom
                a.cardsimple__button.button.button--shadow(href="/use-cases/in-memory-database.html") Learn More: SQL Database

        article.faqbox.cardsimple
            h3.faqbox__itemtitle.h5 Is Ignite A Disk- Or Memory-Only Storage?
            .faqbox__anwser.h5.pt-3 Both
            .faqbox__text.pt-3
                p Native persistence in&nbsp;Ignite can be&nbsp;turned on&nbsp;and off. This allows Ignite to&nbsp;store data sets bigger than can fit in&nbsp;the available memory.
                p Essentially, smaller operational data sets can be&nbsp;stored in-memory only, and larger data sets that do&nbsp;not fit in&nbsp;memory can be&nbsp;stored on&nbsp;disk, using memory as&nbsp;a&nbsp;caching layer for better performance.
            .cardsimple__bottom
                a.cardsimple__button.button.button--shadow(href="/arch/native-persistence.html") Learn More: Native Persistence

        article.faqbox.cardsimple
            h3.faqbox__itemtitle.h5 Is Ignite A NoSQL Database?
            .faqbox__anwser.h5.pt-3 Not exactly
            .faqbox__text.pt-3
                p Just like other NoSQL databases, Ignite is&nbsp;highly available and horizontally scalable.
                p However, unlike other NoSQL databases, Ignite supports SQL and ACID transactions across multiple cluster nodes.
        
        article.faqbox.cardsimple
            h3.faqbox__itemtitle.h5 Is Ignite A Transactional Database?
            .faqbox__anwser.h5.pt-3 Not fully
            .faqbox__text.pt-3
                p ACID Transactions are supported, but only at&nbsp;key-value API level. Ignite also supports cross-partition transactions, which means that transactions can span keys residing in&nbsp;different partitions on&nbsp;different servers.
                p At&nbsp;SQL level, Ignite supports atomic, but not yet transactional consistency. SQL transactions implementation is&nbsp;already <a href="https://cwiki.apache.org/confluence/display/IGNITE/IEP-3%3A+Transactional+SQL" target="_blank">in&nbsp;the works</a> and will be&nbsp;released in&nbsp;Ignite&nbsp;3.
            .cardsimple__bottom
                a.cardsimple__button.button.button--shadow(href="/features/acid-transactions.html") Learn More: ACID Transactions

        article.faqbox.cardsimple
            h3.faqbox__itemtitle.h5 Is Ignite A Multi-Model Database?
            .faqbox__anwser.h5.pt-3 Yes
            .faqbox__text.pt-3
                p Ignite supports both key-value and SQL for modelling and accessing data. 
                p In&nbsp;addition, Ignite provides strong processing APIs for computing on&nbsp;distributed data.
            .cardsimple__bottom
                //- a.cardsimple__button.button.button--shadow(href="/use-cases/in-memory-database.html") Learn More: In-Memory Database

        article.faqbox.cardsimple
            h3.faqbox__itemtitle.h5 Is Ignite A Key-Value Store?
            .faqbox__anwser.h5.pt-3 Yes
            .faqbox__text.pt-3
                p Ignite provides a&nbsp;feature-rich key-value API, that is&nbsp;JCache (JSR-107) compliant and supports Java, C++, .NET, and other programming languages.
            .cardsimple__bottom
                a.cardsimple__button.button.button--shadow(href="/use-cases/key-value-store.html") Learn More: Distributed Key-Value Store
    // /.faqboxs
  


    section.toolingend
        .container.flexi
            .toolingend__main
                .toolingend__title.h4 Ready To Start With Apache Ignite?
                p.fz20.pt-1x Start with our Quick Start Guides and build your first application <br>in 5-10 minutes
            .toolingend__action
                a.button Build your first application