skillup

技術ブログ

Database

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

投稿日:

リトライ

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

デメリット

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

対策

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

バッチ分割

デメリット

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

対策

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

バッチ再利用不可

デメリット

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

対策

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

-Database
-

執筆者:


comment

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

関連記事

no image

PostgreSQLについて

本日はポスグレ(PostgreSQL)について。 自分はほとんどMySQLだったので、主にMySQLとの比較について書いていきます。 Contents1 アーキテクチャの違い1.1 MySQL1.2 …

no image

論理設計のアンチパターン

今回からは論理設計のアンチパターンについて。 やってはいけない設計のパターンですね。これはまわりがやっていると気づかずにやっている可能性があるのでしっかりメモしておきたいです。 Contents1 非 …

no image

サブクエリの使い方

以前も少し学習しましたが、今回からはサブクエリの扱い方です。特に異なった行の比較(年度計算など)に関して行われる自己結合をつかったものが非常に強力です。 例によってここを学習しています。 下記のような …

no image

アンチパターン 参照渡しと値渡し+キー情報の設定+同一値を複数テーブルに配置+正規化が不十分+集計表+不適切なステータス値

本日は自分がデータベースの設計をしていて気を付かないといけないなーと思った点などを。 注意点としては設計のミスは実装で取り返しにくいことが多いので極力気を付けましょう。あといろいろなテーブルのパターン …

no image

フィールド以外のプロパティをエンティティに持たせる

JPAでは基本的に1テーブル、1クラスです。 このためプロパティは必然的にテーブルのフィールドに対応しています。 ただ、必ずしもプロパティだけでなく、臨時で持たせておきたい、プロパティがあったりします …

アーカイブ