From 728170683cfda12958f6e8b4659e5e208f2c191d Mon Sep 17 00:00:00 2001 From: ZhuangYumin Date: Tue, 28 Nov 2023 14:55:54 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=AE=8C=E6=88=90=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E5=92=8C=E7=BC=93=E5=AD=98=E9=83=A8=E5=88=86=E5=88=9D?= =?UTF-8?q?=E6=AD=A5=E8=AE=BE=E6=83=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/develop/总体设计文档.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/develop/总体设计文档.md b/docs/develop/总体设计文档.md index 0c1c5d7..9aec09e 100644 --- a/docs/develop/总体设计文档.md +++ b/docs/develop/总体设计文档.md @@ -29,8 +29,13 @@ ##### 需求 ##### 数据结构 +###### 底层实现 +通过B+树或一个有序的块状链表实现一个键值数据库,相当于`std::multimap`,一个键值数据库实例拥有恰好一个文件 +###### 逻辑实现 +数据库的一条记录有主键(应当是唯一的)、副键和数据构成,从主键到数据建立multimap,从副键到主键建立multimap,一个数据库实例拥有恰好两个文件。 ##### 文件访问与缓存 +memoryriver类维护一个缓存,简单地缓存高频访问和连续访问;键值数据库根据逻辑缓存最近访问和高频访问;数据库层不设缓存。 ##### 并发安全