OracleからPostgreSQLへマイグレーション
Oracleのライセンス形態が変わり、使い勝手がよくなくなっているようで、OracleからPostgreSQLへの切り替えの話が時々出る。
弊社でも、Delphiプログラムのマイグレーションついで、データベースのOracleからPostgreSQLへのマイグレーションを数件やらせていただいた実績がある。
マイグレーション注意点
マイグレーションに際しては、SQL文の変更が必要になってくる。
外部結合演算子(+) の変更や、オラクル固有の関数などの対応です。
オラクル関数について、よく使われている(弊社実績)関数、nvl(), decode() については、PostgreSQLのfunction()を使うことで何とかなりそうだが
厄介なのは、外部結合演算子。**** OUTER JOIN に書き換えないといけない。意外とめんどい。
ある程度、クエリを理解して書き換えるような部分も出てくる。それなりに工数もかかる。
C#のデータベースマイグレーション
最近、C#でのOracleからPostgreSQLへのマイグレーションの話をいただきソースを借用いただき調査したのだが、
外部結合演算子(+)が思っていた以上に多い。
依頼いただいたプログラムがこれまでDelphiでのDBマイグレーションを行ったものに比べソース量が多いのは確かだがそれにしても多い。
しばらく原因がわからないまま作業を進めたのだが、ふと一点気づいた。
Delphiの場合、外部結合演算子(+)で取得データはクエリに含めず、コンポーネントのLookUpフィールドで取得しているのだ。
これが、外部結合演算子(+)を減らしているのだ。
コンポーネントでLookUpフィールドを使うのはめんどいなぁと思っていたのだが、意外な効用があったということだ。
おわりに
教訓。
C#の場合、積極的にデータベースマイグレーションを勧めるのはやめよう。。。。
Delphiだったら、OracleからPostgreSQLへマイグレーション、積極的勧めよう。
C#、Delphi以外は、、、話が来てから考えよう。
(この記事の内容は、あくまでも雑感です)