Miniposts in 2025

2025/01/29

輪読

Tejasvi Kashi, Kenneth Salem, Jaemyung Kim, and Khuzaima Daudjee. Eventual Durability. PVLDB, 17(13): 4733 - 4745, 2024. doi:10.14778/3704965.3704979

"Eventual Durability" の二語からなるキャッチーなタイトルの論文. 中身は非常にシンプルで, データベーストランザクションにおける "committed" というtermの意味を分解して, "durable" (従来の意味での commit) と "lost"に区別している. "lost" はserializability, durabilityの意味ではNGである. つまり,これを読んだトランザクションは将来lostする可能性がある値を読むことになる. これだけだと使い物にならないので,recoverabilityの議論を加えているのが少し面白いと感じたところで, serializabilityとrecoverabilityの両方を保証することで, "lostする値を読むかもしれないけど,そのときは自分もlostするよ(永続化はされないよ)" というインタフェースをユーザに提供することができている. (ただし,その代償として, cascading aborts よしなに cascading losts はする). シナリオの面でも納得感はある. Weak Isolation が許容されるのであれば Weak Durability も許容されてしかるべきかもしれないし.もともとデータベースは precommit とか group commit の文脈で durable と commit を分割していたので,それをユーザに明示的に見せることは問題がなさそうだ. 実際, MySQL だとサーバ変数で sync_flush を調整できるわけだし. この論文でも PostgreSQLの synchronous_commit をうまくexploitして実装していて,このモデルがリーズナブルに実装できることを示している.

内容は,アプリケーションユーザに負担を肩代わりさせるだけの話だし,昔からありそうなトピックなので賛否両論あるだろうが,問題の整理とライティングが良い.

2025/01/08

年が明けた.

輪読

Ling Zhang, Matthew Butrovich, Tianyu Li, Andrew Pavlo, Yash Nannapaneni, John Rollinson, Huanchen Zhang, Ambarish Balakumar, Daniel Biales, Ziqi Dong, Emmanuel J. Eppinger, Jordi E. Gonzalez, Wan Shen Lim, Jianqiao Liu, Lin Ma, Prashanth Menon, Soumil Mukherjee, Tanuj Nayak, Amadou Ngom, Dong Niu, Deepayan Patra, Poojita Raj, Stephanie Wang, Wuwen Wang, Yao Yu, William Zhang: Everything is a Transaction: Unifying Logical Concurrency Control and Physical Data Structure Maintenance in Database Management Systems. CIDR 2021 https://www.cidrdb.org/cidr2021/papers/cidr2021_paper06.pdf (opens in a new tab)

DBMSの物理データ構造 (e.g., B-tree) にはtransactional と maintanance で二つの異なる性質のactionが飛んできて,これらを同期・調停するのが大変なのだが, でかいキューを噛ませてtimestamp順に実行されるようにして,すべての(トランザクションであろうがそれ以外の処理であろうが)actionをdeffered actionとして順序づけて実行するようにすればCorrectnessの保証は簡単. 実装も簡単. ordering guaranteeも強く保証でき,かつオンラインDDLやself-driving database のためにも有用なbuilding blocks になるという提案.

任意の複数のシステムについて,一貫性を保った統合が必要とされたとき,キューがあればいいじゃない,という話になるあれをトランザクションの世界で見た,という感じはする. 性能(並列性)を高めるための工夫をしていくとだんだんもとのAPIに戻っていって元の木阿弥になりそうな感もあるが,しかし実装者としてはこれくらいシンプルなアーキテクチャのほうがありがたい.

© nikezono.devRSS