7年的开源数据库开发:学习的经验教训

2021-04-17 14:09:16

这是2016年4月9日,我标记了我的第一次官方发布了RQLite - 两年后我实际开​​始编码它。从那时起,已有58个发布,277个已关闭问题,416个关闭拉拔请求,32,785个插入,1954年删除和100个文件已更改。

RQLITE是一种轻量级,开源分布式的分布式关系数据库,具有SQLite作为其存储引擎。我开始了它的乐趣,但是因为它变得更加严重。那么在过去7年中,我如何了解开源数据库开发?

一旦我尝试重写HTTP服务层并替换RAFT共识子系统。同时。

它太多了,我抛弃了这项工作。在我意识到它不会上班之前,发展努力让我花了很多时间。我学习了一个有价值的教训 - 保持尽可能小的变化,并一次关注一个特征。正常推出释放释放,并谨慎大写大写。

我在一个周末添加了一些最重要的功能。最好的时间经常是单身,高强度的周末,在我写一行代码之前,我可以在我的脑海中看到新系统的形状。我曾经在一个周末完全重写了API,它导致RQLite版本2.0 - 它的方式更好。然后,几个月会在我什么都不做的时候。这仍然是这一天的模式。

另一个周末我将筏日志迁移到protobuf编码和压缩 - 它一切都刚刚精美地工作。如果我在数据库稳固地在数据库上运行一年,我常常想知道我能做多少进展。

我相信它是测试覆盖率,使数据库的质量很高。我收到了来自用户RQLite实例已运行超过一年的报告,而不需要重新启动。

我密切坚持测试金字塔哲学。将您的测试用例写入尽可能接近实际代码 - 它使其成为一个差异世界。不要忽略测试失败。单位测试不会出于神奇原因失败 - 他们告诉您您并不完全明白您构建的内容。

保持您对烟雾测试的集成测试 - 确保您的数据库实际上开始,并且您尚未错过任何基本。但单元测试是关键。在单元测试级别的情况下,您的软件将永远不会高品质。

我一直印象深刻 - 这是我最喜欢的编程语言。它让我富有成效。在近7年后,我仍然喜欢它,即使在返回RQLite开发之前几个月通过,我发现我没有忘记我的使用风格和模式。

我为挑战写下我的数据库 - 我可以创建一个有趣的系统,维护干净的设计和连贯的实施吗?仍然高品质?我觉得我可以。但是当人们使用它时也很令人欣慰。

但宣传很难。它需要7年的时间来获得GitHub上的8,000颗星。这个好吗?我不知道。我应该关心吗?我也不知道。

我管理程序员的生活。这是一个迷人的工作,但它与自己做的编码不同。作为团队活动的编程需要同意编码样式,错误解决策略,代码审查和特征优先级。

因此,在自己的项目上工作正在解放。你决定编码样式。你决定了这些功能。您决定修复哪些错误。它还提醒你为什么穿越多个开发人员的世界就会减慢进展。没有什么能击败单一的思想,单一的愿景。

RQLite已经存在7年,仍然有很多事情要做。 事务,客户端库,适当的Kubernetes支持,性能 - 软件的吸引力是它是可观的,并且可以始终得到改善。 我很确定它永远不会到达一个我会说“它已经完成的地方”。