分散データベース




分散データベース(ぶんさんデータベース、英: distributed database)は、1つのデータベース管理システム (DBMS) が複数のCPUに接続されている記憶装置群を制御する形態のデータベースである。物理的には同じ場所の複数台のコンピュータで構成される場合や、コンピュータネットワークで相互接続されたコンピュータ群に分散されている場合などがある。




目次






  • 1 概説


  • 2 基本アーキテクチャ


  • 3 重要な点


  • 4 利点


  • 5 欠点


  • 6 脚注


  • 7 参考文献


  • 8 関連項目


  • 9 外部リンク





概説


(例えばデータベース内の)データの集合体は、複数の物理的位置に分散配置できる。分散データベースが存在するネットワークサーバは、インターネット上にある場合、企業のイントラネットやエクストラネットにある場合、他の企業のネットワークにある場合がある。データベースのレプリケーションや分散により、ユーザーから見ればデータベースの性能が強化される[1]


分散配置されたデータベースの内容が最新であると保証するためには、レプリケーションとデュプリケーションという2つの処理を行う。レプリケーションは、分散データベースにおけるデータの更新を発見する特別なソフトウェアを使う。更新を発見したら、レプリケーション処理によって、データベース群全てに同じ更新を加える。レプリケーション処理は、分散データベースの大きさや分散配置数によっては非常に複雑で時間のかかる処理になる。また、計算資源も多く必要とする。一方デュプリケーションはそれほど複雑ではない。基本的に1つのデータベースをマスターとし、そのデータベースを他に複製する。通常デュプリケーションは設定された時間に数時間かけて行う。これにより、分散配置されたそれぞれの場所のデータが同じであることを保証する。デュプリケーションでは、マスターデータベースだけに更新が許される。どちらの手法も分散配置された全てのデータが最新であることを保証する[2]


上記以外にも分散データベースの設計技法には様々なものがある。例えば、ローカル自律型、同期型、非同期型などの分散データベース技術がある。ビジネスにおける必要性、そのデータの重要性や機密性、データのセキュリティ・一貫性・完全性にかけられるコストによって、これら技術のうちどれを実装するかを決定する。



基本アーキテクチャ


ユーザーは分散データベースに以下のような手段でアクセスする。



ローカルなアプリケーション

他のサイトからのデータを要求しないアプリケーション

グローバルアプリケーション

他のサイトからのデータを要求するアプリケーション


分散データベースは、主記憶メモリやディスクを共有するわけではない。



重要な点


分散データベースでは、以下のような点が重要である。



  • 分散は透過的である - ユーザーはそれが1つの論理システムであるかのように対話できる必要がある。これは、性能やアクセス方法など様々な面に適用される。

  • トランザクションは透過的である - 各トランザクションは、複数のデータベースに渡って一貫性を保証する必要がある。トランザクションは一般に複数のサブトランザクションに分割され、個々のサブトランザクションは1つのデータベースに対応する。



利点



  • 組織構造の反映 - 企業などの部門ごとにデータベースを置き、それらを統合して分散データベースとすることができる。

  • 局所自律性 - 各部門は自身の持つデータを制御できる。

  • 重要なデータの保護 - 火事などの災害が発生したとき、データが分散配置されていれば、全部を一度に失うことがない。

  • 性能向上 - よく使うデータは近い場所にあり、しかも全体が並列動作するため、データベースの負荷分散が可能である。一部が高負荷になっても分散データベース全体が受ける影響が小さい。

  • 経済性 - 巨大な高性能コンピュータよりも、同程度の性能を発揮する小型コンピュータのネットワークの方が安価である。

  • モジュール性 - 分散データベースの他のモジュール(システム)には影響を与えずに、個々のシステムを更新・追加・削除することができる。

  • 高信頼なトランザクション - レプリケーションによる。


1つのサイトが障害に陥っても、全体の機能は損なわれない。全てのトランザクションはACID属性に従う。



欠点



  • 複雑さ - 透過性を保証するため、構築には単純なデータベースよりも技量を要する。また、構成するシステムは同一の機種とは限らない。接続が切れた際の動作も考慮する必要がある。例えば結合を複数システム間で行う場合、性能低下が予想される。

  • コスト - システムの規模と複雑さが増大するにしたがって、管理コストも増大する。

  • セキュリティ - 個々のサイトのセキュリティを確保し、サイト間のネットワークのセキュリティも確保しないと、全体がセキュアとは言えない。

  • 完全性の保証の難しさ - 分散データベースで完全性を保証するには、多大なネットワークリソースを必要とする。

  • 未成熟な技術 - 分散データベースは未成熟な分野であり、経験的知識の蓄積が少ない。

  • 標準の欠如 - 集中型DBMSを分散型DBMSに変換するためのツールや方法論はまだ存在しない。

  • データベース設計の複雑さ - 通常のデータベース設計に加えて、データを各サイトにどう配置するか、レプリケーションをどうするかなど、設計時に考慮すべきことが増える。

  • 追加のソフトウェアを必要とする。


  • オペレーティングシステムが分散コンピューティングをサポートしている必要がある。


  • 並行性制御が重要である。



脚注





  1. ^ O'Brien, J. & Marakas, G.M.(2008) Management Information Systems (pp. 185-189). New York, NY: McGraw-Hill Irwin


  2. ^ O'Brien, J. & Marakas, G.M.(2008) Management Information Systems (pp. 185-189). New York, NY: McGraw-Hill Irwin




参考文献



  • M. T. Ozsu and P. Valduriez, rinciples of Distributed Databases (2nd edition), Prentice-Hall, ISBN 0-13-659707-6

  • Federal Standard 1037C

  • Elmasri and Navathe, Fundamentals of database systems (3rd edition), Addison-Wesley Longman, ISBN 0-201-54263-3



関連項目



  • Domain Name System

  • ルーティングプロトコル



外部リンク


  • Distributed database types and different classification possibilities




Popular posts from this blog

How to reconfigure Docker Trusted Registry 2.x.x to use CEPH FS mount instead of NFS and other traditional...

is 'sed' thread safe

How to make a Squid Proxy server?