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/key-value-apis.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

                    