Miniposts

2025/03/04

輪読

https://lamduy-nguyen.github.io/assets/pdf/latency.pdf (opens in a new tab)

Nguyen, L., Alhomssi, A., & Ziegler, T. Moving on From Group Commit: Autonomous Commit Enables High Throughput and Low Latency on NVMe SSDs. VLDB'25 To be appeared.

Group CommitといえばディスクI/Oの最適化テクニックだ. HDDのディスクI/OのIOPSが足りないのと,ランダムI/Oだとシークが発生するのが耐え難いので,シーケンシャルに書けるようにバッファリングして,一回のflushでまとめて書き出しましょう,それまでcommitは遅延しましょう,という発想だった. しかしSSDやNVMe SSDの時代を迎えて,もはや市販品のSSDでもIOPSはHDDの数百倍以上に増大しており,ランダムI/Oの性能も非常に高くなった. したがって,Group Commitには新しい性能上の問題が生まれている... それが「インメモリ上のバッファ管理,具体的にいうとリングバッファにデータを詰めるところの並行データ構造だ」というのがこの論文の論旨. そこの性能改善のためにはある程度ログを分散してwriteして(結果的にgroup commitの当初の形ではなくなっても)良い結果が出るという興味深い洞察もある. この著者そして研究室の論文はすべて面白い.

Group Commitについては思うところがあるので,今度まとめて記事を書きたい.

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に戻っていって元の木阿弥になりそうな感もあるが,しかし実装者としてはこれくらいシンプルなアーキテクチャのほうがありがたい.

Archives

© nikezono.devRSS