extend ../_components/base.pug

block pagetitle
    | Features 

block css 
    link(rel="stylesheet", href="../css/features.css")



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

                    