検索

並列処理を基本理念に開発されたTeradataデータベース


Teradata はその名の通りテラ・バイト(1兆バイト)級のデータを処理することを念頭に設計され、今から約30年前に意思決定支援のためのデータベースとして産声を上げました。今でこそテラ・バイト級のデータウェアハウスというのは珍しくありませんが、当時は CPU やディスクの性能も貧弱であり、その実現は壮大なチャレンジでした。そこで、大量のデータを高速に処理するために設計者たちが導き出した結論が “並列(パラレル)処理” です。

並列処理の基本的な考えは、「ある作業を N個に均等に分割し、それを N個のプロセッサーで処理することができれば、作業は N分の1 の時間で終えることができる」というものです。例えば、「100枚のランダムなトランプの束の中からハートを抜き出して昇順に並べなさい」という命題があったとします。この作業のパフォーマンスを上げるにはいくつか方法があります。1つはがむしゃらに調べる方法です。これは、コンピュータに例えると、CPU のクロック数を上げることに相当します。しかしながら、これにはおのずと限界があります。もう 1つの方法は、自分と同じような能力の人を探して、その人と作業を均等に分担して調べるという方法です。2人で作業すれば作業時間は理論的には半分になり、4人で作業すれば 4分の1 になります。ここでのキーワードは、“同じ能力” と “均等な配分” です。4人の中で極端に作業の遅い人がいても全体の処理は 4分の1 では終わりませんし、作業配分にばらつきがあっても同様です。“同じ能力” の人たちが “均等に作業を分担” して、初めて最高のパフォーマンスが得られるのです。

この概念をそのままデータベースの世界に当てはめたのが、Teradataデータベースの基本的な並列アーキテクチャになります。Teradataデータベースの場合、パフォーマンスを向上させるにはノードというプロセッサーを追加することにより実現します。

Teradataデータベースは、後で説明するハッシュ分散方式により、それぞれのノードが担当するデータを均等に分散するため、どのような非定型クエリーにも身構えることなく自然体で臨むことができ、その結果システムのパフォーマンスを最大限に引出すことが可能になります。

“並列処理” を語る上で、もう一つ重要な要素は、「並列度は処理の始めから終わりまで一貫しているべきである」という考えです。仮に、先ほどのトランプの例題で、手順の一部を一人で行なわなければならない場合、前後の手順がどれだけ並列で処理されようとその一箇所がボトルネックになり、並列処理の利点を十分に発揮することはできません。これは砂時計に例えて考えることができます。砂時計の砂の 1粒 1粒がデータであり、それが上から下に処理されて流れていく様子を想像してください。砂時計の上下がどれだけ太く並列処理できる状態でも、中央のくびれがボトルネックになっています。砂時計の仕様としてはそれでいいのですが、コンピュータの場合は、くびれが全く無いドラム缶のような姿が理想的と言えます。

“並列処理” を謳っている多くのデータベース製品は、実際は処理の一部が並列で処理されているに過ぎません。これに対して、Teradataデータベースの並列処理は制約が一切無いため、まさしくこのドラム缶と同じと考えられます。しかも、ノード数を増やすことでこのドラム缶の太さも自由に変えることができます。“あらゆる処理を並列で行なう”、という高い理想があったからこそ実現できたアーキテクチャであり、その設計思想は 30年経った今でも脈々と受け継がれています。

Teradataデータベースのデータ格納方式

データベースにおけるデータの格納方式には、“レンジ分散” と “ハッシュ分散” という大きく 2つの方法が存在します。

レンジ分散とは、それぞれのディスクの用途をあらかじめ決めておき、データを特定のルールで該当するディスクに格納する方式です。例えば、「店舗A に関する情報はディスク1 に格納し、店舗B に関する情報はディスク2 に格納する。あるいは、1月から 3月の売上情報はディスク1 に格納し、4月から 6月の売上情報はディスク2 に格納する」といった方法です。この方式の場合、あらかじめどのディスクに何の情報が格納されているのかが分かっているため、チューニングを施すことにより定型的な検索のパフォーマンスを向上させることができます。しかし、それぞれのディスクに格納されるデータ量に偏りが生じるため、チューニングが困難な非定型検索に対する応答時間は一定しません。また、データが増えたり構成を変更したりする場合は、データを再分散させるために物理設計の見直しとデータの再ロードが必要になります。

これに対して、Teradataデータベースが採用しているハッシュ分散方式は、独自のハッシュ・アルゴリズムに基づいて、1つのテーブルのデータをその名の通り行単位にハッシュ(細分化)し、それぞれのディスクに均等に格納します。そのため、どんな複雑な非定型検索にもむらなく応答を返すことができます。また、管理面でも大きなメリットがあります。まず、ディスクの用途を定義する必要がないため、物理設計に頭を悩ませる必要はありません。また、基本的には特定のディスクにデータが偏るという事態は発生しないため、容量不足のディスクの内容を分割して再チューニングするといった操作も不要です。Teradataデータベースの場合、ディスクの増設やノードの追加を行なう場合、機器の接続後に “reconfig” というコマンドを実行するだけです。このコマンドにより Teradataデータベースは新しい機器構成を自動的に認識し、増設されたディスクも含めてデータを均等に配分し直します。このように、Teradataデータベースのハッシュ分散は、意思決定支援に欠かせない非定型検索に最適であると同時に、設計や管理を容易にするというメリットももたらしています。