skillup

技術ブログ

Database

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

投稿日:

重すぎるOLTP

※OLTP=オンライントランザクションシステム(多数の端末から中央のデータベースにアクセスするタイプのシステム)

デメリット

速度を要求されるシステムなのに、遅いためユーザー離脱などにつながる。

対策

  • 早い段階でのプロトタイプでの性能確認(大量データでの性能確認)
  • 業務要件自体が無理
  • 非正規化
  • 実行計画での早期確認
  • 早い段階での集計表作成

DATE型の型の不統一

デメリット

規約が不十分なため、yyyymmddとyyyymmddhhmmssが混じるなど

対策

  • 規約の再定義
  • 時分秒があるときは00:00:00を入れると事故(意図した検索結果が出力されない)の元になる
  • 日付を検索するときは原則、時分秒までいれていいとおもう(個人的には。)
  • check制約を入れるのもあり
  • データベースだけではなく、画面表示なども混乱することが多い(ライブラリなどで統一した表記にしておいたほうがいいかも)

データ量の想定が甘い

デメリット

システム構築後数年たって、データ量が増えすぎ、パフォーマンスが劣化する

いざ削除しようと思っても、削除していいデータかどうかわからず削除ができない

対策

  • データ削除機能(物理削除)を持たせる
  • 概算値でいいので、データの蓄積量を決める
  • 設計段階でのCRUDの意識

-Database
-

執筆者:


comment

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

関連記事

no image

データベースのインデックスについて

今回はデータベースのインデックスに関して。 検索条件を早くする場合、何よりも速度が速くなるのはインデックスを張ることでしょう。 インデックスを張ることは単語を索引順に並べることですので、劇的に速度が向 …

no image

cakeでのトランザクション、コミット、ロールバック

cakePHP(2.X系)でのトランザクション、コミット、ロールバックについて。 cakePHPでトランザクションを書ける場合、Model内に [crayon-617880588de3f8251438 …

no image

SQL 更新系に関して

SQL実践入門、残り2章になりましたが、いやーむずいっす。 今回は9章を進めていますがSQLはもともと検索を主な用途として発展したため、SELECT文の使用がメインになります。 ですが、UPDATE文 …

no image

MySQLのレプリケーションについて

MySQLのレプリケーションについて調べたことなどを。 Contents1 レプリケーションの基礎知識1.1 定義1.2 構成1.3 メリット1.3.1 参照性能の向上1.3.2 可用性の向上1.4 …

no image

sql_modeに関して

開発では動いていたのに本番ではint型のカラムで空白が入らない!みたいなエラーが出て、データベースにデータが入らないことが発覚し、調査をすることに・・・ sql_modeが原因でした・・・ sql_m …