トランザクションモデルであるACIDとBASEについて述べる。
##ACIDとは
ACIDは、主にリレーショナルデータベース(RDB)で用いられるトランザクションの4つの性質を表す。
| 特性 | 意味 | 概要 |
|---|---|---|
| Atomicity(原子性) | トランザクションはすべて成功するか、すべて失敗する | All or Nothing - 中途半端な状態は残らない |
| Consistency(一貫性) | データベースの整合性制約が常に保たれる | 制約・トリガー・ルールが維持される |
| Isolation(分離性) | 並行実行されるトランザクションが互いに影響しない | 同時実行でも逐次実行と同じ結果 |
| Durability(永続性) | コミット済みの変更は永続的に保存される | システム障害でも変更は保持される |
##BASEとは
BASEは、主にNoSQLや大規模分散システムで用いられる、ACIDよりも緩やかな整合性モデルである。BASEは次のような3つの特性を持つ。
| 特性 | 意味 | 概要 |
|---|---|---|
| Basically Available(基本的可用性) | ある程度常に応答を返す | 完全な整合性がなくても利用可能 |
| Soft state(ソフトステート) | 状態は変化しうる | データが一時的に不整合でも許容 |
| Eventual consistency(最終的整合性) | 最終的には整合性がとれる | 時間が経てば整合することを前提 |
##ACID vs BASE:設計思想の違い
| 比較軸 | ACID | BASE |
|---|---|---|
| 整合性 | 強い整合性(Strong) | 最終的整合性(Eventual) |
| 可用性 | 障害時に低下する可能性 | 高可用性を維持 |
| 分散性 | 分散環境では制約が多い | 分散システム向けに設計 |
| レイテンシ | 一貫性保証のため遅延発生 | 低レイテンシを優先 |
| トレードオフ | Consistency > Availability | Availability > Consistency |
| 適用分野 | 金融・業務系・トランザクション | Webサービス・スケーラブルアプリ |
##まとめ ACIDはリレーショナルデータベースのトランザクションにおける強い整合性を提供し、BASEは分散システムでの柔軟な整合性を実現する。アプリケーションの要件に応じて、どちらのモデルを選択するかが重要である。ACIDは金融や業務系アプリケーションに適し、BASEはWebサービスやスケーラブルなアプリケーションに向いている。
##参考文献・関連資料