skillup

技術ブログ

Database

アンチパターン データ分身の術+DBの不要な連携+バージョンアップ未テスト

投稿日:

今回のアンチパターンは主にデータ設計に関する部分。

同一データの使用

以前説明したアンチパターン「同一値を複数テーブルに配置」に少し近い。テーブルが無駄に分かれており、同一データ(とおもわれるもの)が複数テーブルにある。または意味不明な複数のテーブルが存在している。

デメリット

  • データ同士の同期が取れなくなり、いずれ差分が起こる
  • どのデータが正かがわからなくなる
  • 時間がたつにつれ複数のテーブルに同じ処理をしなければならないため、追加開発のコストが高くつく

対策

  • 時間がかかっても不要なデータ重複をなくしていく
  • 全体のデータモデル図を書く
  • 安易にこのデータをこちらにコピーみたいなことを行わない

DBの不要な連携

処理に必要なデータが別々のDBに散らばっているため、不要な連携が行われる。追加開発において、既存部分への変更を最小限にするために安易にDB連携を行ってしまうことが多い。

なお「同一データの使用」を避けるために、この手法がとられることもある(元のデータに変更を加えたくないため。)。

デメリット

  • SQLが非常に遅い(ネットワークの通信速度はメモリアクセスに比べてはるかに遅いため)
  • 他のデータベースの影響を受ける(あるDBが止まると自分も影響を受ける)。

対策

  • 時間をかけて再構築を行う

サーバーの移行やバージョンアップでSQLテストを行わない

バージョンアップによる不具合。データベース以外にも通常のアプリなどでもあるため、バージョンアップを甘く見ないこと

デメリット

  • SQLの遅延(実行計画はバージョンにより大きくかわるため)

対策

  • 開発環境にてバージョンアップを上げておく
  • 仮想環境ツールなどを有効に使うこと
  • 業務に影響度が大きいSQLをリストアップしておき、優先的にテストを行う

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

SQLクエリ比較

クエリの比較 SQLにおいては全く同じ結果を返すのであってもその検索結果が異なるということはよくあります。 例えば下記のようなテーブルがあった場合 co_cd | district —&# …

no image

jQuery modalダイアログについて&重複時間処理

Contents1 jqueryモーダルダイアログ1.1 あらかじめ読み込むライブラリ1.2 ソース本体1.2.1 Html側1.2.2 Javascript側1.2.3 参考リンク2 重複時間につい …

no image

データベースのテスト環境作成

現在作っているシステムのリリースが近づいており、本番に近い環境を作成しお客様に見てもらうことに。 こういった手順はマニュアル化しておいたほうが楽だろうと思い、自分的にメモ 1 現状運用されているデータ …

no image

Webの高速化に関して

Webの高速化に関してメモ。 高速化って言っても幅広いんですけどね。自分が行なっている対策に関して。 一応LAMP環境を前提にしてます。 Contents1 一番大事なのは測定2 DB対策3 フロント …

no image

データベース設計のアンチパターン 重すぎるOLTP+Date型不統一+データ量想定が甘い

Contents1 重すぎるOLTP1.1 デメリット1.2 対策2 DATE型の型の不統一2.1 デメリット2.2 対策3 データ量の想定が甘い3.1 デメリット3.2 対策 重すぎるOLTP ※O …