extend ../_components/base.pug

block pagetitle
    title Product Features - Apache Ignite Components
    meta(name="description", content="Apache Ignite set of components. Learn more about Apache Ignite product features on our website.")
    link(rel="canonical", href="https://ignite.apache.org/features/")

    meta(property="og:title", content="Product Features - Apache Ignite Components")
    meta(property="og:type", content="article")
    meta(property="og:url", content="https://ignite.apache.org/features/")
    meta(property="og:image", content="/img/og-pic.png")
    meta(property="og:description", content="Apache Ignite set of components. Learn more about Apache Ignite product features on our website.")

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



block main
    - global.pageHref = "features"
    - 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 Features
                .innerhero__descr.pt-2.h5.
                    Scale across memory and disk with no compromises. <br>Process your data with SQL, compute, real-time streaming and other APIs.
            img.innerhero__pic.innerhero__pic--features(src="/img/features/hero-bg.svg", alt="Apache Ignite Features")
    // /.innerhero


    section.features2#features2
        .container 
            h2.h3.features2__title Apache Ignite comprises the following <br>set of components
            header.blockheader.blockheader--spl.flexi
                h2.h4.blockheader__left Distributed Multi-Tiered Storage
                .blockheader__right.fz20
                    p State-of-the-art storage engine that performs at in-memory <br>speed and stores data durably at unlimited scale

            .cardswrap
                .usecasecard.cardsimple
                    .cardsimple__icon 
                        img(src="/img/features/01-multi-tier-storage.svg", alt="")
                    h3.cardsimple__title Multi-Tier Storage
                    .cardsimple__text.cardsimple__text--long.
                        Chose a storage mode for your 
                        performance and capacity needs: 
                        in-memory, in-memory +&nbsp;external 
                        database, or in-memory + native 
                        persistence.
                    .cardsimple__bottom
                        a(href="/arch/multi-tier-storage.html").cardsimple__button.button.button--shadow Learn More
                .usecasecard.cardsimple
                    .cardsimple__icon 
                        img(src="/img/features/02-native-persistence.svg", alt="")
                    h3.cardsimple__title Native Persistence
                    .cardsimple__text.
                        Turn Ignite into a database with 
                        capacity and durability characteristics 
                        of traditional disk-based databases.
                    .cardsimple__bottom
                        a(href="/arch/native-persistence.html").cardsimple__button.button.button--shadow Learn More
    // /.features2

                
    section.features3
        .container
            header.blockheader.blockheader--spl.flexi
                h2.h4.blockheader__left Essential Developer APIs
                .blockheader__right.fz20
                    p Start with Ignite seamlessly using the APIs you are already <br>experienced with
            .cardswrap 
                .usecasecard.cardsimple
                    .cardsimple__icon 
                        img(src="/img/features/03-distributed-SQL.svg", alt="")
                    h3.cardsimple__title Distributed SQL
                    .cardsimple__text.
                        Interact with Ignite as with a regular 
                        SQL database using JDBC, 
                        ODBC drivers, or native SQL APIs.
                    .cardsimple__bottom
                        a(href="/features/sql.html").cardsimple__button.button.button--shadow Learn More
                .usecasecard.cardsimple
                    .cardsimple__icon 
                        img(src="/img/features/04-ACID-transactions.svg", alt="")
                    h3.cardsimple__title ACID Transactions
                    .cardsimple__text.cardsimple__text--long.
                        Operate in a strongly consistent mode with full support for distributed ACID transactions
                    .cardsimple__bottom
                        a(href="/features/acid-transactions.html").cardsimple__button.button.button--shadow Learn More
                .usecasecard.cardsimple
                    .cardsimple__icon 
                        img(src="/img/features/05-key-value-APIs.svg", alt="")
                    h3.cardsimple__title Key Value APIs
                    .cardsimple__text.
                        Use simple key-value requests
                        for fast data look-ups
                        and updates.
                    .cardsimple__bottom
                        a(href="/features/distributed-key-value-store.html").cardsimple__button.button.button--shadow Learn More
    // /.features3


    section.features4
        .container 
            header.blockheader.blockheader--spl.flexi
                h2.h4.blockheader__left High-Performance Computing APIs
                .blockheader__right.fz20
                    p Execute kilobyte-size custom code over petabytes of data
            .cardswrap 
                .usecasecard.cardsimple
                    .cardsimple__icon 
                        img(src="/img/features/06-compute-APIs.svg", alt="")
                    h3.cardsimple__title Compute APIs
                    .cardsimple__text.
                        Execute data-intensive and
                        compute-intensive logic over 
                        your distributed cluster.
                    .cardsimple__bottom
                        a(href="/features/compute-apis.html").cardsimple__button.button.button--shadow Learn More
                .usecasecard.cardsimple
                    .cardsimple__icon 
                        img(src="/img/features/07-machine-learning.svg", alt="")
                    h3.cardsimple__title Machine Learning
                    .cardsimple__text.
                        Use built-in algorithms to train
                        and execute machine and deep learning
                        models at scale.
                    .cardsimple__bottom
                        a(href="/features/machinelearning.html").cardsimple__button.button.button--shadow Learn More
                .usecasecard.cardsimple
                    .cardsimple__icon 
                        img(src="/img/features/08-services.svg", alt="")
                    h3.cardsimple__title Services
                    .cardsimple__text.
                        Create and deploy custom 
                        micro-service on your cluster 
                        nodes.
                    .cardsimple__bottom
                        a(href="/features/servicegrid.html").cardsimple__button.button.button--shadow Learn More
    // /.features4


    section.features5
        .container
            header.blockheader.blockheader--spl.flexi
                h2.h4.blockheader__left Real-Time Streaming APIs
                .blockheader__right.fz20
                    p Implement event-driven architectures seamlessly <br>with the following Ignite product features:
            .cardswrap 
                .usecasecard.cardsimple
                    .cardsimple__icon 
                        img(src="/img/features/09-streaming.svg", alt="")
                    h3.cardsimple__title Streaming
                    .cardsimple__text.
                        Stream and process your data
                        in a scalable and fault-tolerant 
                        fashion.
                    .cardsimple__bottom
                        a(href="/features/streaming.html").cardsimple__button.button.button--shadow Learn More
                .usecasecard.cardsimple
                    .cardsimple__icon 
                        img(src="/img/features/10-continuous-queries.svg", alt="")
                    h3.cardsimple__title Continuous Queries
                    .cardsimple__text.
                        Execute your custom logic in response
                        to data changes happening across
                        the cluster.
                    .cardsimple__bottom
                        a(href="https://ignite.apache.org/docs/latest/key-value-api/continuous-queries").cardsimple__button.button.button--shadow Learn More
                .usecasecard.cardsimple
                    .cardsimple__icon 
                        img(src="/img/features/11-messaging.svg", alt="")
                    h3.cardsimple__title Messaging
                    .cardsimple__text.
                        Exchange messages across 
                        the publisher-subscriber 
                        pattern.
                    .cardsimple__bottom
                        a(href="https://ignite.apache.org/docs/latest/messaging").cardsimple__button.button.button--shadow Learn More
    // /.features5



    section.featureslast 
        .container
            .featureslast__main
                .h4.featureslast__title.pb-1 Looking For Something Else?
                .featureslast__descr.fz20 Explore our technical documentation to discover Ignite's other features 
                ul.featureslast__links.pt-4
                    li
                        a(href="https://ignite.apache.org/docs/latest/data-structures/queue-and-set").arrowlink Data Structures
                    li
                        a(href="https://ignite.apache.org/docs/latest/clustering/clustering").arrowlink Clustering
                    li
                        a(href="https://ignite.apache.org/docs/latest/extensions-and-integrations/spring/spring-boot").arrowlink Other Integrations
                    li
                        a(href="/features/multilanguage.html").arrowlink Multi-Language Support

                    