アーカイブ:2021年 9月
-
よくある「削除フラグ」の問題点 「削除されたデータ」と「削除されてないデータ」が同じテーブルに混在することになりどれが正しいデータなのかわからなくなる。 クエリが複雑化する。 SQLで取り出すのにいちいち全てに削除フラグの条件をつけな…
-
【データベース】インデックスが効かないケース
09.26
検索結果が多い 検索結果がテーブル全体の20%未満(実務では10%未満を目標にすると良いです。) 全体の件数が少ない 数万〜数十マン行が目安になります。1000行程度のテーブルであればindexよりもテーブルスキャンが効率的です。 …
-
JOINが増えるとパフォーマンスが低下します。 INNER JOINの場合は論理和になるので、A、B、C、Dと4つのテーブルがあった場合は、AとB、AとC、AとD、BとC、BとD、CとDというように重なりを調べていくので指数関数的に増…
-
【データベース】「遅延レプリケーション」について
09.26
遅延レプリケーションとは? 指定した時間分、スレーブDBに対して、マスタDBからのレプリケーションを遅延させることができる機能です。例えば、2日遅れや3時間遅れのスレーブDBを作ったりすることができます。 メリット DBに対して柔軟な…
-
【データベース】テーブル設計:履歴設計について
09.26
過去の事実が損なわれる例 例1:料率の変更 消費税率を5%→8%に変更する対応をするために設定マスタの値を変更したとします。 消費税変更前に、購入があった本を返品する処理が動きました。その際に、8%で返品の計算が行われるため売り上…
-
【データベース】テーブル設計の指針
09.26
テーブル設計の指針 特定の値以外入れて欲しくないカラムはCHECK制約を使う。 例えば、削除フラグなどで1、2のみしか入って欲しくない場合などは使えます。 なお、MySQLではCHECK制約は対応していません。(8.0.16以降で…
-
【Java】汎用的な例外処理の対応方法
09.25
例外を検知する側 RuntimeExceptionにラップして返す。 検査例外を非検査例外(RuntimeException)にラップして返します。とりあえずこれだけ覚えておけば最低限無難なコードになります。(e.printStackT…
-
【Java】個別例外の対応方法
09.25
現実のJavaアプリケーションでは、汎用例外だけでなくある機能に特化した例外処理が求められる場合があります。 呼び出し元への通知方法 booleanで返す。 [crayon-63e14abca4b3d946171329/] メリット…
-
【設計】フロントエンド のアーキテクチャパターン
09.25
MVC 古くからある古典的なアーキテクチャです。 Model、View、Controllerに分けるパターン ViewがObserverとして、Modelの変化を監視して変化があれば再描画する。 MVC2 よくあるRail…
-
【SEO】「OGP」とは?
09.25
OGPとは? 「Open Graph Protocol」の略語になります。 SNS(FacebookやTwitterなど)でシェアするときにタイムラインの中のリンクに表示される画像やタイトルを綺麗に見やすくするHTMLタグ。 …