現在JavaScriptの設定が無効になっています。このページを利用するにはJavaScriptの設定を有効にしてください。トップ全記事一覧テクノロジー2009.02.10MySQLによるデータウェアハウス構築こんにちは、オークション事業部のWangです。データウェアハウス(以下DWH)という言葉になじみのない方は検索していただいたほうがよいかもしれません。使用可能な状態に保管されたデータの集合体、とお考えください。オークションでは、具体的には出品、入札、落札などのトランザクションデータや、それをいろいろな単位で集計したデータなどが該当します。ここでいう単位というのはたとえば、日ごと、週ごと、月ごとや、以前の記事でも紹介されているカテゴリといったものになります。活用ではなく、構築の観点から、お話したいと思います。DWHを構築する際には、通常リレーショナルデータベース(以下RDB)を使用します。私もヤフー入社まではOracle一辺倒だったのですが、現在はMySQLを採用しています。sourceであることからコストメリットは非常に大きいのですが(特に直接サービスに寄与しない情報系システムへの投資は慎重にならざるを得ないケースが多いですし)機能面にも採用するに足る理由があります。MySQLの特徴として、ストレージエンジン(テーブルの種類)のバリエーションが豊富であるということがまずあげられます。中でも、DWHに使用するのであれば、MyISAMの右に出るものはないでしょう。DWH構築では、ELTプロセスという言葉がよく使われます。DWHへのデータの取込をはじめとする更新処理が非常に早いのです。MYDの3ファイルが作成される。いった特徴があります。更新処理が高速であるという特性に、(1)、(2)は大きく寄与しているのです。なるところですが、DWHの構築はバッチ処理で行われるケースが一般的ですので、実は問題ありません。処理をやり直したいのであれば、データを丸ごと消して最初からやり直せばよいのです。(もちろん、それが可能であるように論理設計をしておくことが必要ですが)同様の理由で、(2)の点もまず障害にはならないと思います。大規模DWHを構築する上で、個人的にもっとも重宝しているのが(3)の点です。実際ヤフーオークションのデータはなかなか大量であるため、単一サーバーで処理していると時間がかかりすぎてしまうことがままあります。完了したところで、参照用のストレージに各ファイルを丸ごとコピーしてくれば、ファイル操作のみでデータの同期が可能になるのです。(実際には、テーブルのフラッシングなどのおまじない、が必要ですが)また、行き届いたことに同じ形式で定義された複数のMyISAMテーブルをひとつのテーブルとして参照可能にするMRG_MyISAMというストレージエンジンも用意されていますので集計などのクエリはそちらに対して発行すればよい、ということになります。いうことでほんの一例に過ぎませんが、MySQLの特性を生かしたDWH構築手法を紹介させていただきました。MyISAMもバッチ処理専用ではなく、使いようによっては十分オンライン処理にも耐えられます。MySQLにはトランザクション機能をサポートしたInnoDBをはじめ、さまざまなエンジンがあります。なんだかMySQLをえらく持ち上げているようですが、念のため、私はMySQLの関係者ではありません。つね日ごろお世話になってますので、恩返しになれば、という気持ちはちょっとあります。機会があればお会いしましょう。今後とも、Yahoo!オークションをよろしくお願いいたします。JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。JAPANのサービス開発を支える技術やデザイン、文化を発信しています。Reserved.このページの先頭へ。