乐趣区

关于golang:使用-Go-实现一个简单的-kv-数据库

大家好,我是 roseduan,明天我向大家举荐一下我写的一个 Go 语言实战我的项目—rosedb

rosedb 是一个简略、内嵌的 k-v 数据库,应用 Golang 实现,反对多种数据结构,蕴含 StringListHashSetSorted Set,接口名称格调和 Redis 相似。

如果你曾经比拟相熟 Go 语言的基础知识了,然而又苦于没有我的项目实战,无奈失去进一步的晋升,那么这个我的项目肯定是帮忙你坚固和进阶 Go 常识的绝佳素材。

我将这个我的项目开源到了我的 GitHub 下面,你能够在 GitHub 搜寻 rosedb,或者点开这个链接查看:

https://github.com/roseduan/rosedb


大略去年 6 月份,我刚开始学习 Go 语言,因为之前有 Java 的教训,加上 Go 的根本语法较简略,上手还是很快,然而学完根底的语法常识之后,就不晓得下一步应该做什么了,置信有很多小伙伴跟我有一样的感觉。

一个偶尔的机会,我在网上看到了一篇介绍数据库模型的文章(文章地址在我的项目的 Issue 中),文章很简略,了解起来也很容易,并且我始终以来对数据库还是比拟感兴趣的。

因而我想着能够本人实现一个 k-v 数据库,造个简略的轮子,借此坚固本人的一些基础知识,通过实际这个我的项目,至多能够学习到:

  • Go 语言大多数根底语法,以及一些高级个性比方 goroutinechanmutex
  • 数据结构及算法相干常识,链表,哈希表,跳表,有序汇合等等
  • 操作系统的一些常识,特地是对文件系统,内存映射相干的内容

今年初,我在找工作的时候,其实这个我的项目对我的帮忙还是挺大的,在这之前我没有任何 Go 相干工作教训,仅自学了 Go 语言的基础知识,但还是顺利找到了 Go 开发的工作职位。

在面试的过程当中,一些面试官也对这个我的项目比拟的感兴趣,都让我介绍一下,这也从某些水平阐明,领有一个开源我的项目,对于找工作是一个亮点,不管我的项目的 star 数量多不多,这至多可能阐明你的入手能力,学习能力都还是不错的。


很多同学可能感觉是写数据库,就想到可能有点艰难。但其实我想说这种担心是多余的,因为我的项目整体来说还是挺简略的,我在 B 站也录制了几期视频,专门来解说这个我的项目,你能够跟着视频来了解,就不会感觉很艰难了。

你能够在 B 站搜寻 roseduanV 或者点上面的链接拜访:

  • 应用 Go 写一个数据库—1 根本构造
  • 应用 Go 写一个数据库—2 数据操作
  • 应用 Go 写一个数据库—3 数据库操作
  • 应用 Go 写一个数据库—4 数据结构

目前为止,其实这个我的项目还十分的不欠缺,我构想的很多性能都还没有实现,在我的项目的 TODO 列表中,你能够看到很多待实现的性能。

相熟了这个我的项目之后,你能够尝试着挑一个本人感兴趣的 TODO 写一下,成为这个我的项目的 Contributor。

当然在钻研这个我的项目的时候,你也能够参考一些其余的优良的数据库,例如 redis、leveldb 等,翻一下源码,看看他人都是怎么实现的,这样对你来说是十分贵重的摸索教训。

例如我写这个我的项目的时候,就看了一些 redis 的源码,这让我对 redis 的底层实现有了更多的理解,并且还学习到了 redis 的一些优化代码的技巧,心愿我的这个我的项目只是为你关上一扇门,而门后的精彩世界,须要你靠着好奇心本人去摸索。

退出移动版