上一次给大家介绍了 rosedb 的基本结构:使用 Go 语言写一个数据库—1 基本结构
由于只发送了视频,但是我感觉在微信上面,看视频的体验不是很好。
因此后续的几篇文章当中,我不仅会发送视频,还会加上简明的文字描述,尽量让大家看懂。
同时,如果要观看完整视频的话,可以到我的 B 站频道中观看,在 B 站搜索roseduanV 就能够找到我了!
这一次给大家介绍几个简单的数据基本操作,借此来理解 rosedb 的整体的数据存取的流程,其实在 rosedb 当中,五种数据结构的数据存取的流程都是类似的,因此我只需要举一个简单的例子就可以了,希望你举一反三。
数据存储
首先来看一下数据存储的例子。
对于一个 key value 键值对,首先会到内存当中对应的数据结构,针对不同的配置选项,决定是否将 value 存放到内存当中,然后再将操作封装为一个 Entry,写入到磁盘数据文件当中。
流程图如下:
数据获取
再来看一下获取数据,在内存对应的数据结构当中找到对应的 key 信息,然后根据配置,看从是从内存当中获取 value ,还是从数据文件当中获取 value。
数据删除
对于数据删除,其实和数据存储的流程是类似的。
首先,需要在数据文件当中将 key 删除,然后将被删除的 key 信息封装成一个 Entry,然后写入到数据文件当中。
需要注意的是,写 Entry 到数据文件的操作,一直都是追加到文件的末尾的。
所以,数据文件当中,其实存放的就是操作日志,当数据库启动的时候,会去全部加载这些数据文件,然后取出里面的 Entry,再全部重新执行一遍。
当然,如果文件当中存在大量无用的数据,那么数据库启动就会越来越慢,解决的办法,我会在下一篇文章当中说明。
视频参考
题图:from wallheaven.cc
本文分享自 roseduan写字的地方 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!