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

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

时间:2023-01-10 22:23:50浏览次数:39  
标签:单机版 -- 写入 id 索引 简易版 哈希 数据 主键

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

标签:单机版,--,写入,id,索引,简易版,哈希,数据,主键
From: https://www.cnblogs.com/lyjps/p/17041529.html

相关文章

  • Go语言核心知识回顾(反射)
    有时要求写一个函数有能力统一处理各种值类型的函数,而这些类型可能无法共享同一个接口,也可能布局未知,也有可能这个类型在设计函数时并不存在,当我们无法透视一个未知类型的......
  • hbase2.4.4重新搭建
    之前的版本有点老,代码已经不适合了。这里使用比较新的环境进行搭建。一:版本1.版本 hadoop使用版本:Hadoop采用3.2.3zookeeper使用版本:载zookeeper3.......
  • R语言使用ARIMAX预测失业率经济时间序列数据|附代码数据
    全文链接:http://tecdat.cn/?p=22521最近我们被客户要求撰写关于ARIMAX的研究报告,包括一些图形和统计输出。在大数据的趋势下,我们经常需要做预测性分析来帮助我们做决定。......
  • R语言用Copulas模型的尾部相依性分析损失赔偿费用|附代码数据
    原文链接:http://tecdat.cn/?p=22226最近我们被客户要求撰写关于Copulas的研究报告,包括一些图形和统计输出。两个随机变量之间的相依性问题备受关注,相依性(dependence)是......
  • 文档字符串
    5.5文档字符串开发者在编写函数或模块时不光要自己能看懂,在和他人合作共同开发或者被他人调用时也需要他人也能看懂。这个时候就可以为自己编写的函数、模块或者类添加相......
  • 闲话 23.1.10
    闲话新年了……新年的军队打算学习小孩召开法(为未来的模拟赛的不可做题准备着(今日是啥都没干日!ETT怎么学?\((\max,+)\)卷积(?)虽然但是,现在我们不考虑一般......
  • 42、mybatisplus配置分页插件
    1、旧版分页插件配置方法(MybatisPlus3.4.0版本之前)@EnableTransactionManagement//开启事务@Configuration@MapperScan(basePackages={"com.zimug.**.mapper"})p......
  • API基础
    与1000个读者有1000个哈姆雷特类似,即使你让一个经验非常丰富的程序员给API一个定义,大概率他也会用一个例子来说明,比如说:哦API呀,你去看下微博的API文档就知道API是什么了。......
  • 记录使用adb连接rn项目进行开发
    先在本地安装adbADB全称AndroidDebugBridge,译作Android调试桥。ADB是一种功能多样的命令行工具,可让您与设备进行通信。ADB命令可用于执行各种设备操作(例如安装和调......
  • Day11:数组基础知识
    packagecom.dfyfhqsgclxry.array;publicclassArrayDemo08{publicstaticvoidmain(String[]args){//1.创建一个二维数组11*11,0:没有棋子1:黑棋2:白棋int[......