| extend ../_components/base.pug |
| |
| block pagetitle |
| title Distributed Key-Value APIs - Apache Ignite |
| meta(name="description", content="Apache Ignite as a distributed key-value store is supported for different caching techniques. Ignite key-value APIs allow to create database key-value tables on-chain and increase processing performance.") |
| link(rel="canonical", href="https://ignite.apache.org/features/key-value-apis.html") |
| |
| meta(property="og:title", content="Distributed Key-Value APIs - Apache Ignite") |
| meta(property="og:type", content="article") |
| meta(property="og:url", content="https://ignite.apache.org/features/key-value-apis.html") |
| meta(property="og:image", content="/img/og-pic.png") |
| meta(property="og:description", content="Apache Ignite as a distributed key-value store is supported for different caching techniques. Ignite key-value APIs allow to create database key-value tables on-chain and increase processing performance.") |
| |
| block css |
| link(rel="stylesheet", href="../css/native-persistence.css?ver=" + config.version) |
| link(rel="stylesheet", href="../css/key-value-api.css?ver=" + config.version) |
| |
| |
| |
| block main |
| - global.pageHref = "features" |
| - config.hdrClassName = "hdr__blue" |
| include ../_components/header.pug |
| |
| |
| section.innerhero.innerhero--keyvalue |
| .container.innerhero__cont |
| .innerhero__main |
| .innerhero__pre.pb-5 Apache Ignite |
| h1.h1.innerhero__h1 Distributed <br>Key-Value APIs |
| .innerhero__descr.pt-2.h5. |
| Query your distributed data in the fastest way possible <br>with key-value APIs |
| .innerhero__action |
| a.button.innerhero__button(href="https://ignite.apache.org/docs/latest/index") Start Coding |
| img.innerhero__pic.innerhero__pic--keyvalue(src="/img/features/key-value/hero.svg", alt="Distributed Key-Value APIs") |
| // /.innerhero |
| |
| |
| |
| section.keyvalue1.container.flexi |
| .keyvalue1__left |
| h2.capstext Key-Value APIs Overview |
| .keyvaluetext.pt-5 |
| p Every record in Ignite is stored as a key-value pair. All the records are distributed evenly across the cluster nodes. Your key-value queries are directed automatically to the nodes that store requested data. This is how Ignite utilizes all the given memory, disk, and CPU resources. |
| p Key-value APIs are supported by all existing Ignite client libraries: |
| .keyvalue1__libs.pt-5 |
| p.h5.leyvalue__lang Java <small>(implements JSR-107 specification known as JCache)</small> |
| p.h5.leyvalue__lang .NET |
| p.h5.leyvalue__lang Python |
| p.h5.leyvalue__lang Node.JS |
| p.h5.leyvalue__lang Your language |
| .keyvalue1__right |
| .keyvalue1__picwrap.picwrap |
| img(src="/img/features/key-value/key-value-api-pic.svg", alt="").keyvalue1__pic |
| // /.keyvalue1 |
| |
| |
| |
| section.keyvalueplank.container |
| .keyvalueplank__inner Apache Ignite key-value APIs provide additional capabilities such as <strong>automatic synchronization</strong> with external databases, <strong>near caching</strong> and <strong>ACID transactions.</strong> |
| |
| |
| |
| section.keyvalue2.container.flexi |
| .keyvalue2__left |
| h3.keyvalue__title Automatic Synchronization With External <br>Databases To Keep A Consistent Copy Of Data |
| .keyvaluetext.pt-2.pb-5 |
| p Two synchronization strategies are available in Apache Ignite: <br>write-through/behind and read-through. |
| dl.keyvalue2__box.pb-2 |
| dt Write-through and write-behind capabilities |
| dd.pt-2 Ignite can automatically write-through or write-behind all the changes to an external database for every key-value request issued by your applications. |
| dl.keyvalue2__box |
| dt Read-through capabilities |
| dd Read-through means that Ignite can automatically load data from an external database if a record is missing in memory. |
| .keyvalue2__right |
| .keyvalue2__picwrap.picwrap |
| img(src="/img/features/key-value/key-value-api-2.svg", alt="").keyvalue2__pic |
| // /.keyvalue2 |
| |
| |
| |
| |
| |
| section.keyvalue3.container.flexi |
| .keyvalue3__right |
| h3.keyvalue__title Near Cache To Process Your Requests In Microseconds |
| .keyvaluetext.pt-2.pb-5 |
| p A near cache is a local client-side cache that stores the most frequently <br>used data on the application end. |
| .keyvalue__title How it works |
| .keyvaluetext.pt-2.pb-5 |
| p It is applied to applications that require a consistent response time of a few <strong>microseconds.</strong> Ignite automatically invalidates and updates the near cache. |
| p Whenever the primary copy of a record gets updated on a server node, Ignite propagates the change to all the nodes that store the record’s backup copy, as well as to the applications that keep the record’s copy in their near caches. |
| .keyvalue3__left |
| .keyvalue3__picwrap.picwrap |
| img(src="/img/features/key-value/key-value-api-3.svg", alt="").keyvalue3__pic |
| .keyvalue3__picdescr |
| p 1. Call to the near cache |
| p 2. Call to the Ignite cluster |
| span (if a record is not found in the near cache) |
| p 3. Read-through from the external database |
| span (if the record is not in the Ignite cluster yet) |
| // /.keyvalue3 |
| |
| |
| |
| section.keyvalue4.container.flexi.pb-1 |
| .keyvalue4__left |
| h3.keyvalue__title ACID Transactions To Update Your Distributed Records Consistently |
| .keyvaluetext.pt-2.pb-5 |
| p Apache Ignite key-value APIs are fully transactional, which means that data can be updated consistently and reliably. |
| .keyvalue__title How it works |
| .keyvaluetext.pt-2.pb-5 |
| p An Ignite transaction can update multiple records from different tables stored on different cluster nodes. Ignite can even span a transaction to an underlying relational database. Ignite implements <a href="/features/acid-transactions.html">two-phase-commit protocol to ensure data consistency at scale.</a> |
| .keyvalue4__right |
| .keyvalue4__picwrap.picwrap |
| img(src="/img/features/key-value/key-value-api-4.svg", alt="").keyvalue4__pic |
| // /.keyvalue3 |
| |
| |
| |
| |
| 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 Create your first application using <br>Ignite key-value APIs |
| a.nativebotblock__link.arrowlink(href="https://ignite.apache.org/docs/latest/key-value-api/basic-cache-operations", target="_blank") Using Key-Value APIs |
| 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 how Apache Ignite can be configured <br>and used as a standard key-value store |
| a.nativebotblock__link.arrowlink(href="/use-cases/key-value-store.html") Key-Value Store |