TOPシステムトレンド> テーブルの分割方法
近未来データベース
近未来データベース

第2回:データベースのスケールアウト(前半)
著者:NTTデータ先端技術  鈴木 幸市   2005/8/26
前のページ  1  2  3  4
テーブルの分割方法

   このようにテーブルを分割すると、それぞれのサーバの負荷は上げずに全体でうまく性能を上げることができるようになります。テーブルを分割するのも、無秩序にやるのではなく、ある基準を決めてそれにしたがうようにしたほうが都合がよい場合が多いのです。

   基準としては、図2に示したテーブルの中の特定のカラム(複数の組み合わせでもよい)の値を使うことが多いです。例えば、図5では「顧客ID」を使うのがよいでしょう。この顧客IDを使って、与えられたタプルをどのサーバに格納するかを決めます。その代表的な方法を表1で紹介します。

分割方法 特徴など
ハッシュ分割法 与えられたカラムの値に「ハッシュ関数」と呼ばれる関数を適用してサーバを決めます。この関数をうまく選択すると、サーバの負荷を均一に近くすることができます
区間分割法 与えられたカラムの値の範囲に応じて、どのサーバにデータを格納するかを決めます。例えば、カラムの値の範囲が1〜10,000の場合でサーバが10あれば、値を1,000ずつ区切ってどこに格納するかを決めることができます。比較的単純ですが、レコードを追加するごとにテーブルを調べて格納先のサーバを決める必要があります
ラウンドロビン分割 レコードを追加する度に、カラムの値とは無関係に順番にレコードを格納していく方法です。サーバの負荷は均一にできますが、後になってレコードがどこにあるかを調べるには、全部のサーバの情報を調べなければならなくなります

表1:テーブル分割の代表的方法


次回は

   今回はデータベースのスケールアウトのアイデアと方法について解説しました。次回は実際に分割した際の問題点を解説していきます。

前のページ  1  2  3  4


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


INDEX
第2回:データベースのスケールアウト(前半)
  データベースをスケールアウトする
  どこにどんなデータを配置するか
  水平分割でテーブルを格納する例
テーブルの分割方法