むかしむかし、僕のブログでこんなことを書きました。 (OSSなDWH InfiniDB の話 ⑤ ~リアルタイムDWH化について) もう一年以上経っちゃいました・・・。この話、もちろん忘れていたわけでもなく、需要があまりなかったので、「ふーん、世間ではそんなにニーズがないのかな?」と思いつつ、特になにもしていなかったのですが、ようやく世間が僕に追い付いた(嘘)ので、そろそろ書こうと思った次第です。
前回までのおさらいで結局リアルタイムDWHってな~に?
実は自分もいまだによくわかってないのです。googleで「リアルタイムDWH」検索しても、これか!って思うページが出てきません。 しかし、よく見かけるキーワードが、「10TBのデータロードを高速に実現!」とか「Hadoopを利用したなんとかノードで並列のなんとか」とか、なんだ・・結局DWHとしてはリアルタイムじゃないんじゃん・・とか思っちゃうわけです・・・とか書くと前回の同じ内容になってしまいますのでここでは割愛します。私の実現したいことは
・高速な検索 ・複数に散在しているデータの更新をリアルタイムにDWHに集約したい ・なおかつ、サービスで利用しているデータベース群には、分析のためにアクセスさせたくない!
という要件を満たしたいのです。経営ダッシュボード等を含むリアルタイムBIは、今まさに、色々なところで実現されております。しかし、いまだに追い付いていないのは、データ(DWH)のリアルタイム化。これが実現出来れば、業界初の試み!(自分調べ)になるわけです。きっと数あるDWHのベンダーから掲載差し止め要求がくること必至です。
このままですと、前回同様能書きで終わってしまいますので、ある意味、ニーズに沿った環境で、その「リアルタイムDWH」をどう実現するのかを、順序だてて書く関係で、このページだけで書ききるのは困難なため、数回にわけて掲載していきたいと思います。
とりあえず!
こんな環境で、こんなことを結果的に実現したいと思っています。それに行き着くまでの、作業過程は必ず書きますので、期待して待っててくださいね。
▼ 実現したい最終構成 以下のような形にしたいと考えております。キーワードはリアルタイムです。
▼ (自分として)の目標 ・商用DB(DWH)は一切使わない、つまりお金はかけない(ハードウェアは例外) ・あくまでもリアルタイム反映が目標なので、データロード等の行為は一切行わない ・アドホッククエリー(ad hoc query)でも充分なレスポンスタイムを実現できること
▼ 環境構成 上記に目標を実現させるための構成としてどれが一番スムーズにそれが実現できるか考えた結果
・MySQL 5.5 ・InfiniDB (MySQL 5.1ベースの列指向DWH)
を利用することに決定しました。InfiniDBは、最近国内のサポートも正式に決まり、これから世の中に出回っていくカラムベースのDWHです。これの、フリー版を利用します。あとは、いわずと知れたMySQL、この2つを選択した理由は、一言・・「オール MySQLベースだから」ですw ベースが同じものであれば、レプリケーションもきっとできるし、問題がでた場合も、容易に壁を乗り越えれそうだからです。
上記に踏まえ、 ・MySQL データベースサーバが3台、 ・MySQLデータ連携サーバが3台 ・InfiniDB データベースサーバが1台 の合計7台構成で実現します。
MySQL データベースサーバについては、既に構築済みということを前提に次回は掲載します、乞うご期待!!