TOPシステムトレンド> はじめに




近未来データベース
近未来データベース

第3回:データベースのスケールアウト(後半)
著者:NTTデータ先端技術  鈴木 幸市   2005/9/1
1   2  3  次のページ
はじめに

   前回に引き続きデータベースのスケールアウトについて解説します。今回はデータを分割するメリットと、その実現性について検討します。
分割すると何がうれしいのか?

   さてデータを分割すると、特定のサーバで膨大なデータを一手に読み書きする必要はなくなります。

   一方、図1に示すように、このままではSQLの処理を行う際には、すべてのデータをいったんSQLの処理をするサーバに送らなければならなくなります。

データだけを分割した場合
図1:データだけを分割した場合

   これは通常、LAN(ローカルエリアネットワーク)を介して行われますが、この時の速度はサーバ内の磁気ディスクのデータ転送速度よりもかなり遅いのが現状で、単純にデータを蓄積しただけでは、かえって効率が低下する場合もあります。

   そこで、SQLの処理の内部構造に着目してみます。この内部構造を非常に単純にモデル化したものを図2に示します。

SQL文の処理の流れの概要
図2:SQL文の処理の流れの概要

   SQLの処理は、SQLの構文を解釈する部分(パーサ)と、この構造を理解して処理手順を決める部分(プランナ)、そして実際に処理を行う部分(エグゼキュータ)に分けられます。

   SQLの結果を受け取るデータはわずかでも、何百万何千万のレコードから必要なデータを持ってくるために、エグゼキュータでは作業の多くのデータをディスクから読み書きする必要があります。これが、SQLの処理で最も時間がかかる部分になります。

   この効率を上げるために、図2のプランナとエグゼキュータの間で処理を分け、図3のように、SQL処理部にはパーサとプランナを置き、エグゼキュータはデータを格納しているサーバで実行するようにできます。

SQL実行部を2つに分ける
図3:SQL実行部を2つに分ける

   1つのサーバで実行していた場合には、エグゼキュータはここですべてのデータを読み書きしなければなりませんでした。しかし図3の場合は、大きな1つのエグゼキュータを小さな多くのエグゼキュータに分割することができ、データの読み書きが同時に実行できるようになります。

   つまり複雑な実行手順を多くのサーバのCPUに分け、それぞれが扱うデータを小さくし、それが並列に実行できるようになるのです。

   SQL処理側では、これらの結果を集め、最終的な結果にまとめればよくなります。このように、「大きなSQLを小さくし、それらを同時に実行する」ことができるのです。

   このような並列分散データベースは、多くの可能性を持っています。現在でも1TBのデータベースを作るのは非常に困難です。これを数10台のサーバに分割できれば、1台のサーバでは数10GBのデータを管理すればよくなるのです。

   現在のディスクデバイスの容量が数100GBであることを考えると、これは不思議な気がしますが、単位容量あたりのデータの転送速度はたいへん遅いのです。

   データベースに課せられた性能要件は、データベース全体から必要なデータを迅速に見つけ、アプリケーションに渡すこと、アプリケーションから指示されたデータベースのデータ変更を迅速に行うことであり、数にすると毎秒数千のSQL文を処理することに相当します。

   しかし、いくらがんばっても1秒の間にディスクが読み書きできるデータの量は100MBのオーダーであって、例えば1TBのデータベース全体を集計しようとすると、データを読むだけで3時間もかかってしまうことになります。

   バックオフィスなどで、普段使用するテキストなどを格納するのに大容量のディスクは大変便利ですが、だからといってデータベースの容量をそのまま大きくできるわけではないのです。

   実際には、データベースの処理はディスクの入出力以外にも、トランザクション(後述参照)の処理に多大な時間がかかるので、1TBのデータを3時間で読むことすらも、実現には程遠い理想的な性能なのです。

   データ格納の単位を小さくして、必要な処理の規模が大きくならないようにすることが重要であることがおわかりいただけると思います。

1   2  3  次のページ


NTTデータ先端技術株式会社 鈴木 幸市
著者プロフィール
NTTデータ先端技術株式会社  鈴木 幸市
Unixにおける日本語ハンドリング、Oracleの移植、オブジェクトリレーショナルデータベースのエンジンの開発などに携わる。現在、NTTデータ先端技術にてLinux、PostgreSQLなどのオープンソースソフトウェアに関する技術を統括している。著書に「RDBMS解剖学」(翔泳社)、訳書に「オブジェクト指向データベース入門」(共立出版)など。


この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。

INDEX
第3回:データベースのスケールアウト(後半)
はじめに
  実現性は?
  トランザクションについて
近未来データベース
第1回 データベースを取り巻く状況
第2回 データベースのスケールアウト(前半)
第3回 データベースのスケールアウト(後半)
第4回 データベースレプリケーション
第5回 データベース技術者を育むために