レベルエンター山本大のブログ

面白いプログラミング教育を若い人たちに

BLOCKVROCKリファレンス目次はこちら

ある意味RACより使えるやん Oracle Streams

相変わらず大きいプロジェクトでばたばたと色々やってます。

ひょんなことから、システムの可用性設計に関わることになって

当初、めちゃくちゃ作りこみで何とかしようというアイデアしかなかったところへ、

頭をひねってOracle Streamsというのを導入しようということを提案したんです。


OracleStreamsというのは、OralceDataBaseに組み込まれている機能で、(9iから)

DBのレプリケーション機能です。


で、お客さんが運よく食いついてくれて、さあ導入のために動き出せると言うことになりました。


で、Oracle Streamsというのを使って色々やってるわけです。

まぁこういう技術検証と方針設計が一番楽しいですね。

(付け焼刃の提案、、、とか色々批判はあるかもですが、まぁ事情が色々ありなのでその辺はご容赦。)




OracleStreams仕組みをざっくり言えばこうです。


1.反映元のDBのREDOログから、反映元DBに投げられたSQLを引っ張り出す。

2.反映元DBに設定したキュー(OracleにはAQというキューシステムがある)に(1)で引っ張り出したSQLをためる。

3.反映先になげる。反映先側もキューを作っていてそれで受け取る。

4.反映先で、もらった順にSQLをDBに適用する。


とういうことで、SQL(厳密にはLCRと呼ぶ)で変更を伝播するから

DMLだろうが、DDLだろうが適用できて、メッセージが小さいために

同期タイミングのタイムラグが短いのです。

双方向でのレプリケーションも色々と考慮されているので夢が広がります。


ほんとに、ローカルで検証している段階では、

タイムラグはほとんどなくて、即時同期が取れてる

こりゃ、相当な要件でもないかぎりRACいらねーと思ったり、、、



問題は、日本語情報が少ないことです。

Amazonで本を探すとちょっと古い洋書しかありません。

早速購入して読んでみたけど、この本結構イケてて、

基本の仕組みから丁寧にかかれてます。


Oracle Streams: High Speed Replication And Data Sharing (Oracle In-Focus Series)

Oracle Streams: High Speed Replication And Data Sharing (Oracle In-Focus Series)


双方向で同期するっていうけど、まったく同じタイミングで双方向共に更新が入ったらどうするの?とか
ちゃんと答えがあるし。

いやー、新しいおもちゃって楽しい。


詳しいお話はまた今度。