• データウェアハウス(DWH)は、列指向データベースで大規模なデータ集計や分析に用いられる
  • データウェアハウスとRDBでは、アーキテクチャが異なります。データウェアハウスは列指向DBで大規模なデータの処理を行い、RDBは行単位で入出力を行います
  • そのため、列指向DBを使うデータウェアハウスは、大量のデータの集計処理や分析処理をするのに適しています

データウェアハウスとRDBのアーキテクチャ

データウェアハウスとRDBでは、アーキテクチャが異なります

  • データウェアハウスは列単位で処理ができる列指向DB
  • RDBは行単位で入出力を行う

集計処理を行う場合は特定の行の値だけ処理をしますが、データウェアハウスとRDBはアーキテクチャの違いから次のように処理速度に差が生じます。
・データウェアハウスは必要な列のみ読み込むので高速の処理が可能
・RDBは行全体を読み込んでから必要なデータを取り込むので、処理が遅くなる

そのため、大量のデータの集計処理や分析をするには、RDBよりもデータウェアハウスの方が高速で処理することができるのです。

しかし、データの追加や更新をする時は、データウェアハウスの方が効率は悪化します。
データウェアハウスは列単位でデータを処理するために、追加や更新する時は不要なデータまで読み込まないと処理ができないからです。データの追加・更新を頻繁に行う処理は、データウェアハウスよりもRDBが適しています。

 

 

 集計処理にデータウェアハウスが使われる理由

特定の列のみのアクセスで済むことが多い集計処理などには、列指向DBであるデータウェアハウスには適しています。データの追加や更新が多いと性能が悪化ことを考慮して、データウェアハウスはデータの書き込み処理をできるだけ行わないように使用されます。

たとえばクレジットカードの利用履歴明細を例にとり説明します。利用明細テーブルは、カード番号、利用日、店番号、金額の4カラムを持っているとします。そして、このテーブルに対して、「利用日別の金額合計はいくらか?」というクエリを実行するとします。

この処理は、利用日をキーにしてソート後、利用日が等しいものについては各行の金額を足しこむ、という処理になります。逆のいい方をすると、カード番号、店番号は処理には一切必要ないということになります。

しかし、一般的なRDBの場合には、 行単位の入出力であるために、ユーザが好むと好まざるとにかかわらず、これらの不要カラムがメモリ上に読み込まれてしまいます。しかも使用されることはありません。1クエリが読み込む行(レコード)の数が莫大になってくると不要カラム(列)の読み込みも膨大となります。

列指向のDBであるデータウェアハウスでは、必要な「列」のみを読み込みますので、処理が大幅に高速となることがわかるかと思います。

 

 

列の検索を行う分析処理もデータウェアハウスが適している

分析処理では、さまざまな列を検索対象とします。
RDBでは検索処理を高速化するために少数の列にインデックスをはりますが、検索対象が増えると対応することができません。

その点、データウェアハウスは、列単位で処理が行われるために、高速での検索処理が可能です。
数多く検索が行われる分析処理においても、RDBよりもデータウェアハウスを用いた方が効率的に作業することができます。

 

 

本サイト上に掲載されているまとめ記事が、毎週ステップメールで受け取ることもできます。

 

 

参考文献