Top

There is the top of RocksDB.

         > log files
         |
         |  sequential write
         |
API ------> MemTable(current in list) ... ImmutableMemTable
    GET/PUT                                      |
                    async-flush (worker threads)  |
                                                 V
                                        0-level SSTable files (unsorted)
                                                 |
                 async-compact (worker threads)  |
                                                 V
                                            SSTable files (sorted)

0. MemTable

The class architecture as below:

                       MemTableList
                            |
                            | combine
                            V
                      MemTableVersion (MemTable List)
                            |
                            | combine
                            V
                         MemTable
                            |
                            | combine
                            V
                        MemTableRep
                            |
                            | inherit
      ----------------------------------------------------
      |               |                 |                | factory classes
      V               V                 V                V
HashLinkListRep  HashSkipListRep   SkipListRep       VectorRep

Warning

There is MockMemTableRep (with also factory) for testing.

1. SSTable files

L0 files  (flush and unsorted, duplicate keys maybe
    |      sequence-based linear search,
    |      compact to L1 when count of files reached)
    V
L* files  (compact and sorted, unique key in one level
           key-based binary search,
           compact to lower level when size reached)

The class architecture as below:

                                  TableBuilder/Reader
                                         |
                                         | inherit
                                         V
        --------------------------------------------------------------
        |                                |                           | factory classes
        V                                V                           V
BlockBasedTableBuilder/Reader  CuckooTableBuilder/Reader  PlainTableBuilder/Reader

Warning

There are MockTableBuiler/Reader (with also factory) for testing.