今回のアンチパターンは主にデータ設計に関する部分。
Contents
同一データの使用
以前説明したアンチパターン「同一値を複数テーブルに配置」に少し近い。テーブルが無駄に分かれており、同一データ(とおもわれるもの)が複数テーブルにある。または意味不明な複数のテーブルが存在している。
デメリット
- データ同士の同期が取れなくなり、いずれ差分が起こる
- どのデータが正かがわからなくなる
- 時間がたつにつれ複数のテーブルに同じ処理をしなければならないため、追加開発のコストが高くつく
対策
- 時間がかかっても不要なデータ重複をなくしていく
- 全体のデータモデル図を書く
- 安易にこのデータをこちらにコピーみたいなことを行わない
DBの不要な連携
処理に必要なデータが別々のDBに散らばっているため、不要な連携が行われる。追加開発において、既存部分への変更を最小限にするために安易にDB連携を行ってしまうことが多い。
なお「同一データの使用」を避けるために、この手法がとられることもある(元のデータに変更を加えたくないため。)。
デメリット
- SQLが非常に遅い(ネットワークの通信速度はメモリアクセスに比べてはるかに遅いため)
- 他のデータベースの影響を受ける(あるDBが止まると自分も影響を受ける)。
対策
- 時間をかけて再構築を行う
サーバーの移行やバージョンアップでSQLテストを行わない
バージョンアップによる不具合。データベース以外にも通常のアプリなどでもあるため、バージョンアップを甘く見ないこと
デメリット
- SQLの遅延(実行計画はバージョンにより大きくかわるため)
対策
- 開発環境にてバージョンアップを上げておく
- 仮想環境ツールなどを有効に使うこと
- 業務に影響度が大きいSQLをリストアップしておき、優先的にテストを行う