From 548d7f065a467ed262b2eeb04ef2a981b9d2bab1 Mon Sep 17 00:00:00 2001 From: qian yangyang Date: Sun, 5 Feb 2023 00:33:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 21 ++++++++++++++------- img/rw_op.png | Bin 0 -> 50974 bytes 2 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 img/rw_op.png diff --git a/README.md b/README.md index c108caf..c4f182b 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ smallkv 是一个列存的、基于LSM架构的存储引擎。 --- ## 客户端演示 + 基本操作类似Redis,如下图所示: ![cli](./img/client_demo.png) @@ -115,7 +116,15 @@ IndexBlock存储对应的DataBlock中的最大key信息(注意:实际存储 ![footer_schema](./img/footer_schema.png) MetaBlock_OffsetInfo记录了MetaBlock的size和offset,IndexBlock_OffsetInfo记录了IndexBlock的offset(第一个IndexBlock的offset)和size(所有IndexBlock的总大小)。 - + +### 4. **Read/Write Op** +![rw_op](img/rw_op.png) +- #### 4.1 Read +先读缓存, 有则立即返回; 否则读memtable, 有则立即返回; 否则使用SST Parser解析磁盘的SST文件,找到对应的key. + +- #### 4.2 Write +先写wal, 保证数据安全; 在写memtable和cache. + --- ## 第三方依赖: @@ -132,11 +141,9 @@ MetaBlock_OffsetInfo记录了MetaBlock的size和offset,IndexBlock_OffsetInfo 1. [阿里云NewSQL数据库大赛](https://tianchi.aliyun.com/competition/entrance/531980/introduction) 2. [corekv](https://github.com/hardcore-os/coreKV-CPP) 3. [leveldb](https://github.com/google/leveldb) -4. [LSM树原理](https://zhuanlan.zhihu.com/p/181498475) -5. [LSM Tree是什么?](https://www.zhihu.com/question/446544471/answer/2348883977) -6. [WAL](https://zhuanlan.zhihu.com/p/258091002) -7. [Linux I/O: fsync, fflush, fwrite, mmap](https://juejin.cn/post/7001665675907301412) +4. [Linux I/O: fsync, fflush, fwrite, mmap](https://juejin.cn/post/7001665675907301412) --- - -Thanks to [JetBrains](https://jb.gg/OpenSourceSupport) for donating product licenses to help develop **smallkv** + +Thanks to [JetBrains](https://jb.gg/OpenSourceSupport) for donating product licenses to help develop **smallkv +** diff --git a/img/rw_op.png b/img/rw_op.png new file mode 100644 index 0000000000000000000000000000000000000000..8d58587c0d0e531dc44bb19efde00ff783c7e9b4 GIT binary patch literal 50974 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