Definition:Append-only Architecture
追記型アーキテクチャ[Append-only Architecture]とは, データの更新や削除を行う際に既存のレコードを直接書き換えるのではなく,常に新しい情報を末尾へ追加していく設計手法である.
このアーキテクチャの中核をなす原理は, データの「版[バージョン]」を複数保持することにある.あるデータを更新する場合, 古いデータはそのまま残し, 変更後の内容を別の場所に新しいデータとして書き加える.削除時も同様に, 物理的な消去は行わず, そのデータが無効であることを示す tombstone[墓石マーク] を追記するのみに留める.既存の記録を決して書き換えないという一点が, 以降に述べるすべての特性の根拠となる.
この仕組みは 多版型同時実行制御[MVCC: Multi-Version Concurrency Control]の基盤となる.各トランザクションはコミット時点のスナップショット[Snapshot Isolation]を参照するため, 読み取り処理と書き込み処理が互いをブロックしない.ロック競合が大幅に減少することで, 高度な並列処理が実現される.
ストレージ特性の面でも, このアーキテクチャは有利に働く.既存箇所への上書き[ランダム書き込み]を避けて連続的な領域にデータを順に並べる[シーケンシャル書き込み]ことは, HDDにおけるヘッドシーク時間の削減, SSDにおける書き込み増幅の抑制とデバイス寿命の延伸という, それぞれの媒体に固有のメリットをもたらす.また, 過去のデータが履歴として一定期間残るため, 障害発生時に過去の特定時点の状態を復元する ポイントインタイムリカバリ[PITR]も容易になる.
一方で, 更新や削除を繰り返すたびにストレージ容量を消費し続けるという課題も抱えている.不要になった古いバージョンのデータは, 放置すればシステムのパフォーマンスを低下させる要因となる.そのため, 不要な領域を整理して再利用可能にするガーベージコレクション処理をバックグラウンドで実行する仕組みが不可欠である.PostgreSQLにおける VACUUMはその代表例であり, LSMツリー[Log-Structured Merge-tree]を採用するシステム[RocksDB, Apache Cassandraなど]における Compaction も同等の役割を果たす.
追記型アーキテクチャは, 汎用的なRDBMSにとどまらず, クラウドネイティブなデータベースや特殊なデータ構造においても重要な役割を果たしている.
LSMツリーは追記型アーキテクチャの最も代表的な実装のひとつであり, 書き込みをまずメモリ上のバッファ[MemTable]に蓄積し, 一定量に達すると不変なファイル[SSTable]としてストレージへ順次書き出す.RocksDBやApache Cassandraといった大規模分散システムの書き込みコアとして広く採用されている.
Amazon Aurora は, ストレージレイヤーにおいて「Log is the database」という設計思想に基づく追記型に近い独自の構造を採用している.データページそのものを頻繁に転送するのではなく, 変更履歴であるログのみをストレージへ送信し, ストレージ側でそれを追記・適用することで, ネットワーク負荷を劇的に軽減しながら高い書き込み性能と耐久性を実現している.
ブロックチェーンにおいても, このアーキテクチャは中核技術として利用されている.一度書き込まれたブロックを上書きせず, 各ブロックが直前のブロックのハッシュ値を内包することで全履歴を連鎖的に連結する構造は, 改ざんの検出を数学的に保証する.履歴の完全な保持が求められる監査システムや分散型台帳において, この「消さない・書き換えない」設計は不可欠な要素となっている.
このように, 追記型アーキテクチャは「ストレージ容量の消費」という対価を払うことで, 現代のデータベースに求められる「高度な並列性」「強固なデータ保護」「監査可能性」を同時に手に入れる設計である.単なる効率化の手法を超え, 分散システムにおける信頼性の基盤として, その適用範囲は今後もさらに広がり続けるものと考えられる.
Mathematics is the language with which God has written the universe.