extend ../_components/base.pug

block pagetitle
    | Multi-Tier Storage   

block css 
    link(rel="stylesheet", href="../css/native-persistence.css")
    link(rel="stylesheet", href="../css/multi-tier.css")
    link(rel="stylesheet", href="../js/vendor/glightbox/glightbox.min.css")
    script(src="../js/vendor/glightbox/glightbox.min.js")



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 Multi-Tier Storage
                .innerhero__descr.pt-2.h5.
                    Store and access your data across memory <br>and disk with no compromises
                .innerhero__action 
                    a.button.innerhero__button(href="https://ignite.apache.org/docs/latest/index") Start Coding
            img.innerhero__pic.innerhero__pic--multitier(src="/public/img/usecases/in-memory-hero.svg", alt="Distributed In-Memory Cache")
    // /.innerhero


    section.multitier2
    .container 
        h2.h3.multitier2__title.
            Apache Ignite multi-tier storage implements a cutting-edge storage architecture that combines performance benefits of&nbsp;memory with the scalability and durability advantages of disk-based databases.


    section.multitiers.container
        header.blockheader.blockheader--spl.flexi
                h2.h4.blockheader__left.blockheader__left--full Primary Multi-Tier Storage Usage Modes
        .multitier3.flexi
            .multitiers__left
                article.multitierblock
                    h3.multitierblock__title In-Memory Mode
                    p.fz20.pt-2 Get all the benefits of in-memory computing solutions. Store and process data at the lowest latency and highest throughput.
                    img.multitierblock__pic(src="/public/img/features/multitier/01-bd.svg", alt="")
            .multitiers__right.multitiers__text
                h4.multitier3__h4.fz20.pb-1x How It Works
                p The whole data set is available in memory tier only.
                p In order to survive node failures, we recommend keeping at least one backup copy of the data in the cluster. DRAM or Intel® Optane™ operating in the Memory Mode can be used as a storage device.
                h4.multitier3__h4.fz20.pt-3 Use-Cases
                ul.dashlist.pt-2
                    li In-memory caching
                    li High-performance computing
                    li Web-session caching
                    li Real-time processing of continuous data streams
                .multitiervid.pt-3
                    span.multitiervid__link 
                        span In-Memory Mode Case-Study
                    a(href="https://www.youtube.com/watch?v=Mhtt2QL_qCQ&t=639s", target="_blank", data-gallery="1").multitiervid__screen.glightbox
                        img(src="/public/img/features/multitier/video-1.png", alt="")
                    .multitiervid__descr Raiffeisen Bank uses in-memory mode to store their data
        // /.multitier3

        .multitier4.flexi
            .multitiers__left.multitiers__text
                h4.multitier3__h4.fz20.pb-1x How It Works
                p Ignite slides in between your existing application and data layer. Ignite <a href="https://ignite.apache.org/docs/latest/persistence/external-storage#read-through-and-write-through" target="_blank">writes-through</a> or <a href="https://ignite.apache.org/docs/latest/persistence/external-storage#write-behind-caching" target="_blank">writes-behind</a> all data modifications to the underlying external databases.
                h4.multitier3__h4.fz20.pt-3.pb-2 Use-Cases
                p Offloading and acceleration of existing databases, backend-systems, applications and APIs.
                .multitiervid.pt-4 
                    span.multitiervid__link 
                        span In-Memory + External Database Mode Case-Study
                    a.multitiervid__screen(href="#") 
                        img(src="/public/img/features/multitier/video-2.png", alt="")
                    .multitiervid__descr Short description
            .multitiers__right 
                article.multitierblock
                    h3.multitierblock__title In-Memory + External Database Mode
                    p.fz20.pt-1x Accelerate and offload your existing databases by deploying Ignite as a caching layer on top of existing disk-based databases and back-end systems.
                    img.multitierblock__pic(src="/public/img/features/multitier/03-bd.svg", alt="")
        // /.multitier4

        .multitier5.flexi
            .multitiers__left
                article.multitierblock
                    h3.multitierblock__title Multi-Tier Database Mode
                    p.fz20.pt-1x Scale beyond the available memory capacity and skip memory warm-ups on restarts 
                    img.multitierblock__pic(src="/public/img/features/multitier/04-bd.svg", alt="")
            .multitiers__right.multitiers__text
                h4.multitier3__h4.fz20.pb-1x How It Works
                p 100% of data is persisted to Ignite native persistence, and the same or smaller amount is cached in memory. The more data cached, the faster the performance.
                p Applications can query both in-memory and disk-only records transparently scaling beyond available memory capacity.
                p There is no need for memory warm-ups on restarts since Ignite can serve data from disk. SSD, Flash, HDD or Intel® Optane™ operating in the AppDirect Mode can be used as a storage device.
                h4.multitier3__h4.fz20.pt-3.pb-2 Use-Cases
                p Ignite as a distributed database for HTAP workloads or digital integration hub with the active persistence layer.
                .multitiervid.pt-4 
                    span.multitiervid__link 
                        span Native Persistence Case-Study
                    a.multitiervid__screen.glightbox(href="https://www.youtube.com/watch?v=jF9T2cJB6t0&t=137s", target="_blank", data-gallery="2") 
                        img(src="/public/img/features/multitier/video-3.png", alt="")
                    .multitiervid__descr JP Morgan team use Ignite to achieve persistence, caching and integrated compute
        // /.multitier3
    // /.multitiers



    section.native-bottom.container
        .native-bottom__grid 
            article.nativebotblock
                h3.h4.nativebotblock__title
                    img(src="/public/img/features/native-rocket.svg", alt="").nativebotblock__icon
                    span Ready to Start?
                p.nativebotblock__text Discover more details about multi-tier storage <br>and configure it for your use-case
                a.nativebotblock__link.arrowlink(href="https://cwiki.apache.org/confluence/display/IGNITE/Ignite+Persistent+Store+-+under+the+hood", target="_blank") Working with SQL Guide 
            article.nativebotblock.nativebotblock--learn
                h3.h4.nativebotblock__title
                    img(src="/public/img/features/native-docs.svg", alt="").nativebotblock__icon
                    span Want to Learn More?
                p.nativebotblock__text Check multi-tier storage implementation <br>details article 
                a.nativebotblock__link.arrowlink(href="https://ignite.apache.org/docs/latest/persistence/native-persistence", target="_blank") Multi-Tier Storage Implementation Details






