【JJUG CCC 2024 Spring】物理削除/論理削除 #jjug_ccc_c #jjug_ccc

28.5K Views

June 16, 24

スライド概要

profile-image

Ruby/Javaプログラマー。エンジニアリングマネージャー。 軽度の広く浅いオタク。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

TORANOANA Lab 物理削除 vs 論理削除 レコード消滅作戦 虎の穴ラボ 河野 裕隆 JJUG CCC 2024 Spring Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

2.

自己紹介 河野 裕隆(こうの ひろたか) 好きなもの ● 2019/08 虎の穴ラボ入社 ● VOCALOID(初音ミク) ● 新規開発チーム ● 謎解き、クイズ ○ ● クリエイティア他 X: @hk_it7 虎の穴ラボへの入社理由 ● スキルを高めあえる仲間がほしい ● ユーザーに近い仕事がしたい JJUG CCC登壇は半年ぶり3回目 初めてスタッフ参加🎉 2 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

3.

アイスブレイクタイム 3 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

4.

おはようございます!! 4 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

5.

質問です! 5 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

6.

『ゴジラ×メガギラス G消滅作戦』 見たことある人󰢧 6 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

7.

交流会で話ましょう!!!! 7 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

8.

今回このタイトルにして、 ちょっと恥ずかしくなっています...... 8 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

9.

話さないこと ● Javaのこと! ○ JJUG CCCなのに...... ● 組み込みでのこと! ● この世の真理のこと! ○ どんなケースでも対応できるベストプラク ティスを授けるわけではないです! 9 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

10.

話すこと ● 物理削除とは ● 論理削除とは ● 各陣営の主張 ● 大まかな選定基準 10 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

11.

対象者 ● Beginnerセッション ○ 初学者~を対象としています ● なんとなくでDB設計している人 ○ DB設計する際の私見を共有します 11 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

12.

オススメの聞き方(余談) ● 自分の考えと異なるところを見つける ○ その理由を考える ● 理解できなかったところをまとめる ○ 質問する ■ 交流会でも廊下で捕まえてもらっても󰢏 12 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

13.

レコードは物理削除すべき?󰢧 13 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

14.

論理削除のほうが良い?󰢧 14 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

15.

前提条件なく話せない!! 15 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

16.

SNSの文量では 前提条件を説明しきれない!! 16 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

17.

メリット・デメリットを精査して 選択できるようにしよう!! 17 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

18.

話すこと ● 物理削除とは ● 論理削除とは ● 各陣営の主張 ● 大まかな選定基準 18 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

19.

話すこと ● 物理削除とは ● 論理削除とは ● 各陣営の主張 ● 大まかな選定基準 19 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

20.

の前に...... なぜ削除するのか? 20 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

21.

削除する理由 ● 不要だから(ex: バナナの皮) ● 見せちゃいけないから(ex: 自分宛ての封筒) ○ シュレッダーで削除 ● 増えすぎるから(ex: 昨日の新聞) etc. 21 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

22.

システムの世界でも さまざまな理由で”削除”する 22 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

23.

削除方法には大きくわけて2つある 23 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

24.

① ゴミとして出す=手元から消える 物理削除 24 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

25.

② 目に見えないところに移動=手元に残る 論理削除 25 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

26.

話すこと ● 物理削除とは ● 論理削除とは ● 各陣営の主張 ● 大まかな選定基準 26 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

27.

物理削除とは DBに入ったデータを削除すること <=>論理削除 基本的に復旧/再度閲覧の手段がない 27 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

28.

話すこと ● 物理削除とは ● 論理削除とは ● 各陣営の主張 ● 大まかな選定基準 28 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

29.

論理削除とは DBに入ったデータのステータス等を更新し削除さ れたものと扱うこと 復旧/再度閲覧が可能 29 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

30.

論理削除の種類 ● 削除フラグ(さっきの例) ● 削除日時 ● ステータス ● 削除/有効状態テーブル ● その他 30 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

31.

削除日時を使った論理削除-NULLを利用 削除されたら、その日時を入れる メリット:削除された日時がわかる デメリット:NULL許可で、ぬるぽの可能性 31 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

32.

削除日時を使った論理削除-NULLを避ける デメリット:NULL許可で、ぬるぽの可能性 =>DEFAULT値を「9999-12-31」で解決可能? 検索は未来日にしておけば良い 32 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

33.

ステータス 削除されたら、ステータスを「削除状態」にする メリット:カラムが増えない デメリット:同列で扱うべきか悩む 33 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

34.

削除/有効状態テーブルを結合 削除/有効状態テーブルの有無で状態を判断 メリット:検索効率がよくなる可能性がある デメリット:検索がしんどい ※削除状態テーブルを作成する例 34 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

35.

削除/有効状態テーブルを結合 有効状態テーブルの有用性 - 削除時に消さないといけない情報をまとめる =>実質物理削除と同じメリットを得られる - 外部キー制約を維持できる 35 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

36.

その他 ● アーカイブに逃がしたうえで物理削除 ○ トランザクション管理が必要 ○ 結局レコード残る ● マスキングしてしまう ○ 削除フラグ等で論理削除した上で利用 ○ 個人情報を意味のない値で上書き 36 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

37.

話すこと ● 物理削除とは ● 論理削除とは ● 各陣営の主張 ● 大まかな選定基準 37 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

38.

各陣営の主張 - 物理削除派 物理削除のメリット ● 情報流出の危険がない! ● 検索時に条件の追加が不要 ● 検索時にレコード数が減る 38 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

39.

各陣営の主張 - 論理削除派 論理削除のメリット ● 簡単に巻き戻せる ● 外部キー制約に引っかかることもない 39 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

40.

話すこと ● 物理削除とは ● 論理削除とは ● 各陣営の主張 ● 大まかな選定基準 40 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

41.

おおまかな選定基準 41 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

42.

おおまかな選定基準 ● まずは物理削除できないか検討する ○ 取り返しのつかない要素なので慎重に...... ● リレーション関係に注意⚠ ● 残したいデータと消す必要のあるデータでわけ ておくと良い =>有効/無効テーブルで仕分けられるかも 42 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

43.

伝えたいこと ● 削除方法(物理/論理削除)はどのようにの話 ● 設計時に大切なのは、「なぜ」/「どうして」 削除するのか 43 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

44.

要件定義/設計では 「なぜ、どうして」と「どのように」を 切り分けることが重要!! 44 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

45.

考え方 ● 要件:なぜ、どうして ● 設計:どのように 設計理由が要件の「なぜ」、「どうして」を満た しているか考える 45 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

46.

サンプル ● 仕様:ユーザー退会時に個人情報を削除する ○ なぜ? ■ プライバシーポリシーで定めているから ● 設計:ユーザー退会はユーザーテーブルのレ コード物理削除にて行う ↑プライバシーポリシーに従うための設計 46 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

47.

まとめ ● 「なぜ」/「どうして」に着目、DB設計しよう 47 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c

48.

宣伝 ● 今回の内容含めて技術同人誌出してます! 技術書典 サークル名:世迷言ラボ 電子のみ、500円 https://techbookfest.org/product/fYKMyCU1sJFBMrcBG TCeXb?productVariantID=iu3uRVDhX5ct79p9KYdu2w 48 Copyright (C) 2024 Toranoana Lab Inc. All Rights Reserved. #jjug_ccc_c