13:17:02)追加された行はこの色です。削除された行はこの色です。[#d1593352]-=分散型データベース-分散データベースとは、工場や営業所など、地理的に離れた場所の複数のコンピュータシステムに接続されたデータベースを、論理的にひとつのデータベースとしてアクセスできるようにしたデータベースである。-データが遠隔地に分散されているが、論理的に1つのDBとして取り扱える。--分散データベースは、データの存在場所を気にかけることなく使用することができる。[#v9673d54]・各部門のユーザー自身が必要な情報の検索や編集を行うことができ、操作も簡単である。・企業をとりまく事態の変化に対応しやすい。・各部門ごとに独立して処理が行われるので、部門内の要求をそのままシステムに組み込むことができる。・操作場所にデータベースがあるので、応答時間が短い。・データベースに障害が発生しても、他のデータベースを使用できるので、危険性を分散することができる。・他のデータベースにアクセスするときにも、ユーザーはデータベースがどこにあるのかということを全く意識しなくてもよい。[#lc5573ba]・セキュリティ管理やパスワード管理などの運用管理が難しい。・データベースの分散により、データの重複が避けられない場合があり、一貫性が取れなくなる。・データの分散により、プログラムも分散してしまう。・部門固有の機能などが追加されるため、プログラム全体のバージョン管理が難しくなる。プログラムが開発されるため、同じようなプログラムを重複して作ってしまう恐れがある。・全社的な処理を行う場合に、データ通信のための時間と費用がかかる。・一括処理がしにくい。・情報の共有化には、異機種のデータベースに対するアクセスの難しさがある。現在では各社が販売しているデータベースサービス機能も充実しており、次のような点での進展が見られる。RDAとは、開放型システム間総合接続(OSI)の最上位のアプリケーション層の規格のひとつであり、[[分散データベースアクセス]]の通信規格である。分散型データベースでは、DBサーバーとクライアント間の転送データ量が問題となる。この問題を解消する方法として、クライアントキャッシュ方式がある。この方式では、クライアント側にデータベースをアクセスするためのキャッシュを用意して、キャッシュ内に必要なデータがある場合はDBサーバーからデータ転送を止めることにより、転送データ量を削減している。クライアントキャッシュ方式を利用する場合は次の点を注意しなければならない。-複数のクライアントとDBサーバーとの間で、キャッシュの内容を自動的に一致させる。-異なるクライアント上で実行するトランザクション間の同時実行制御が行われる。分散型データベースでは、ネットワークで結ばれた複数のデータベース間で、更新情報のやり取りを行うことで、データの整合性を保つ''レプリケーション(複製)''と呼ぶ作業が必要になる。''2相コミットメント''は、分散型データベースの整合性を保つための仕組みの一種である。クライアントからのトランザクション処理をした結果、そのコミット要求に基づきサイトAとサイトBに対してコミットメント処理が行われる。その結果、サイトAでは正常終了し、サイトBでは異常終了した場合、更新処理の整合性が失われ、データベースの内容が矛盾してしまう。そこで、トランザクション処理の結果をすぐに確定するのではなく、コミットメントもロールバックもできる中間状態(''セキュア状態''という)を設定し、その後にコミットメント処理を行うといった2段階の処理を行う。分散データベースを構築する際に、データをどのように分割するかによって、次の分類が存在する。[#z9d76e24]-同種のデータを分割して管理することが可能になる。--例えば、支社別の売上高を各支店ごとに管理することが可能となる。[#o7adc19a]-異なる種類のデータを分割して管理することが可能になる。--例えば、顧客データを営業部のDBで管理し、商品データを開発部のDBで管理することが可能となる。[#m36962b2]-集中管理方式--データディクショナリを保有するサイトに負荷が集中することがある。--データディクショナリを保有するサイトの障害が分散データベース全体の重大な障害になり得る。-分散管理方式--各サイトにデータディクショナリを重複保有しない場合、表の構造の変化が発生してもすべてのサイトの内容を変更する必要がない。--各サイトにデータディクショナリを重複保有する形態では、問い合わせに対しては他のサイトの内容を調べる必要がない。[#d73f29b9]-分散データベースではデータが分散しているため、DBの整合性について注意を払う必要がある。--もし1つのサイトだけ更新され、別のサイトが更新されないことがあると、各サイト間でデータの整合性が取れなくなってしまう。-そこで、分散データベースにおいて、データを操作する際に使われている方法が2相コミットメントや3相コミットメントである。[#r666ad2e]-分散データベースにおいて表を結合するには、特に通信量に注意する必要があるため、セミ・ジョイン方式が用いられる。[#ra9be431]-結合条件に含まれる列だけをまず送信し、結合を行う。結合条件に合致した行だけを元の表に送信し、実際の結合を行う方法である。-条件に含まれる列、結合に合致した行だけについて送信を行うので、通信量を減らすことができる。[#i0a97c3d]-DBの利用者から見て、データが分散していることを意識しないで利用できること。[#tb633700]-DBの存在する位置を意識しないで利用できること。-基本的にはデータとデータベースサイト(DBが存在する場所)の対応表を保持する必要がある。--この管理表を分散システムのカタログ管理という。-管理表についてもそれぞれのサイトで重複して持つ、あるいは1つのサイトが代表して持つ、それぞれのサイトで分割して持つなどの方式がある。[#r88acd29]-位置に対する透過性と一体である。-データ移動は、今後のネットワーク性能の向上によって、頻繁にそして大量に行われる可能性がある。[#r17131b5]-1つのデータが複数のサイトに分割され格納されていても、意識せずに利用できることをいう。-利用者に意識させないような問い合わせ機能を''分散問い合わせ機能''という。--特に分散システムでサイト間にまたがる結合は負荷がかかるので、色々な方式がある。--基本的には、どちらのサイトにデータを転送して演算をするかなどを予測して、最も時間のかからない方式が採られる。分割の種類は以下の通りである。-水平分割(水平フラグメンテーション)--水平方向(レコード単位)に分割する。--分散したサイト間にまたがる和(UNION)に関係しする。-垂直分割(垂直フラグメンテーション)--垂直方向(項目単位)に分割する。--サイト間にまたがる結合(JOIN)に関係する。[#hd390009]-1つのデータが複数サイトに重複格納されていても、意識することなく利用できることをいう。-更新を伴うと、重複データも自動的に即時あるいは一定時間経過後、もれなく更新する仕組みが必要である。-現実のDB製品では、レプリケーション機能として、この重複に対する透過性を少しでも満足させる仕組みを提供しているが、データ重複に対する透過性を完全に満足させるのは困難である。分割の種類は以下の通りである。[#g75fe8a3]-あるサイトで起こった障害を意識せずに利用できることをいう。-具体的には、障害の発生したサイトは停止するが、それ以外のサイトは続行するか、障害の発生したサイトの代替を別のサイトが行うなどの手段が考えられる。[#y96aa4b4]-各サイトのDB管理システムが異なったデータモデルであっても意識せずに利用できることをいう。-この考え方は、特にマルチDBシステムという名前で1980年代の初めから研究されてきたが、その過程で明らかにされた問題の多くは解決が困難であることが証明されている。--現実的な解答の1つが、クライアントサーバー型DBであり、DBの共通アクセスインタフェースである。やさしく学ぶデータベース技術』-『ネットワークとデータベース。