前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我写了一个数据库。。。

我写了一个数据库。。。

作者头像
roseduan
发布2021-07-28 17:49:32
2870
发布2021-07-28 17:49:32
举报
文章被收录于专栏:roseduan写字的地方

大家好,我是 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 找到我和我发布的视频。

目前为止,其实这个项目还非常的不完善,我设想的很多功能都还没有实现,在项目的 TODO 列表中,你可以看到很多待实现的功能。

熟悉了这个项目之后,你可以尝试着挑一个自己感兴趣的 TODO 写一下,成为这个项目的 Contributor。

当然在研究这个项目的时候,你也可以参考一些其他的优秀的数据库,例如 redis、leveldb 等,翻一下源码,看看别人都是怎么实现的,这样对你来说是非常宝贵的探索经验。

例如我写这个项目的时候,就看了一些 redis 的源码,这让我对 redis 的底层实现有了更多的了解,并且还学习到了 redis 的一些优化代码的技巧,希望我的这个项目只是为你打开一扇门,而门后的精彩世界,需要你靠着好奇心自己去探索。


题图:wallhaven.cc/漫画世界现状地图

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档