KV-store improved & measured

KV-store improved & measured

As promised in the previous post about the kv-store implementation I’m back with new results after implementing the optimizations I devised a month ago. As a bonus I implemented a red-black tree to have a fair comparison between two data structures that allocate similar number of nodes. tl;dr: …

Read More
Transactional key-value store using libpmemobj - DIY

Transactional key-value store using libpmemobj - DIY

Our library often gets compared to NoSQL databases because it stores things on storage in unstructured manner. Which is true, but, when you think about it, the pmemobj library is not technically a database, but can be used to implement one - like the MySQL storage engine example. In this post …

Read More
An introduction to pmemcheck (part 2) - transactions

An introduction to pmemcheck (part 2) - transactions

In my previous blog post I described the key features of the new persistent memory analysis tool we created - pmemcheck. You should now be aware of the main pitfalls of persistent memory programming and of ways pmemcheck informs you about possible misuses of PMEM. We should now dive into a more …

Read More
An introduction to pmemcheck (part 1) - basics

An introduction to pmemcheck (part 1) - basics

As you probably noticed from the previous posts, persistent memory programming isn’t really that easy. There are a couple of things you have to consider - data consistency being the most important one. The contemporary x86_64 architecture supports at most 8-byte atomic stores. You probably …

Read More
An introduction to pmemobj (part 7) - persistent lists

An introduction to pmemobj (part 7) - persistent lists

The pmemobj library provides non-transactional persistent atomic circular doubly-linked lists (or NTPACDLL for short) API with an interface familiar to anyone who have ever included sys/queue.h header file - it’s in fact so similar that I considered not writing this post at all, you can just …

Read More