TOPシステムトレンド> データベースとはどんなソフトウェアか
近未来データベース
近未来データベース

第1回:データベースを取り巻く状況
著者:NTTデータ先端技術  鈴木 幸市   2005/8/8
前のページ  1  2  3   4  次のページ
データベースとはどんなソフトウェアか

   今までのことをまとめると、データベースとは次のようなソフトウェアであることがわかります。
  1. 複数のアプリケーションやユーザが同時に使う共通データへの読み書きを正しく行えるようにコントロールする
  2. メモリには収容できない大容量のデータをきちんと読み書きする。この場合、データは通常磁気ディスクに格納します
  3. 一旦書いたデータは、サーバがクラッシュしても、ディスクが壊れても、極端な場合、天災でデータセンターが全壊しても守る。データを守る程度は、実際にはかけるコストにも依存します。データを守る程度を上げるほど、システムの建設あるいは運転コストは上がります
  4. アプリケーションが容易にデータを操作できるようにインターフェースを提供する

   データベース管理システム(DBMS:DataBase Management System)でまず勉強するSQL言語は上記のうち主に4の部分です。Webサーバに限らず、ITシステムの中ではデータベースはSQL以外にも多くの共通機能を提供しているのです。


磁気ディスクの特性がデータベースの性能に影響する

   データベースはメモリに入りきらない容量のデータを複数のアプリケーションが正しく読み書きできるようにしています。そのため一部の例外を除いてデータは磁気ディスクに格納します(メモリに入りきる程度のデータを対象とするメモリデータベースというのもあります)。

   データベースはデータをまず共通のメモリに蓄積し、これを必要に応じてディスクに書き出し、あるいはそれを再び共通のメモリに読み込むことでデータの読み書きを行います。

   しかし磁気ディスクへデータを読み書きするために必要な時間は、メモリと比べると極端に遅いのです。メモリにも一次キャッシュ、二次キャッシュ、主メモリといろいろの種類があるので一概にいえませんが、メモリの方が1万倍から100万倍速いのです。

   しかも磁気ディスクでは、回転するプラッタの上でヘッドを物理的に移動させてデータの読み書きをするので、データがばらばらなところにあると、ヘッドの移動にもかなりの時間がかかります(シーク時間といい、ディスクの性能の1つです)。

   データがばらばらなところにあると、読み書きはプラッタの回転待ちとヘッドのシークの時間がかかることになります(図5)。

ランダムアクセスの例
図5:ランダムアクセスの例

   一方データが連続した場所にあると、シーク時間が要らないので、回転待ち時間だけになります(図6)。

シーケンシャルアクセスの例
図6:シーケンシャルアクセスの例

参考文献1: 鈴木 幸市、藤塚 勤也、「RDBMS解剖学」、2005/2、翔泳社、ISBN:4798108642
参考文献2: 宇野 俊夫、「ディスクアレイテクノロジRAID—ハードディスクの構造からディスクアレイによる高信頼性まで」、2000/7、エーアイ出版、ISBN:4871937704

   このように磁気ディスクの性能はメモリよりも極端に遅いだけでなく、読み書きのやり方でも変わりますので、データベースではディスクへの読み書きを効率的に行うように工夫しています。

   例えば書かれたデータをばらばらに配置されたディスクに書き込むのはランダムアクセスになって遅いので、その代わりにデータの変更分だけをログとしてシーケンシャルアクセスで書き出し、ランダムアクセスをできるだけ減らすようにしています(図7)。

データベースでのディスクへの書き込み
図7:データベースでのディスクへの書き込み

   ランダムアクセスを行う場合は、データを書き換えたときに即時に行うのではなく、他の部分の書き出しと組み合わせて最も効率のよいスケジュールでデータを書くようにします。これはカーネルの機能を使ったり、データベースエンジンに独自のキャッシュ制御を実装することで実行します。SQLを解釈実行する場合も、最も効率的な処理手順を見つけながら実行をしていきます。

   もちろんディスクへの読み書きだけでなく、複数のアプリケーション(プロセスやスレッド)間における処理の交通整理も重要で、これらが絡み合って待ち合わせが多くならないような工夫も必要です。

   重要なことはディスクの性能がデータベースでは重要だということです。1台のディスクの性能には機械的な限界がありますので、RAID構成にして複数のディスクにデータをうまく分散させ、見かけ上の性能を上げる(ストライピング)工夫も有効です。CPUの性能を上げるよりもディスクの性能を上げる、またメモリの速度を上げることもスケールアップするためには有効な手段です。

前のページ  1  2  3   4  次のページ


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


INDEX
第1回:データベースを取り巻く状況
  はじめに
  なぜデータベースのスケールアウトは難しいのか
データベースとはどんなソフトウェアか
  信頼性