美文网首页
使用 Go 实现一个简单的 k-v 数据库

使用 Go 实现一个简单的 k-v 数据库

作者: roseduan写字的地方 | 来源:发表于2021-04-26 11:09 被阅读0次

    大家好,我是 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 的一些优化代码的技巧,希望我的这个项目只是为你打开一扇门,而门后的精彩世界,需要你靠着好奇心自己去探索。

    相关文章

      网友评论

          本文标题:使用 Go 实现一个简单的 k-v 数据库

          本文链接:https://www.haomeiwen.com/subject/gmnsrltx.html