extend ../_components/base.pug

block pagetitle
    title Key-Value Store / Database - Apache Ignite
    meta(name="description", content="Apache Ignite is the best and fastest key-value database that stores data both in memory and on disk with support for key-value, SQL, ACID transactions, compute, and machine learning APIs.")
    link(rel="canonical", href="https://ignite.apache.org/use-cases/key-value-store.html")

    meta(property="og:title", content="Key-Value Store / Database - Apache Ignite")
    meta(property="og:type", content="article")
    meta(property="og:url", content="https://ignite.apache.org/use-cases/key-value-store.html")
    meta(property="og:image", content="/img/og-pic.png")
    meta(property="og:description", content="Apache Ignite is the best and fastest key-value database that stores data both in memory and on disk with support for key-value, SQL, ACID transactions, compute, and machine learning APIs.") 

block css 
    link(rel="stylesheet", href="../css/native-persistence.css?ver=" + config.version)
    link(rel="stylesheet", href="../css/compute-apis.css?ver=" + config.version)
    link(rel="stylesheet", href="../css/digital-hub.css?ver=" + config.version)
    link(rel="stylesheet", href="../css/datagrid.css?ver=" + config.version)
    link(rel="stylesheet", href="../css/hadoop.css?ver=" + config.version)
    link(rel="stylesheet", href="../css/key-value-store.css?ver=" + config.version)

  



block main
    - global.pageHref = "usecases"
    - config.hdrClassName = "hdr__blue"
    include ../_components/header.pug


    section.innerhero
        .container.innerhero__cont
            .innerhero__main
                
                h1.h1.innerhero__h1 Key-Value Store
                  <br> 
                  span.with-apache  With Apache Ignite
                .innerhero__descr.pt-2.h5.
                    Distributed store for high-performance data access
                .innerhero__action 
                    a.button.innerhero__button(href="https://ignite.apache.org/docs/latest/index") Start Coding
            img.innerhero__pic.innerhero__pic--key(src="/img/usecases/key-value/hero-image.svg", alt="hero-image")
    // /.innerhero

    
    section.key1 
       .container
          .hub1__block.key1__block.flexi
            .hub1__info
              h2.h5.hub1__title What is a key-value store?
              p.hub1__text A key-value store is a data storage software. It stores, retrieves, and manages data as a set of unique keys. Each one is associated with one and only one value.
              h2.h5.hub1__title.hub1__titleend How a key-value store works
              p.hub1__text A key-value store, or a key-value database, holds a collection of data records in various fields. The data records have unique keys to retrieve and modify records quickly. 

            img.hub1__image(src="/img/usecases/key-value/image.svg", alt="image")
    // /.hub1 

    

  
    
   
    section.compute2
     .container
       .doop2__block
          h2.compute2__h2 Benefits Of Key-Value Store
          .compute2__grid.flexi.hub2__grid.doop2__grid 
               .compute2item.hub2item.doop2__item
                 .compute2-points__item.fz20
                 .compute2item__block
                   h3.fz20.compute2item__title Low-latency access and high-performance
                   p.compute2__text.base2__text Thanks to their design, key-value stores can perform many more operations in a given amount of time than other database models
             
               .compute2item.hub2item.doop2__item
                 .compute2-points__item.fz20
                 .compute2item__block
                   h3.fz20.compute2item__title Horizontal scalability
                   p.compute2__text.base2__text Key-value stores can keep and process large volumes of data by&nbsp;scaling horizontally
                   
            
    // /.compute2

    section.key4 
       .container
          .grid4__blocks.flexi
            h2.grid4__h2.h5.key4__h2 With Apache Ignite, a key-value store can cache data in memory and persist it on disk
            .grid4__block
               p.grid4__text The <a href="/arch/native-persistence.html">native persistence</a> feature eliminates the time-consuming cache warm-up step as well as the data reloading phase from external databases.
               p.grid4__text.pt-1 Since native persistence always keeps a full copy of data on disk, you are free to cache a subset of records in memory. 
               p.grid4__text.pt-1 If a required data record is missing in memory, then Ignite reads it from disk automatically, regardless of the API you use.
    // /.grid4

    section.key5
       .container
          h2.grid5__h2.key5__h2.h4 Key-value store is used when <strong>speed and scale are top priorities</strong>
          .grid5__blocks.flexi
             article.native2item.grid5__item
               h3.key5__h3 User sessions caching
               p.grid5__text.key5__text Key-value stores are used to accumulate user session details in web applications to personalize content.
             article.native2item.grid5__item
               h3.key5__h3 360 Customer View
               p.grid5__text.key5__text Applications can collect user preferences and behavioral patterns to offer better services. The records can be stored in a key-value database to enable fast customer data lookups.
             article.native2item.grid5__item
               h3.key5__h3 Back-end systems acceleration
               p.grid5__text.key5__text Developers use key-value stores to cache specific records that don’t require a&nbsp;regular update. This reduces the load on core back-end systems and databases.

    // /.key5  


    section.native-bottom.container
        .native-bottom__grid 
            article.nativebotblock
                .h4.nativebotblock__title
                    img(src="/img/features/native-rocket.svg", alt="").nativebotblock__icon
                    span Ready to Start?
                p.nativebotblock__text Discover our quick start guide and build your first<br> application in 5-10 minutes
                a.nativebotblock__link.arrowlink(href="https://ignite.apache.org/docs/latest/", target="_blank") Quick Start Guide
            article.nativebotblock.nativebotblock--learn
                .h4.nativebotblock__title
                    img(src="/img/features/native-docs.svg", alt="").nativebotblock__icon
                    span Want to Learn More?
                p.nativebotblock__text Check out Ignite key-value APIs article
                a.nativebotblock__link.arrowlink(href="/features/key-value-apis.html") Key-Value APIs Article





