20170310雑記(DB2とOracleの比較)
次の現場でDB2からOracleへの乗り換えをしたいという話を聞いて、そういえばOracleはちょっと触ったけどDB2ってよく知らないなーとういことで、色々調べまわる。
Oracleとは
- Oracle社が提供するDBMS。
- 高い。1CPUあたり、5年で600万ぐらいのライセンス。
- 内部実装が変態で、ガンガンメモリに情報をのせてロックをあの手この手で回避する。
- 使い方が他のDBとかけ離れている。入り組んだ用途になると、メンテナンス可用性がだだ下がりに。
DB2とは
- IBM社が提供するDBMS。
- Oracleに比べるとかなり安いが、それでもン十万/年もする。
- 競合があると素直にロックして処理を止めたり、素直なインスタンス構成だったりする。
- Oracleが1インスタンス特化に対して、DB2は機能の集約を避けて、分散DBの可用性を前提に立っているようだ。
比較1:参照一貫性保証
すごく長いトランザクションAがあったとする。そのトランザクションが走っている間、他の短かったりするトランザクションが必要なテーブルをいっぱい更新したりすると、SELECTを投げるたびになんか値が変わって、トランザクションAの処理が超面倒くさかったりする。その対策として「トランザクションAが開始したときの状態をとれるように値を保証する」メカニズムを参照一貫性保証と呼ぶ。
-
- 更新前データをメモリの中にとって、必要になったトランザクションにそいつをパスする。
- 変態。
-
- 参照ロック・占有ロックの法則に従い、素直に後から来た参照系をブロックする。
- 要するに、滅茶苦茶にテーブル設計して参照・更新の密度あげちゃうとOracleに素で負ける。
比較2:インスタンスとDBの関係
比較3:レプリケーション(未完)
-
- すげー複雑なことができる。なにこれ。あとでみよう・・・。これスケールな設計にできるやつすげーな。(ライセンスは別にして)
- http://otndnld.oracle.co.jp/products/iserver/network/pdf/oracle8-repli.pdf
-
- PDFみた瞬間「あっ」ってすごく安心した。
- oshiete.goo.ne.jp
- Applyプログラムとやらにすべて集約する、Subscribeパターンみたいな感じなのかな?(適当)
- チューニングできなさそうだけど使い方さえ誤らなければ大丈夫そう。(あと簡単そう)
DB2特有の機能
https://www.ibm.com/developerworks/jp/data/library/dataserver/pdf/session6_introduction.pdf
ワークロード
- 処理をWORKLOADに分類して、優先度をつける仕組みみたいだ
- うん・・・器用貧乏だよねぇ。
パーティション機能
- つまり1インスタンスに複数DBインストールできる、というOracleメタなことをいっているっぽい。
- クラスタってOracleに至っては複数層もあるがや。(知識として要求してくるところは違うが)
- 複数に分散しても、リソース取りすぎとかで著しく性能劣化しませんよーと言っている気がする。