pub:2016.7.13/upd:2016.8.7

ACID特性、BASE特性とDBMSの適材適所

データベースの選択に必要な基礎知識

ACID特性

トランザクションの整合性を保障するために必要な以下の特性のこと。

  • Atomicity トランザクションを構成する全ての処理が「成功」か「失敗」のいずれかとなる性質
  • Consistency トランザクションを構成する処理についてあらかじめ設計された整合性を保障される性質
  • Isolation トランザクション間で干渉が起こらないと性質
  • Durability トランザクションの結果が失われることなく記録される性質

ACID特性を持つデータベース

ACID特性を持つデータベースはRDBと呼ばれる。行志向型と列志向型が存在する。

整合性が保証されていることに加えて、検索が自由自在であることにもメリットがあり、データベースを選択する際には第一候補として考える。

ただし、ACID特性を保障するためには、性能上のコストがかかるため原理的な性能上限がある。この性能上限が意識される場合、すなわちビッグデータの取扱や大量のリクエストで不利になることがある。

  • Amazon RDS (行指向)
  • Amazon Redshift (列指向)
  • Google BigQuery (列指向)

BASE特性

システム全体が持つ以下の特性のこと。

  • Basic Available 原理的にいつでも利用できるという性質
  • Soft State データの整合性について”はっきりとはしない”というタイミングが存在するという性質
  • Eventual Consistant データの整合性が”結果的には”保証されるという性質

BASE特性を重視したデータベース

BASE特性を重視したデータベースはNoSQLと呼ばれる。KVS型、ドキュメント指向型などが存在し、性能特性が異なる。

BASE特性はトランザクションという概念を捨て、システムを分散型(ノードを統合的に複数動かす)とすることで保障する。ノードを追加していくことで性能が拡張(スケールアウト)可能な特徴を持つ。

ただし、データの更新が全てのノードに行き渡るための時間が必要になるため、ACID特性は損なわれる。さらにインデックスとして事前に設定した要素以外を使った検索の効率が著しく低くなるという性質もある。

  • Amazon DynamoDB (KVS)
  • Amazon EMR (オンメモリKVS)
  • Google BigTable (KVS+カラム指向インデックス)
  • Apache Cassandra (KVS)
  • Apache HBase (カラム指向)
  • CouchDB (ドキュメント志向)
  • MongoDB (ドキュメント志向)

Leave a Reply

Your email address will not be published.