DWHっぽい事でも書いてみる

 この記事はJPOUG Advent Calendarの21日目の記事です。

 

以前、JPOUGのイベントでLTやらせていただいた植木(id:kingyokkun)です。

私ごとながら、今月末付の12月19日最終出社日で退職になります。

年明けまで2週間程度ニート気分を味あわせてもらってます。

 

本日はDWHっぽい事でも書いてみようかと思います。

カテゴリをBigDataにしてますが、

残念ながら今までテラバイトクラスのBigDataは扱ってません。

MiddleDataくらいの話だと思ってくださいませ。

うろ覚えで書いているところもありますので、

曖昧なところがあればご容赦を。

 

まず、Oracleの集いなのでOracleでDWHを作る事を考えた場合

DWHもどき作るのって楽勝ですよね。

DBリンク越しにマテビュー使えばOK。

以上、終了。明日の記事は・・・、

では納得いかないと思いますのでもう少し続けます。。

実際、自分はマテビューでDWHを作った事は無いのですが

データ編集用のDBから参照専用のDBにデータを配るような処理を昔作りました。

ここでまず必ず引っかかるところですが、

マテビューってDBリンク越しだとON COMMITで作れないんですよね。

なので、編集処理用のシェルなりPL/SQLなりから

DBMS_MVIEW.REFRESHを呼び出す必要があります。

DWHなら即時反映する必要は無いと思うのでこれで全然OK。

ただし、この処理はREFRESHが完了するまで待ち状態になります。

なので、パラレルで処理したい場合や

複数のサーバーにデータを反映させたい場合は

DBMS_JOBを使ってREFRESH処理をキューに置いてくるような作りにすると

いい感じで命令だけ投げて、

結果は知らんけど投げてきたよーと応答がすぐに返ってきます。

正常終了したかどうかはDBMS_JOBで呼び出した処理に

終了確認させるような作りにすればOKです。

マテビューって本当にいいですよね。

RDBだとポスグレやMySQLも使ってますが、

Oracleならではの機能では本当にいい機能の一つだと思います。

 

んで、次はOracleに限らず他のRDBの場合。

DWHって大きい会社はともかくとして

有償のDB使いにくいんじゃないかなーとか思います。

私も持ってくる元はOracleだけど、

持っていく先は別のDBにしていました。

DWH用のDBですがPostgreSQLがとにかくおススめですね。

DWHとしてのPostgreSQLの素敵なところはBitmap Scanです。

OracleだとEEでしか使えないBitmapを使える。

最近、Amazon Redshiftなんてサービスができましたが、

あれも本体はポスグレのforkです。

多分、同じような理由からポスグレを選んだのではないかと思います。

他にはMySQLベースの列指向DBのinfiniDBなんてのもありますが

INSERT~SELECTやCREATE~AS SELECTが使えないとか

INSERTが遅い(基本、LOAD処理を使う)などといった問題があり

ちょっと最初に考えないといけない事が多いので

DBAが簡単に作ろうと思ったらPostgreSQLが一番だと思います。

使い方によってはMongoDBなんかもいいですが、

あんまり複雑な事はやらせられないですね。

 

次にデータを移すETLですが僕はPentaho ETLを使いました。

ぶっちゃけ、とりあえずDWH構築するなら自作スクリプト作った方が早いですが、

後の運用を考えるとETLは使った方が良いですね。

インストールは簡単。

vnc環境、Java環境を用意しておいてこのへんから取ってくる。

後は、どこかのディレクトリで解凍すれば完了です。

data-integrationディレクトリ配下のSpoon.shを叩けば立ち上がります。

 

そして、実際に処理を作成。

まずはConnection情報作成。

f:id:kingyokkun:20121221174733j:plain

 

そしてTransformation作成。

基本はTable InputとTable Output、場合によりInsert/Updateを使用。

f:id:kingyokkun:20121221175603j:plain

 

最後にJobを作る。

f:id:kingyokkun:20121221175837j:plain

 

これでDWH完成です。

Hadoop等とのデータのやり取りもできるし、

使いこなせばなかなか楽しく使えると思います。

 

本番環境はお金をかけてOracleを使うけど、

データの分析にはなかなかお金をかけられない。

そもそも、お金をかけられないから実績も作れない。

そんなところは結構あるんじゃないでしょうか。

そんな時はこういったossでDWHを気軽に作って

実績を上げてみると良いかと思います。

 

今回のブログを書く直前に退職したので、テスト的に使える環境がなくて

ちょっと大変でした。(PCに急遽Win版Pentaho ETL入れたり。)

なんか知らんがうちのPCでprtscrがうまく効かないし・・・。

まあ、とりあえず形づけられてほっとしました。

 

明日は@yamadamnさんです。