TieredMemDB - Redis with Persistent Memory

TieredMemDB - Redis with Persistent Memory

[14-Jan-2022 Note: this blog post has been updated due to the renaming of our database from MemKeyDB to TieredMemDB] Context Redis is an in-memory database that supports various data-structures and stores them in main memory. To support data durability, Redis relies on creating periodical snapshots …

Read More
Static code analysis of the PMDK

Static code analysis of the PMDK

Introduction In the PMDK team, we focus on the quality of our codebase. One of the standard practices in the software development is a static code analysis, which improves the overall project quality and fixes bugs in the early stage of development. Since there is no silver bullet for avoiding bugs, …

Read More
Introduction to LLPL

Introduction to LLPL

There are several ways to program with persistent memory from Java. A recent pmem.io blog article described the pmemkv library, a persistent key-value store, which can be used from multiple languages. For Java, pmemkv supports three ubiquitous Java types: String, byte[], and ByteBuffer. Another PMDK …

Read More
300 nanoseconds (2 of 2)

300 nanoseconds (2 of 2)

At the end of the first part of this blog series, I posed three fundamental questions regarding the design of failure atomic data structures for persistent memory. What does it mean to allocate persistent memory? How to do fail-safe atomic updates? Are all data structures suitable for persistent …

Read More
Language bindings for pmemkv

Language bindings for pmemkv

pmemkv is a local/embedded key-value datastore optimized for persistent memory. It is written in C and C++, but to satisfy a wider audience it comes with several bindings for high-level languages. Currently: Java (with JNI), Node.js, Python and Ruby. The picture below illustrates architecture and …

Read More