diff --git a/README.md b/README.md index c436a2e..7225915 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +![banner](./mini-lsm-book/src/mini-lsm-logo.png) + # LSM in a Week [![CI (main)](https://github.com/skyzh/mini-lsm/actions/workflows/main.yml/badge.svg)](https://github.com/skyzh/mini-lsm/actions/workflows/main.yml) diff --git a/mini-lsm-book/src/00-overview.md b/mini-lsm-book/src/00-overview.md index d80ed7a..8c0800f 100644 --- a/mini-lsm-book/src/00-overview.md +++ b/mini-lsm-book/src/00-overview.md @@ -1,5 +1,17 @@ # Mini-LSM Course Overview +## Tutorial Structure + +![Tutorial Overview](lsm-tutorial/00-full-overview.svg) + +We have 3 parts (weeks) for this tutorial. In the first week, we will focus on the storage structure and the storage format of an LSM storage engine. In the second week, we will dive into compactions in depth and implement persistence support for the storage engine. In the third week, we will implement multi-version concurrency control. + +* [The First Week: Mini-LSM](./week1-overview.md) +* [The Second Week: Compaction and Persistence](./week2-overview.md) +* [The Third Week: Multi-Version Concurrency Control](./week3-overview.md) + +To set up the environment, please take a look at [Environment Setup](./00-get-started.md). + ## Overview of LSM An LSM storage engine generally contains 3 parts: @@ -49,16 +61,4 @@ When we want to read a key, There are two types of read: lookup and scan. Lookup finds one key in the LSM tree, while scan iterates all keys within a range in the storage engine. We will cover both of them throughout the tutorial. -## Tutorial Structure - -![Tutorial Overview](lsm-tutorial/00-full-overview.svg) - -We have 3 parts (weeks) for this tutorial. In the first week, we will focus on the storage structure and the storage format of an LSM storage engine. In the second week, we will dive into compactions in depth and implement persistence support for the storage engine. In the third week, we will implement multi-version concurrency control. - -* [The First Week: Mini-LSM](./week1-overview.md) -* [The Second Week: Compaction and Persistence](./week2-overview.md) -* [The Third Week: Multi-Version Concurrency Control](./week3-overview.md) - -To set up the environment, please take a look at [Environment Setup](./00-get-started.md). - {{#include copyright.md}} diff --git a/mini-lsm-book/src/00-preface.md b/mini-lsm-book/src/00-preface.md index 041caee..9b3f122 100644 --- a/mini-lsm-book/src/00-preface.md +++ b/mini-lsm-book/src/00-preface.md @@ -1,6 +1,6 @@ # Preface -![Tutorial Overview](lsm-tutorial/00-full-overview.svg) +![Banner](./mini-lsm-logo.png) In this tutorial, you will learn how to build a simple LSM-Tree storage engine in the Rust programming language. diff --git a/mini-lsm-book/src/mini-lsm-logo.png b/mini-lsm-book/src/mini-lsm-logo.png new file mode 100644 index 0000000..ab64598 Binary files /dev/null and b/mini-lsm-book/src/mini-lsm-logo.png differ diff --git a/mini-lsm-book/src/sitemap.txt b/mini-lsm-book/src/sitemap.txt index 815caec..a3ef27d 100644 --- a/mini-lsm-book/src/sitemap.txt +++ b/mini-lsm-book/src/sitemap.txt @@ -28,5 +28,12 @@ https://skyzh.github.io/mini-lsm/week2-05-manifest https://skyzh.github.io/mini-lsm/week2-06-wal https://skyzh.github.io/mini-lsm/week2-07-snacks https://skyzh.github.io/mini-lsm/week2-overview +https://skyzh.github.io/mini-lsm/week3-01-ts-key-refactor +https://skyzh.github.io/mini-lsm/week3-02-snapshot-read-part-1 +https://skyzh.github.io/mini-lsm/week3-03-snapshot-read-part-2 +https://skyzh.github.io/mini-lsm/week3-04-watermark +https://skyzh.github.io/mini-lsm/week3-05-txn-occ +https://skyzh.github.io/mini-lsm/week3-06-serializable +https://skyzh.github.io/mini-lsm/week3-07-compaction-filter https://skyzh.github.io/mini-lsm/week3-overview https://skyzh.github.io/mini-lsm/week4-overview diff --git a/mini-lsm-book/src/sitemap.xml b/mini-lsm-book/src/sitemap.xml index 3200ba1..7d84a32 100644 --- a/mini-lsm-book/src/sitemap.xml +++ b/mini-lsm-book/src/sitemap.xml @@ -2,130 +2,158 @@ https://skyzh.github.io/mini-lsm - 2024-01-25T02:56:28.231Z + 2024-01-30T08:17:56.731Z https://skyzh.github.io/mini-lsm/00-get-started - 2024-01-25T02:56:28.234Z + 2024-01-30T08:17:56.734Z https://skyzh.github.io/mini-lsm/00-overview - 2024-01-25T02:56:28.232Z + 2024-01-30T08:17:56.732Z https://skyzh.github.io/mini-lsm/00-preface - 2024-01-25T02:56:28.230Z + 2024-01-30T08:17:56.730Z https://skyzh.github.io/mini-lsm/00-v1 - 2024-01-25T02:56:28.256Z + 2024-01-30T08:17:56.762Z https://skyzh.github.io/mini-lsm/01-block - 2024-01-25T02:56:28.257Z + 2024-01-30T08:17:56.763Z https://skyzh.github.io/mini-lsm/02-sst - 2024-01-25T02:56:28.258Z + 2024-01-30T08:17:56.764Z https://skyzh.github.io/mini-lsm/03-memtable - 2024-01-25T02:56:28.259Z + 2024-01-30T08:17:56.765Z https://skyzh.github.io/mini-lsm/04-engine - 2024-01-25T02:56:28.260Z + 2024-01-30T08:17:56.766Z https://skyzh.github.io/mini-lsm/05-compaction - 2024-01-25T02:56:28.261Z + 2024-01-30T08:17:56.767Z https://skyzh.github.io/mini-lsm/06-recovery - 2024-01-25T02:56:28.262Z + 2024-01-30T08:17:56.768Z https://skyzh.github.io/mini-lsm/07-bloom-filter - 2024-01-25T02:56:28.263Z + 2024-01-30T08:17:56.768Z https://skyzh.github.io/mini-lsm/08-key-compression - 2024-01-25T02:56:28.264Z + 2024-01-30T08:17:56.769Z https://skyzh.github.io/mini-lsm/09-whats-next - 2024-01-25T02:56:28.265Z + 2024-01-30T08:17:56.770Z https://skyzh.github.io/mini-lsm/week1-01-memtable - 2024-01-25T02:56:28.237Z + 2024-01-30T08:17:56.736Z https://skyzh.github.io/mini-lsm/week1-02-merge-iterator - 2024-01-25T02:56:28.238Z + 2024-01-30T08:17:56.738Z https://skyzh.github.io/mini-lsm/week1-03-block - 2024-01-25T02:56:28.239Z + 2024-01-30T08:17:56.739Z https://skyzh.github.io/mini-lsm/week1-04-sst - 2024-01-25T02:56:28.240Z + 2024-01-30T08:17:56.740Z https://skyzh.github.io/mini-lsm/week1-05-read-path - 2024-01-25T02:56:28.242Z + 2024-01-30T08:17:56.741Z https://skyzh.github.io/mini-lsm/week1-06-write-path - 2024-01-25T02:56:28.243Z + 2024-01-30T08:17:56.743Z https://skyzh.github.io/mini-lsm/week1-07-sst-optimizations - 2024-01-25T02:56:28.244Z + 2024-01-30T08:17:56.744Z https://skyzh.github.io/mini-lsm/week1-overview - 2024-01-25T02:56:28.235Z + 2024-01-30T08:17:56.735Z https://skyzh.github.io/mini-lsm/week2-01-compaction - 2024-01-25T02:56:28.246Z + 2024-01-30T08:17:56.746Z https://skyzh.github.io/mini-lsm/week2-02-simple - 2024-01-25T02:56:28.248Z + 2024-01-30T08:17:56.747Z https://skyzh.github.io/mini-lsm/week2-03-tiered - 2024-01-25T02:56:28.249Z + 2024-01-30T08:17:56.748Z https://skyzh.github.io/mini-lsm/week2-04-leveled - 2024-01-25T02:56:28.250Z + 2024-01-30T08:17:56.749Z https://skyzh.github.io/mini-lsm/week2-05-manifest - 2024-01-25T02:56:28.251Z + 2024-01-30T08:17:56.750Z https://skyzh.github.io/mini-lsm/week2-06-wal - 2024-01-25T02:56:28.252Z + 2024-01-30T08:17:56.751Z https://skyzh.github.io/mini-lsm/week2-07-snacks - 2024-01-25T02:56:28.253Z + 2024-01-30T08:17:56.752Z https://skyzh.github.io/mini-lsm/week2-overview - 2024-01-25T02:56:28.245Z + 2024-01-30T08:17:56.745Z + + + https://skyzh.github.io/mini-lsm/week3-01-ts-key-refactor + 2024-01-30T08:17:56.754Z + + + https://skyzh.github.io/mini-lsm/week3-02-snapshot-read-part-1 + 2024-01-30T08:17:56.755Z + + + https://skyzh.github.io/mini-lsm/week3-03-snapshot-read-part-2 + 2024-01-30T08:17:56.756Z + + + https://skyzh.github.io/mini-lsm/week3-04-watermark + 2024-01-30T08:17:56.757Z + + + https://skyzh.github.io/mini-lsm/week3-05-txn-occ + 2024-01-30T08:17:56.758Z + + + https://skyzh.github.io/mini-lsm/week3-06-serializable + 2024-01-30T08:17:56.759Z + + + https://skyzh.github.io/mini-lsm/week3-07-compaction-filter + 2024-01-30T08:17:56.760Z https://skyzh.github.io/mini-lsm/week3-overview - 2024-01-25T02:56:28.254Z + 2024-01-30T08:17:56.753Z https://skyzh.github.io/mini-lsm/week4-overview - 2024-01-25T02:56:28.255Z + 2024-01-30T08:17:56.761Z