diff --git a/docs/develop/总体设计文档.md b/docs/develop/总体设计文档.md index 804f40c..9d15d34 100644 --- a/docs/develop/总体设计文档.md +++ b/docs/develop/总体设计文档.md @@ -11,7 +11,7 @@ - 快照 - 文件系统修复 -系统结构图:![系统结构图加载中……](https://cloud.zymsite.ink/f/O8IQ/%E7%B3%BB%E7%BB%9F%E7%BB%93%E6%9E%84%E5%9B%BE.png) +系统结构图:![系统结构图加载中……](https://cloud.zymsite.ink/f/4esz/%E7%B3%BB%E7%BB%9F%E7%BB%93%E6%9E%84%E5%9B%BE.png) # 功能设计(模块划分)、数据库设计 @@ -27,7 +27,7 @@ - 当使用不同的文件描述符时,并发调用读取函数时不会自动相互阻塞,如果并发读取的区域重叠,会有安全性问题 ![pic](https://cloud.zymsite.ink/f/8vCd/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202023-11-29%20102719.png) -一次IO的固定开销差不多相当于1e5条CPU指令或1e4次基本操作,以及相当于读入一块100KB~1MB的连续空间,可以考虑把分块链表的块级索引集中到开头的一个大块里。 +如果是图中的数据,一次IO的固定开销差不多相当于1e5条CPU指令或1e4次基本操作。但是在OJ上的实测结果为 IOPS 约等于 4e5,写入速率 1GB/s, 读取速率 5GB/s ~~因此我不太打算碰文件系统~~ @@ -41,7 +41,7 @@ 数据库的一条记录有主键(应当是唯一的)、副键和数据构成,从主键到数据建立multimap,从副键到主键建立multimap,一个数据库实例拥有恰好两个文件,一个数据库可以有多个Sheet,用于逻辑上存储不同的表。 ##### 文件访问与缓存 -memoryriver类维护一个缓存,简单地缓存高频访问和连续访问;键值数据库根据逻辑缓存最近访问和高频访问;数据库层不设缓存。 +memoryriver类维护一个缓存,简单地缓存高频访问和连续访问;键值数据库缓存散列表。 ##### 并发安全 实际的文件操作只由一个线程负责,万级的IOPS足够应付需求;内存中的资源, diff --git a/docs/develop/需求分析文档.md b/docs/develop/需求分析文档.md index 8b01c42..e24250e 100644 --- a/docs/develop/需求分析文档.md +++ b/docs/develop/需求分析文档.md @@ -1,8 +1,8 @@ # 大致预设场景 一个中小规模的书店,后台运行一个服务端,使得用户、店员、店主可以方便地在电脑端或移动端上完成相关业务操作 -业务流程图:![业务流程图加载中……](https://cloud.zymsite.ink/f/bqU8/%E4%B8%9A%E5%8A%A1%E6%B5%81%E7%A8%8B%E5%9B%BE.png) -数据流图:![数据流图加载中……](https://cloud.zymsite.ink/f/Q2cE/%E6%95%B0%E6%8D%AE%E6%B5%81%E5%9B%BE.png) +业务流程图:![业务流程图加载中……](https://cloud.zymsite.ink/f/XauW/%E4%B8%9A%E5%8A%A1%E6%B5%81%E7%A8%8B%E5%9B%BE.png) +数据流图:![数据流图加载中……](https://cloud.zymsite.ink/f/DEi7/%E6%95%B0%E6%8D%AE%E6%B5%81%E5%9B%BE.png) ## 功能需求 ### 游客