Sat, Feb 29, 2020
Memtable & SSTable (Sorted String Table)
The pattern of batching data in memory, tracking it in a write-ahead log, and periodically flushing it to disk is ubiquitous today. Open-source examples include LevelDB, Cassandra, InfluxDB, and HBase. In this article, I implement a tiny memtable for a time-series database in Go and briefly talk about how it can be compressed into a sorted string table.
Fri, Feb 28, 2020
Cassandra
Cassandra is a highly scalable, distributed NoSQL (non-relational) database management system designed for handling large amounts of data across multiple commodity servers. This article covers key design features of Cassandra, such as the usage of consistent hashing, the write pattern to a write-ahead log and a memtable, the read pattern from the memtable and from SSTables, and, most importantly, some examples of data modeling for different types of queries.