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さんです。

子育てAdvent Calendarに投稿してみた

このエントリは子育てエンジニア advent calendar 2012の20日目のエントリとして書いています。

f:id:kingyokkun:20121209193854j:plain

 

昨日GMOメディアを退職して、束の間の休日を楽しんでいるDBエンジニア(twitter@kingyokkun)です。

 

あまりひねりもなく、思いつくまま今まで子育てしながらエンジニアやってきての辛かった事や反省を吐きながら、ちょっと親ばかっぷりでも発揮してみようかと思います。

写真のとおり、うちには息子(5歳)と娘(1歳)の子供がいます。

 

まず、上の子がまだ赤ちゃんの時ですが、当時は小さいながらもOracleのパートナーをしている会社で働いていました。

そういう会社なものですから、資格などはやはり取った方がいいんですよね、当時5000人規模の会社(グループ全体)のDB設計の仕事やりながら、子供の世話やりながら、Oracleのプラチナ取れと言われちゃいました。

そのための時間を取っていいと言われたものの、そんな5000人って結構な規模ですよ。片手間でできませんって。

よそに出向いての仕事だったので、勉強用のVM入れてるPCを家に持って帰れないので、家と仕事場と別に環境作らないといけないし。

それにプラスして子供の睡眠時間が安定してない時期で、嫁も気が立っていて僕が寝かしつけをしないといけない日もちらほら。

3時間以上もぐずっててようやく1時過ぎにVM立ち上げるなんて時もありました。

で、結果はまあ、あきらめ・・・。Web企業に転職したから無理に取らなくても良くなったし・・・。

 

で、次は二人目。

一人目の時はまだ一日2,3時間はなんとか時間を作れました。

二人目は更に無理でとにかく土日が無い。

子供も4,5歳になると体動かさせたり一緒にちょっと勉強させたりしないといけいないのですが、

奥さんは下の子の世話をしないといけないので上の子まで手がまわらないんですよね。

結局、自分がいろいろしないといけない。

それでも、勉強会の時などは嫁に「ごめんねー」って言いながら出てましたけどね。

 

そういった状況で資格の勉強に限らずエンジニアとして勉強し続けようと思うと

子供がいる状態ってのはやっぱり大変です。

でも、早く帰ってきた日に子供達がだっと駆け寄ってくると

やはり子供がいるって本当にいいなーと思っちゃうものです。

 

で、反省と言うか子供がこれからできるエンジニア(特にインフラやDBね)には

少しお金をかけてでも勉強しやすい環境を作る事が肝要だと言っておきます。

資格の勉強していた時ってまだPCが32bit中心だったので

VM2つ立ち上げるとアップアップになってたんですよね。

一応、メモリは最大の4Gにしていたのですが。

あ、ちなみにOracleRAC作らないといけないので最低2つVMあげます。

現在は64bitで8GメモリPCとか手に入るから当時よりも勉強しやすい。

そのスペックのPCでも軽くて小さいので簡単に持ち運びできる。

ここだけは決してお金をかける事をけちらない事をお勧めします。

まあ、自作サーバー上げたり、最近ならクラウド使えばいいですが

インフラやDBの勉強って壊したり作り直したりが多いので

何と言ってもVM便利ですからね。

後は、できれば子供が来ない部屋を作れたら最高ですね。

 

でも、勉強の合間に子供と遊ぶのはとっても息抜きになります。

勉強できなくなるからとか考えずに気軽に子供作りましょうね。

本当に、子供のためなら頑張れると思う時が来ますので。

 

それでは取りとめない話ですが、こんなところで。

子育てエンジニアさん、これからも頑張りましょう!

 

明日は@studio3104さんです。

随分前だがJPOUGでしゃべった記事

すごく前だけど、資料のせとこ。

7月21日www。

 http://www.slideshare.net/yoshitoueki/btoc

どうも面倒くさがりやの私はブログが疎かになります。

技術的なまとめにしようかと思ったんだけどなー。
 
ついでに自分用に。

DevOps Days Tokyo 2012

弊社主催でDevOpsイベント開催です!

DevOpsとはクラウドの普及と共に新しい運用手法を考えて

さらなる開発にとどまらずサービスのアジャイル化をすすめるというものです。

普段の記事を全く書いてないので、

まるでブログ見てくれている人がいませんが、

目に留まった方はよろしくですー。

私自身は現在調整、当日は何かスタッフやってまーす。

http://connpass.com/event/489/

NoSQL

NoSQLについて少々。

私は少しだがmongoDBを扱わしてもらっている。

その上で言うが、

RDBの設計をきっちりできない人は絶対に手を出さない方がいい。

どうも、早いとかスキーマレスなどと聞いて

苦手なSQL作成や表定義を補ってくれるものと思い

手を出したがる開発が多いが

あれはRDBとは別のもの。

RDBの代わりに使うと運用やサポートが死んじゃう。

RDBってのは誰でもそれなりには使えるようになっているので

まずはそちらでまともに設計できるようする事をおすすめします。

今日は眠いから理由は今度にしよう。

JPOUG飲み会に参加した。

JPOUGというOracleコミュニティの飲み会に参加してきました。

http://www.jpoug.org/

http://www.facebook.com/events/205313029570619/

OracleossのDBのようにコミュニティって無かったのですが

Oracle Lovers、JPOUGとできてきました。

ボードメンバーの方たちのような実績は無いですが

自分でも何かお手伝い・協力できればと思っております。

次の活動の際には何かしゃべってくださいよと言われたけど、

あのメンバーの前でしゃべれる自信が無い・・・。

でも、LTくらいならやりたいな。ネタもあるし。

Oracle Open World Tokyo2012

OOWに行ってきた。

前回はExadata、その前はOracle10gが目玉だったが

今回は目玉が無いなーと感じていた。

でも、やはり行くと勉強になる。

いろいろとOracleがやってきたのとは技術が出てきたりするけど

Oracleはそれらを吸収してパッケージに入れちゃう。

賛否両論あるけど、Oracleのやっている事を見ると

自分が考えないといけない事が何なのか参考になる。

なんだかんだで行って良かった。

 

そして、生小泉元総理を見た。

技術者じゃないからまあなんだけど、

やはりオーラがある人だと感じた。