extend _components/base.pug

block pagetitle
    title Use-Cases - Apache Ignite
    meta(name="description", content="The most common use-cases for Apache Ignite. Learn more how companies deploy Apache Ignite in production.")
    link(rel="canonical", href="https://ignite.apache.org/use-cases.html")

    meta(property="og:title", content="Use-Cases - Apache Ignite")
    meta(property="og:type", content="article")
    meta(property="og:url", content="https://ignite.apache.org/use-cases.html")
    meta(property="og:image", content="/img/og-pic.png")
    meta(property="og:description", content="The most common use-cases for Apache Ignite. Learn more how companies deploy Apache Ignite in production.")

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



block main
    - global.pageHref = "usecases.html"
    - config.hdrClassName = "hdr__blue"
    include _components/header.pug
    
    section.innerhero
        .container.innerhero__cont
            .innerhero__main
                .innerhero__pre.pb-3 Apache Ignite
                h1.h1.innerhero__h1 Use Cases
                .innerhero__descr.pt-2.h5.
                    With plenty of capabilities, Apache Ignite finds its route in many use-cases, ranging from a basic distributed cache, distributed database for hybrid transactional/analytical processing, to a sophisticated digital integration hub.
            img.innerhero__pic.innerhero__pic--usecase(src="/img/usecases/head-bg.svg", alt="Apache Ignite Use Cases")



    section.usecase2#usecase2
        .container 
            p.blockcapslead Widespread use-cases
            header.blockheader.flexi
                h2.h4.blockheader__left Application Acceleration<br> And Scale Out
                .blockheader__right.fz20
                    p Accelerate your existing applications by 100x or more by using in-memory computing. There are several deployment options.
            .usecase2__wrap
                .usecasecard.cardsimple
                    h4.cardsimple__title In-Memory Cache
                    .cardsimple__text Cache data with extra capabilities: query with SQL and update atomically by using ACID transactions.
                    .cardsimple__bottom
                        a(href="/use-cases/in-memory-cache.html").cardsimple__button.button.button--shadow Learn More
                .usecasecard.cardsimple
                    h4.cardsimple__title In-Memory Data Grid
                    .cardsimple__text Use an advanced read-through / write-through cache that is deployed on top of one or several databases.
                    .cardsimple__bottom
                        a(href="/use-cases/in-memory-data-grid.html").cardsimple__button.button.button--shadow Learn More
                .usecasecard.cardsimple
                    h4.cardsimple__title In-Memory Database
                    .cardsimple__text Use Apache Ignite as an ultra-fast and horizontally scalable in-memory database.
                    .cardsimple__bottom
                        a(href="/use-cases/in-memory-database.html").cardsimple__button.button.button--shadow Learn More
                .usecasecard.cardsimple
                    h4.cardsimple__title High-Performance Computing
                    .cardsimple__text.cardsimple__text--long Execute kilobyte-size custom code over petabytes of data. Turn your Ignite database into a distributed supercomputer for low-latency calculations, complex analytics, and machine learning.
                    .cardsimple__bottom
                        a(href="/use-cases/high-performance-computing.html").cardsimple__button.button.button--shadow Learn More
    // /.usecase2




    section.usecase3#database
        .container
            .blockheader.usecase3__block.flexi
                h2.h4.blockheader__left Distributed Database For HTAP Workloads
                .blockheader__right.fz20
                    p Build modern applications that support transactional and analytical workloads by using Ignite as&nbsp;a&nbsp;database that scales beyond available memory capacity. 
                    p Ignite allocates memory for your hot data and goes to disk whenever applications query cold records.
            .blockheader.usecase3__block.flexi
                h2.h4.blockheader__left Digital Integration Hub
                .blockheader__right.fz20
                    p Аn advanced platform architecture that aggregates multiple back-end systems and databases into a low-latency and shared data store.
                    a(href="/use-cases/digital-integration-hub.html").blockheader__button.button.button--shadow Learn More
    // /.usecase3



    section.usecase4
        .container
            p.blockcapslead Other use-cases
            .usecase4__wrap

                .usecasecard.cardsimple
                    h4.cardsimple__title Key-Value Store
                    .cardsimple__text Access the cluster with key-value requests or take advantage of APIs available exclusively in Ignite.
                    .cardsimple__bottom
                        a(href="/use-cases/key-value-store.html").cardsimple__button.button Learn More
                .usecasecard.cardsimple
                    h4.cardsimple__title Apache Spark Performance Acceleration
                    .cardsimple__text Accelerate the performance of Apache Spark® by keeping data in a shared Apache Ignite® in-memory cluster.
                    .cardsimple__bottom
                        a(href="/use-cases/spark-acceleration.html").cardsimple__button.button Learn More
                .usecasecard.cardsimple
                    h4.cardsimple__title Apache Hadoop Performance Acceleration
                    .cardsimple__text Get real-time analytics across Apache™ Hadoop® operational and&nbsp;historical data silos.
                    .cardsimple__bottom
                        a(href="/use-cases/hadoop-acceleration.html").cardsimple__button.button Learn More
    // /.usecase4


            


                