前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 Go 语言写一个数据库—2 基本数据操作

使用 Go 语言写一个数据库—2 基本数据操作

作者头像
roseduan
发布2021-07-28 17:54:46
2810
发布2021-07-28 17:54:46
举报

上一次给大家介绍了 rosedb 的基本结构:使用 Go 语言写一个数据库—1 基本结构

由于只发送了视频,但是我感觉在微信上面,看视频的体验不是很好。

因此后续的几篇文章当中,我不仅会发送视频,还会加上简明的文字描述,尽量让大家看懂。

同时,如果要观看完整视频的话,可以到我的 B 站频道中观看,在 B 站搜索roseduanV 就能够找到我了!


这一次给大家介绍几个简单的数据基本操作,借此来理解 rosedb 的整体的数据存取的流程,其实在 rosedb 当中,五种数据结构的数据存取的流程都是类似的,因此我只需要举一个简单的例子就可以了,希望你举一反三。

数据存储

首先来看一下数据存储的例子。

对于一个 key value 键值对,首先会到内存当中对应的数据结构,针对不同的配置选项,决定是否将 value 存放到内存当中,然后再将操作封装为一个 Entry,写入到磁盘数据文件当中。

流程图如下:

数据获取

再来看一下获取数据,在内存对应的数据结构当中找到对应的 key 信息,然后根据配置,看从是从内存当中获取 value ,还是从数据文件当中获取 value。

数据删除

对于数据删除,其实和数据存储的流程是类似的。

首先,需要在数据文件当中将 key 删除,然后将被删除的 key 信息封装成一个 Entry,然后写入到数据文件当中。

需要注意的是,写 Entry 到数据文件的操作,一直都是追加到文件的末尾的。

所以,数据文件当中,其实存放的就是操作日志,当数据库启动的时候,会去全部加载这些数据文件,然后取出里面的 Entry,再全部重新执行一遍。

当然,如果文件当中存在大量无用的数据,那么数据库启动就会越来越慢,解决的办法,我会在下一篇文章当中说明。

视频参考


题图:from wallheaven.cc

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 roseduan写字的地方 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档