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 means it has 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-Tier 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. A 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.toolingend--front
        .container.flexi
            .toolingend__main
                p.toolingend__title.h3
                    strong Ready To Start?
                p.h5.pt-2 Discover our quick start guides and build your first <br>application in 5-10 minutes
            .toolingend__action
                a.button(href="https://ignite.apache.org/docs/latest/", target="_blank") Discover Quick Start Guide