extend ../_components/base.pug

block pagetitle
    | Features 

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>Adapt easily with essential and high-performance computing APIs.
            img.innerhero__pic.innerhero__pic--features(src="/public/img/features/hero-bg.svg", alt="Apache Ignite Features")
    // /.innerhero


    section.features2#features2
        .container 
            h2.h3.features2__title Apache Ignite in-memory computing platform <br>comprises the following 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="/public/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="/public/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="/public/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="/public/img/features/04-ACID-transactions.svg", alt="")
                    h3.cardsimple__title ACID Transactions
                    .cardsimple__text.cardsimple__text--long.
                        Be sure Apache Ignite operates
                        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="/public/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="/public/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="/public/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="/public/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="/public/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="/public/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="/public/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
                h2.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

                    