skillup

技術ブログ

Database

データベース設計のアンチパターン リトライ+バッチ分割+バッチの再利用不可

投稿日:

リトライ

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

デメリット

リトライが繰り返し発生することによる負荷の増大。サーバー再起動以外で切り抜けられないことが多い。

対策

  • リトライ回数の上限設定
  • 負荷の考慮
  • タイムアウト制限時間の考慮

バッチ分割

デメリット

トランザクションが長すぎて、最後のほうでエラーになる。バッチが途中でエラーになったが中途半端にデータが更新されてしまっている。

対策

  • 処理分割をきっちり行う
  • 例外に対する認識を常に持っておく
  • バッチの適切な分割(基本的にはワントランザクションで対処したほうがいいが、長すぎるのも危険)。
  • 不用意なautocommitをしない
  • リソースの監視
  • 再実行のことを考えた分割にしておく

バッチ再利用不可

デメリット

エラーが発生しても失敗したところから再実行できない。バッチ中に初期化やクリアの処理が入っていない

対策

  • 例外に対する認識を必ず持っておく
  • 処理が正常に進んでいるか否か、プロセス的なログ、テーブルの用意
  • 適切な分割

-Database
-

執筆者:


comment

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

関連記事

no image

DBUtils活用 その2

以前DBUtilsの活用を書きましたが、他の使い方がわかったのでメモ 以前はSelectでList<エンティティ>を取得したのですが、List<Map>でも取得できます。 ソー …

no image

テストのダミーデータ作成

データベースに大量のデータを作りたいときにいつもあああやhoge,aaaですとデータという感じがしないですし、抽出や集計ができません。 なるべく自然に近いデータが欲しいのですが、簡単に作れる方法があり …

no image

オブジェクト指向 データベース層

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日は主にデータベース層の考え方について。 Contents1 データべース層1.1 要点1.1.1 典型的なダメテーブル設計1.1 …

no image

sql_modeに関して

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

no image

データクレンジング

リレーショナルデータベースでデータを管理する前に、しなくてはいけないことはデータをデータベースに登録できる形に整形することです。 このことをデータクレンジングといいます。 これを行わずに何も考えずにデ …

アーカイブ