diff --git a/mini-lsm-book/src/week1-01-memtable.md b/mini-lsm-book/src/week1-01-memtable.md index 0d7dc34..7948825 100644 --- a/mini-lsm-book/src/week1-01-memtable.md +++ b/mini-lsm-book/src/week1-01-memtable.md @@ -1,3 +1,15 @@ # Memtables ![Chapter Overview](./lsm-tutorial/week1-01-overview.svg) + +In this chapter, you will: + +* Implement memtables based on skiplists. +* Implement freezing memtable logic. +* Implement LSM read path `get` for memtables. + +## Task 1: SkipList Memtable + +## Task 2: Write Path - Freezing a Memtable + +## Task 3: Read Path - Get diff --git a/mini-lsm-book/src/week1-02-merge-iterator.md b/mini-lsm-book/src/week1-02-merge-iterator.md index aac9faa..4480616 100644 --- a/mini-lsm-book/src/week1-02-merge-iterator.md +++ b/mini-lsm-book/src/week1-02-merge-iterator.md @@ -1,3 +1,15 @@ # Merge Iterator ![Chapter Overview](./lsm-tutorial/week1-02-overview.svg) + +In this chapter, you will: + +* Implement memtable iterator. +* Implement merge iterator. +* Implement LSM read path `scan` for memtables. + +## Task 1: Memtable Iterator + +## Task 2: Merge Iterator + +## Task 3: Read Path - Scan diff --git a/mini-lsm-book/src/week1-03-block.md b/mini-lsm-book/src/week1-03-block.md index 01fbdac..14c67d4 100644 --- a/mini-lsm-book/src/week1-03-block.md +++ b/mini-lsm-book/src/week1-03-block.md @@ -1,3 +1,12 @@ # Block ![Chapter Overview](./lsm-tutorial/week1-03-overview.svg) + +In this chapter, you will: + +* Implement SST block encoding. +* Implement SST block decoding and block iterator. + +## Task 1: Block Builder + +## Task 2: Block Iterator diff --git a/mini-lsm-book/src/week1-04-sst.md b/mini-lsm-book/src/week1-04-sst.md index f6827ae..d2126e5 100644 --- a/mini-lsm-book/src/week1-04-sst.md +++ b/mini-lsm-book/src/week1-04-sst.md @@ -1,3 +1,12 @@ # Sorted String Table (SST) -![Chapter Overview](./lsm-tutorial/week1-04-overview.svg) \ No newline at end of file +![Chapter Overview](./lsm-tutorial/week1-04-overview.svg) + +In this chapter, you will: + +* Implement SST encoding and metadata encoding. +* Implement SST decoding and iterator. + +## Task 1: SST Builder + +## Task 2: SST Iterator diff --git a/mini-lsm-book/src/week1-05-read-path.md b/mini-lsm-book/src/week1-05-read-path.md index 9b13175..05e4751 100644 --- a/mini-lsm-book/src/week1-05-read-path.md +++ b/mini-lsm-book/src/week1-05-read-path.md @@ -1,3 +1,15 @@ # Read Path ![Chapter Overview](./lsm-tutorial/week1-05-overview.svg) + +In this chapter, you will: + +* Integrate SST into the LSM read path. +* Implement LSM read path `get` with SSTs. +* Implement LSM read path `scan` with SSTs. + +## Task 1: Two Merge Iterator + +## Task 2: Read Path - Get + +## Task 3: Read Path - Scan diff --git a/mini-lsm-book/src/week1-06-write-path.md b/mini-lsm-book/src/week1-06-write-path.md index 2bdbc16..579b22d 100644 --- a/mini-lsm-book/src/week1-06-write-path.md +++ b/mini-lsm-book/src/week1-06-write-path.md @@ -1,3 +1,12 @@ # Write Path -![Chapter Overview](./lsm-tutorial/week1-05-overview.svg) \ No newline at end of file +![Chapter Overview](./lsm-tutorial/week1-05-overview.svg) + +In this chapter, you will: + +* Implement the LSM write path with L0 flush. +* Implement the logic to correctly update the LSM state. + +## Task 1: Flush Memtable to SST + +## Task 2: Update the LSM State diff --git a/mini-lsm-book/src/week1-07-sst-optimizations.md b/mini-lsm-book/src/week1-07-sst-optimizations.md index 6d7cc62..30e5e64 100644 --- a/mini-lsm-book/src/week1-07-sst-optimizations.md +++ b/mini-lsm-book/src/week1-07-sst-optimizations.md @@ -3,3 +3,8 @@ ![Chapter Overview](./lsm-tutorial/week1-07-overview.svg) at the end of each week, we will have some easy, not important, while interesting things + +In this chapter, you will: + +* Implement bloom filter on SSTs and integrate into the LSM read path `get`. +* Implement key compression in SST block format. diff --git a/mini-lsm-book/src/week2-01-compaction.md b/mini-lsm-book/src/week2-01-compaction.md index 9800891..dffce33 100644 --- a/mini-lsm-book/src/week2-01-compaction.md +++ b/mini-lsm-book/src/week2-01-compaction.md @@ -1,3 +1,9 @@ # Compaction Implementation ![Chapter Overview](./lsm-tutorial/week2-01-overview.svg) + +In this chapter, you will: + +* Implement the compaction logic that combines some files and produces new files. +* Implement the logic to update the LSM states and manage SST files on the filesystem. +* Update LSM read path to incorporate the LSM levels. diff --git a/mini-lsm-book/src/week2-02-simple.md b/mini-lsm-book/src/week2-02-simple.md index 0ff7ff5..4ec43b4 100644 --- a/mini-lsm-book/src/week2-02-simple.md +++ b/mini-lsm-book/src/week2-02-simple.md @@ -1,3 +1,8 @@ # Simple Compaction Strategy ![Chapter Overview](./lsm-tutorial/week2-01-overview.svg) + +In this chapter, you will: + +* Implement a simple leveled compaction strategy and simulate it on the compaction simulator. +* Start compaction as a background task and implement a compaction trigger in the system. diff --git a/mini-lsm-book/src/week2-03-tiered.md b/mini-lsm-book/src/week2-03-tiered.md index 3ad6d14..c9c7fdc 100644 --- a/mini-lsm-book/src/week2-03-tiered.md +++ b/mini-lsm-book/src/week2-03-tiered.md @@ -1,3 +1,8 @@ # Tiered Compaction Strategy ![Chapter Overview](./lsm-tutorial/week2-01-overview.svg) + +In this chapter, you will: + +* Implement a tiered compaction strategy and simulate it on the compaction simulator. +* Incorporate tiered compaction strategy into the system. diff --git a/mini-lsm-book/src/week2-04-leveled.md b/mini-lsm-book/src/week2-04-leveled.md index b1df435..9e03292 100644 --- a/mini-lsm-book/src/week2-04-leveled.md +++ b/mini-lsm-book/src/week2-04-leveled.md @@ -1,3 +1,8 @@ # Leveled Compaction Strategy ![Chapter Overview](./lsm-tutorial/week2-01-overview.svg) + +In this chapter, you will: + +* Implement a leveled compaction strategy and simulate it on the compaction simulator. +* Incorporate leveled compaction strategy into the system. diff --git a/mini-lsm-book/src/week2-05-manifest.md b/mini-lsm-book/src/week2-05-manifest.md index 40d42b4..821b86a 100644 --- a/mini-lsm-book/src/week2-05-manifest.md +++ b/mini-lsm-book/src/week2-05-manifest.md @@ -1,3 +1,8 @@ # Manifest ![Chapter Overview](./lsm-tutorial/week2-05-overview.svg) + +In this chapter, you will: + +* Implement encoding and decoding of the manifest file. +* Recover from the manifest when the system restarts. diff --git a/mini-lsm-book/src/week2-06-wal.md b/mini-lsm-book/src/week2-06-wal.md index e3247cd..05306b9 100644 --- a/mini-lsm-book/src/week2-06-wal.md +++ b/mini-lsm-book/src/week2-06-wal.md @@ -1,3 +1,8 @@ # Write-Ahead Log (WAL) ![Chapter Overview](./lsm-tutorial/week2-06-overview.svg) + +In this chapter, you will: + +* Implement encoding and decoding of the write-ahead log file. +* Recover memtables from the WALs when the system restarts.