データベースは不要、TigrisのオブジェクトストレージだけでAmpbaseを支える仕組み
Object storage is all you need

Ampbaseの創業者JPが、Tigrisのオブジェクトストレージをデータベースとして直接使う方法を解説。強力なread-after-write整合性と条件付き書き込みを土台に、一意制約、トランザクション、インデックス、履歴テーブルという4つのデータベース機能を自前で実装。バケットの分離による強固なマルチテナントや、ULIDキーによる追記専用の履歴管理など、分散システムならではの工夫と課題を具体的に紹介する。
「データベースは不要だった」というキャッチーなタイトルは、たいてい8か月後に「いかにして尻尾を巻いてPostgresに移行したか」という次の投稿が来る前触れだ。
HNでの議論
42- dullcrisp
この記事は、なぜそんなことをするのかという動機をあまり示していない。
私には、机なしでオフィスをどうやって作ったか、という話のように少し読める。つまり、椅子を二つ重ねれば、一番上の椅子の上でラップトップのバランスを取れて、下の椅子は物を置く棚にもなる、ということが分かった、という話だ。
- ryanbrunner
こういう記事を読むと、あの「イノベーション・トークン」の記事を思い出す。
開発者として、あなたの時間と注意力は貴重だ。ユニーク制約、トランザクション、インデックス、履歴を自分で実装することは絶対に可能だろうが、それが本当にあなたの時間の最も価値ある使い方なのだろうか?おそらくあなた独自の解決策を持つ必要はないのだから、文字通り、誰かがすでに持っていたものを、大した利益もなく再発明しているだけだ。
あなたの時間は、あなたが作っているものが解決すべき問題を実際に解決するために使ったほうがよいのではないか?
- arpinum
これを読むのはもどかしい。TigresはFoundationDB上に構築されているのに、トランザクション、範囲読み取り、get mapped rangeのようなFoundationDBの操作をすべて公開していない。彼らはこれらの問題に対処するために、キャッシュ用のデータベースを含むあらゆる種類の複雑さを経ている(しかもサンダリング・ハード問題を考慮していない)。
単にFoundationDBを動かせばいいのではないか?
- agentultra
> 実際には、データベースエンジンに手を伸ばすとき、あなたは実際には4つの基本機能に手を伸ばしている。ユニーク制約、トランザクション、インデックス、履歴テーブルだ。
それは非常に特定の仮定かもしれない。直列化可能性は?レプリケーションは?マテリアライズドビューは?プロシージャは?ロックは?アクセス制御は?
実験して新しいアプローチを試すのはクールだ。これは面白いね。
それでも最終的にはPostgresに移行することになるかもしれない。
- i2km
推定読了時間(この場合は21分)を載せるのと同様に、著者には推定執筆時間も載せ始めてほしい。
プロンプトを10秒投げただけなのか?それとも何時間もの思考、試行錯誤、修正だったのか?特に20分以上読むように人に求める場合はなおさら……。