抛弃数据库:用 Tigris 对象存储构建 Ampbase
Object storage is all you need

作为 Ampbase 的创始人,我选择直接利用 Tigris 对象存储作为数据层,完全摒弃了传统关系型数据库。我们仅依赖对象存储的两个原语,自行实现了唯一约束、事务、索引和历史表等核心数据库行为。通过强读后写一致性、条件写入以及巧妙的键设计,我们不仅实现了数据隔离,还获得了比传统数据库更优的审计追踪能力。这种架构消除了迁移、连接和模式管理的复杂性,证明了在分布式系统中,对象存储足以替代传统数据库引擎。
历史无法因一次粗心的更新而丢失,因为系统中根本不存在更新操作。
HN 评论区
43- dullcrisp
这篇文章并没有给出太多为什么要这么做的理由。
在我看来,这读起来有点像“我们如何建了一间没有桌子的办公室”:结果发现,如果你把两把椅子叠在一起,就能把笔记本电脑平衡在上面,下面还能腾出个架子放东西。
- ryanbrunner
这类文章让我想起了那篇关于 Innovation Tokens 的文章。
作为开发者,你的时间和注意力非常宝贵。我完全确定你可以自己实现唯一性约束、事务、索引和历史记录,但这真的是你时间最宝贵的用途吗?你可能根本不需要一个独特的解决方案,所以这基本上就是在毫无太多收益的情况下重新发明别人已经造好的东西。
你的时间是不是更应该花在真正解决你所构建的东西本该解决的问题上?
- arpinum
读起来真让人沮丧。Tigris 是建立在 FoundationDB 之上的,但它并没有暴露 FoundationDB 的所有操作,比如事务、范围读取和 get mapped range。他们为了处理这些问题搞了一大堆复杂的方案,包括用一个数据库来做缓存(而且他们似乎根本没考虑惊群问题)。
那你为什么不直接运行 FoundationDB 呢?
- agentultra
> 实际上,当你想要一个数据库引擎时,你实际上是在寻找四个基本功能:唯一性约束、事务、索引和历史表。
这可能是一个非常具体的假设。那序列化(serializability)呢?复制(Replication)?物化视图?存储过程?锁?访问控制?
尝试新方案、做实验确实挺酷的。这里这个点子不错。
不过最后可能还是会搬回 Postgres。
- i2km
除了标注预计阅读时间(比如这篇文章是 21 分钟),作者们能不能也标注一下预计写作时间?
是花了 10 秒钟提示生成的?还是花了好几个小时思考、试错和修改?尤其是当要求人们花 20 多分钟去读的时候……