ACID vs BASE:データベースの一貫性モデルを徹底解説

ACID と BASE という2つのデータベース一貫性モデルの違いを比較し、CAP 定理との関係やどちらを選ぶべき場面かをわかりやすく解説します。

Read in: en
ACID vs BASE:データベースの一貫性モデルを徹底解説

トランザクションモデルであるACIDとBASEについて述べる。

##ACIDとは

ACIDは、主に**リレーショナルデータベース(RDB)**で用いられるトランザクションの4つの性質を表す。

特性 意味 概要
Atomicity(原子性) トランザクションはすべて成功するか、すべて失敗する All or Nothing - 中途半端な状態は残らない
Consistency(一貫性) データベースの整合性制約が常に保たれる 制約・トリガー・ルールが維持される
Isolation(分離性) 並行実行されるトランザクションが互いに影響しない 同時実行でも逐次実行と同じ結果
Durability(永続性) コミット済みの変更は永続的に保存される システム障害でも変更は保持される

ACID適用の具体例

ACIDの実装技術

##BASEとは

BASEは、主にNoSQLや大規模分散システムで用いられる、ACIDよりも緩やかな整合性モデルである。BASEは次のような3つの特性を持つ。

特性 意味 概要
Basically Available(基本的可用性) ある程度常に応答を返す 完全な整合性がなくても利用可能
Soft state(ソフトステート) 状態は変化しうる データが一時的に不整合でも許容
Eventual consistency(最終的整合性) 最終的には整合性がとれる 時間が経てば整合することを前提

BASE適用の具体例

BASEの実装技術

##ACID vs BASE:設計思想の違い

比較軸 ACID BASE
整合性 強い整合性(Strong) 最終的整合性(Eventual)
可用性 障害時に低下する可能性 高可用性を維持
分散性 分散環境では制約が多い 分散システム向けに設計
レイテンシ 一貫性保証のため遅延発生 低レイテンシを優先
トレードオフ Consistency > Availability Availability > Consistency
適用分野 金融・業務系・トランザクション Webサービス・スケーラブルアプリ

##まとめ ACIDはリレーショナルデータベースのトランザクションにおける強い整合性を提供し、BASEは分散システムでの柔軟な整合性を実現する。アプリケーションの要件に応じて、どちらのモデルを選択するかが重要である。ACIDは金融や業務系アプリケーションに適し、BASEはWebサービスやスケーラブルなアプリケーションに向いている。

##参考文献・関連資料

Tags: ACID BASE
Share: 𝕏 Post Facebook Hatena
✏️ View source / Discuss on GitHub
☕ サポート

このブログを応援していただける方は、以下からサポートをお願いします。いただいたサポートはブログ運営・技術研鑽に活用します。


関連記事