简易版NewSql数据库--单机版kv存储

  • 数据结构:哈希桶,每个桶内可以装8个数据,然后每一个桶20个相同的桶,在写入的时候,首先通过哈希找到对应的桶,然后在根据当前该哈希值已经有的数量,判断要找存到20个中的哪一个;读的时候,通过哈希算法可以找到对应的桶,但是需要逐个遍历桶中的值找到对应的数据
  • 读逻辑:根据主键id可以直接读取,根据唯一索引和普通索引需要先获得主键,然后在通过主键id获得数据
  • 一致性验证逻辑:
    • 产生原因:在写一条数据的时候,索引写入,但是数据未写入,这时进程被kill,读取时会出现数据不一致情况。
    • 方法:在每次写入的时候,会有一个lastetstore的值记录当前写入的标记,进行一致性验证时,会遍历所有索引桶的最后一个索引值,找到其对应的id,然后去源文件中找是否该条数据已经写入,若无则删除。
  • 写逻辑:
    • 整条数据、唯一索引、普通索引
    • 先写入唯一索引和普通索引,最后在根据主键写入整条数据
    • 每次写数据的过程中应加锁 
posted @ 2023-01-10 22:13  lyjps  阅读(130)  评论(0)    收藏  举报