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

使用 Go 语言写一个数据库—3 数据库操作

作者头像
roseduan
发布2021-07-28 17:55:05
4350
发布2021-07-28 17:55:05
举报

在前面的两篇文章当中,我给大家介绍了 rosedb 的基础结构,以及基本的数据操作流程。

使用 Go 语言写一个数据库—1 基本结构

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

希望你已经对这两节的内容有了一个基本的了解。

本期的视频参考在文章的最后,简单浏览了文字之后,你可以再结合视频看看,加深一下理解。


今天再来讲一下 rosedb 数据库的基本操作,内容主要有:启动数据库、重新打开数据库、关闭数据库、reclaim 操作。

启动数据库

启动数据库的流程:

1、加载数据文件;我们知道其实 rosedb 最基础的组成部分就是数据文件,因此在启动的时候都要先去加载所有的数据文件。

2、新建活跃文件;活跃文件也是一个数据文件,只不过它可以用来写。

3、加载过期字典;过期字典的信息单独存储在一个文件当中,需要去加载一下。

4、加载数据索引信息;其实就是把数据文件中的每一个 Entry 重新执行一遍,还原最新的索引状态。

重新打开数据库

这个操作比较简单,传入数据库配置的目录,然后根据目录中的数据文件打开数据库即可。

关闭数据库

针对每一个打开的数据库示例,在使用完毕之后,都需要关闭数据库。关闭数据库的操作主要有:

1、数据文件持久化到磁盘;是为了将内存缓冲区中的数据持久化到磁盘数据文件当中,避免数据丢失。

2、保存相关配置;将配置写入到相应的文件当中,待重新打开的时候进行选择。

reclaim 操作

这是很重要的一个操作,我们知道数据的增删改操作都会被封装一个 Entry,然后写到数据文件当中。

这样一来,数据文件当中,可能存在大量的冗余数据,例如下面的这个例子:

a 的值被设置成了 100、200、300,a 最新的值便是 300,其余的两个操作便是冗余数据了。

所以我们需要新建一个临时文件,将全部的 Entry 数据取出,判断为有效的 Entry 并写入到临时文件当中,无效的 Entry 则直接舍弃,如下图:

操作完成之后,临时文件就是新的数据文件了。

参考视频


题图:from wallheaven.cc

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档