JepsenがParticleDBの「Full ACID」を検証、単一ノードで96件の不具合を発見
Jepsen: ParticleDB 1.1.4
AIワークロード向けマルチモデルDB「ParticleDB」をJepsenが検証。バージョン1.1.4から1.1.18.11.rc-22までを対象に、クラッシュやデッドロック、データ損失に加え、削除できない不可視行や「WHERE 4 = 5」、消えたテーブルの歪んだ再出現、文字列が整数に化けるなど96件の不具合を報告した。大半は単一サーバー・単一クライアント・障害なしで再現し、デフォルトのoccモードでは通常運用中にコミット済み書き込みが失われ、最強のserializable設定でもLost Updateが発生した。
ParticleDBのホームページは「Full ACID。159K TPS」と誇らしげに謳っていた。しかしそのすぐ下の文には「スナップショット分離」とあり、これは完全な分離ではない。
HNでの議論
106- the_duke
残酷だ!
> ParticleDB 1.1.4はPostgres互換データベースを自称していた… しかし、我々が見つけたのは混乱のライブラリだった
> 測定可能なほぼあらゆる方法で、頻繁かつ深刻なトランザクション異常を示した。コミットされた書き込みの消失、内部整合性違反、G1a(Aborted Read)、G1b(Intermediate Read)、P4(Lost Update)を日常的に観測した。追加ワークロードでは、正常に追加された値が、特定のキーの後続の読み取りから日常的に消えていた。我々のテストスイートは、G0、G1c、G-Single、G2-itemを含むあらゆる種類の循環異常を推測したが、これらの多くは書き込み損失のようなより基本的な問題に起因する可能性がある。これらの問題は単一サーバーで、障害なしで発生し、テストされたすべてのトランザクションモード、インターフェース、WALモードに影響を与えた。
- amluto
ソフトウェアには興味深い二分法があると学んだ:
一部のソフトウェアは構造的に正しい。つまり、全体の設計が理にかなっており、動作しないケースは一般に局所的なバグである。
一部のソフトウェアは構造的に誤っており、運と、誤った設計を露呈する可能性のあるほとんどの、あるいはすべてのコードパスで慎重に回避策を講じることの組み合わせで動作する傾向がある。(AIは関連する回避策を挿入すべき場所を見つけるのに非常に効果的だ。)
ParticleDBは後者のカテゴリのように思える。多くの大規模プロジェクトには、一方のカテゴリに属する部分と他方に属する部分がある。
余談だが、ここ1、2日、Linuxカーネルのfolioピン留めの扱いは構造的に誤っているカテゴリにあるのではないかと考えている。良い時代だ。いや、セキュリティや偶発的な破損の問題と信憑性をもって言えるような修正困難なバグを見つけたわけではない[0]が、これは主に運のような気がする。
[0] 数ヶ月前のAnthropicの大規模なダンプも見つけたバグを再発見したようで、修正されつつある。あなたのアプリケーションが「固定された」io_uring I/Oや、特定の種類のiommuベース、あるいはmemfd上のRDMAを使用しているなら、稀に遭遇する可能性がある。再現プログラムを作る手間は省いた。
- tensegrist
> ParticleDBのホームページは、ParticleDBがTLA+証明で「形式的に証明された」と宣伝していた。しかし、我々の共同作業中に利用可能なTLA+仕様はなかった。どのような特性が証明されたのか、あるいはそれが構築されたParticleDBを記述したものなのかは不明である。
- wofo
> 我々が見つけた安全性エラーの深刻さと範囲、およびそれらを生み出したプロセスを考慮すると、Jepsenはユーザーに対しParticleDBのさらなる展開を停止し、できるだけ早く他のデータベースに移行することを推奨する。可能であれば、より信頼できるソースからデータベースの状態を確認および/または再構築することを検討されたい。
データベースをバイブコーディングするとこうなるんだろうな…
- edude03
> 我々はParticleDBに96件の問題を提示する。平凡なもの(クラッシュ、デッドロック、データ損失など)から、辛辣なもの(削除できなかった部分的に不可視の行、WHERE 4 = 5、歪んだ形で再出現する削除済みテーブル、混乱した列、整数に変わる文字列など)まで多岐にわたる。
確かに通常より悪いようだ(振り返ると、ほとんどのデータベースは合計10件未満の問題しかなく、大半は「軽度」のようだ)— AI向けのデータベースだから、これもバイブコーディングされたのか、それとも単に新しいのか? とはいえ、新しくても安定版リリースでこれほど多くの問題があるとは思わない。
- mxey
ひどさが異常だ。バイブコーディングされたデータベースとしては驚きではないが、なぜ最初に自分たちで一切テストせずに、テストのためにKyleを雇ったのか?
- eqvinox
> 文字列が8ビット整数に変わることがある(#37)
ついにeMudhraの鍵に何が起こったか分かった!
(すみません。どうしても我慢できませんでした。)
- t3ntxcles
「WHERE 4 = 5」が行を返すようなバグを出荷するというだけで、すべてを物語っている。