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

    • 更新前データをメモリの中にとって、必要になったトランザクションにそいつをパスする。
    • 変態。
  • DB2

    • 参照ロック・占有ロックの法則に従い、素直に後から来た参照系をブロックする。
    • 要するに、滅茶苦茶にテーブル設計して参照・更新の密度あげちゃうとOracleに素で負ける。

比較2:インスタンスとDBの関係

比較3:レプリケーション(未完)

  • Oracle

  • DB2

    • 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に至っては複数層もあるがや。(知識として要求してくるところは違うが)
  • 複数に分散しても、リソース取りすぎとかで著しく性能劣化しませんよーと言っている気がする。

pureXML

  • XMLに特化したデータ型があるらしい。
  • インタフェース境界を越えてプログラム中に取り込んだデータモデルが何故取込前の形に・・・と拒絶間を覚えるもコンセプトは分かる。
  • が、明らかに人が変わりばんこに代わる長期運用に向かない。textにぶっこむのでは不満なのか?
  • あと、検索系とか何かのメタを保存するみたいな用途が考えられるものの、商用DBを用いるようなケースでは、スケーラビリティを考えると別途検索エンジンを使うべきじゃないのか・・・など色々突っ込みどころがある。