Showing posts from July, 2020

Samsung's KV-SSD: An NVMe SSD with In-storage Key-value Store

In the  previous post , we talked about NVMe and we saw how it allows us to utilize the true capabilities of the SSDs. As said before, although NVMe derives have significantly better performance, our storage systems designed with much slower drives in mind can not fully utilize them. That's why we need to revise our assumptions about the storage and adjust our systems accordingly. Samsung's new prototype named KV-SSD is an effort in that direction. KV-SSD is an NVMe SSD with key-value API that allows us to store and retrieve variables size key-value pairs directly to/from the device. This can remarkably simplify the typical software stacks that we have in existing key-value stores and let us fully utilize NVMe drives and scale linearly by adding more NVMe devices. 

What is NVMe?

NVMe stands for Non-Volatile Memory Express. Before we talk about NVMe, we have to start with Solid State Drives (SSDs). SSD is the name for any type of persistent storage that is completely electronic and does not have any moving part, hence the name "solid-state", unlike for example electromagnetic spinning disks which we know as Hard Disk Drives (HDDs). 

Docker Basics

Docker is a very popular technology that significantly streamlines software deployment which makes it an excellent choice for cloud orchestration platforms such as Kubernetes. 

In-memory vs. On-disk Databases

Figure 1 shows the main difference between in-memory and on-disk databases: An in-memory database stores the data in memory and uses disk for backup, while an on-disk database stores the data on disk and uses memory for caching.  Figure 1. In-memory vs On-disk storage engines