专栏首页roseduan写字的地方使用 Go 语言写一个数据库—2 基本数据操作

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

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

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

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

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


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

数据存储

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

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

流程图如下:

数据获取

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

数据删除

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

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

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

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

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

视频参考


题图:from wallheaven.cc

本文分享自微信公众号 - roseduan写字的地方(rose_duan),作者:roseduan

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-05-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

    roseduan
  • 使用 Go 语言写一个数据库—4 数据结构

    前面几篇文章,我已经对 rosedb 有了一定的讲解了,如果还没有看前面的内容,请先看一下之前的内容,这样你才能更好的理解本篇文章的内容。

    roseduan
  • 使用 Go 语言写一个数据库—5 命令行

    Hello 大家好,我是 roseduan,上一次给大家分享了 rosedb 项目当中所涉及到的一些数据结构,有链表、哈希表、跳表、有序集合,内容比较的硬核,你...

    roseduan
  • 使用 Go 语言写一个数据库—6 完结撒花

    Hello 大家好,我是 roseduan,前面的几篇文章,我已经讲述了 rosedb 最基础也是最核心的知识,如果你没有印象的话,可以温习一下:

    roseduan
  • Go 语言 数据库操作之链接数据库实现

    // 连接函数 func Connect(struser, strpwd, strip, strdatbase string) bool { v...

    李海彬
  • Go 语言 数据库操作之插入数据实现

    代码非复制可以用,因为有些是没有提交,例如打印日志;总的来说,思路重要。 例子源码 如下: // 插入意见反馈的意见 func XiaoFFeedBackFu...

    李海彬
  • golang学习之旅:使用go语言操作mysql数据库

    1.下载并导入数据库驱动包 官方不提供实现,先下载第三方的实现,点击这里查看各种各样的实现版本。 这里选择了Go-MySQL-Driver这个实现。地址是:ht...

    李海彬
  • 使用Go语言操作MySQL数据库的思路与步骤

    最近在做注册登录服务时,学习用Go语言操作MySQL数据库实现用户数据的增删改查,现将个人学习心得总结如下,另外附有代码仓库地址,欢迎各位有兴趣的fork。

    Zoctopus
  • Go 使用 Gorm 操作 MySQL 数据库

    在实际开发中,要用到数据库存储数据。MySQL是一个关系型数据库管理系统 使用非常广泛。在Go语言开发中,会选择一个操作数据的类库来帮助我们完成工作。

    zhangyunfeiVir
  • Go语言操作mysql数据库简单例子

    Go语言操作数据库非常的简单, 他也有一个类似JDBC的东西"database/sql" 实现类是"github.com/go-sql-driver/mysql...

    李海彬
  • 一个 Go 语言实现的数据库

    rosedb 是一个稳定、高性能、快速、内嵌的 k-v 数据库,支持多种数据结构,包含 String、List、Hash、Set、Sorted Set,接口名称...

    逆锋起笔
  • MySQL之数据库基本操作语句

    ITester软件测试小栈
  • MySQL基础(一)——数据库基本操作

    数据库是按照一定的数据结构来组织、存储和管理数据的仓库。其实我们在前面的时候介绍过十篇关于数据库调优的文章。我们从本文开始,为大家介绍数据库的基本知识,主要以M...

    一计之长
  • MySQL数据库SQL脚本DDL(数据定义语言)数据表操作

    今天的命令操作是基于某个数据库而言的,也就是说要先进入到某个数据库,使用命令use 数据库名称,例如 use ljydb; 1.创建数据表 Create t...

    刘金玉编程
  • Go语言学习之旅 2 - 基本语法及数据结构

    大写开头,导出 如果一个名字以大写字母开头,那么它就是已导出的。例如,Pizza 就是个已导出名,Pi 也同样,它导出自 math 包。

    zhangyunfeiVir
  • Go语言中常用的基本数据类型

    Go语言中以bool类型进行声明布尔型数据,布尔型数据只有true(真)和false(假)两个值。

    极客运维圈
  • SQLserver数据库之基本增删改查操作(2)

    闻语博客
  • 数据库基础开源学习教程-android 使用 litepal 操作本地数据库

    android手机自带本地数据库 SQLite ,操作本地数据库android给了api

    杨奉武
  • PHP学习笔记(2)--PHP数据库操作基本知识

    耕耘实录

扫码关注云+社区

领取腾讯云代金券