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="/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="/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.
                        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="/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
                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

                    