Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
2024年度 サイバーエージェント新卒社内研修の「データモデリング」の資料公開
Search
chiba_katsu
June 05, 2024
Education
2
6.6k
2024年度 サイバーエージェント新卒社内研修の「データモデリング」の資料公開
chiba_katsu
June 05, 2024
Tweet
Share
Other Decks in Education
See All in Education
卒論の書き方 / Happy Writing
kaityo256
PRO
54
28k
SJRC 2526
cbtlibrary
0
180
滑空スポーツ講習会2025(実技講習)EMFT学科講習資料/JSA EMFT 2025
jsaseminar
0
160
✅ レポート採点基準 / How Your Reports Are Assessed
yasslab
PRO
0
270
Surviving the surfaceless web
jonoalderson
0
290
HTML5 and the Open Web Platform - Lecture 3 - Web Technologies (1019888BNR)
signer
PRO
2
3.2k
3Dプリンタでロボット作るよ#5_ロボット向け3Dプリンタ材料
shiba_8ro
0
140
20251023@天童市いこう会
koshiba_noriaki
0
120
RGBでも蛍光を!? / RayTracingCamp11
kugimasa
2
330
Linguaxes de programación
irocho
0
510
自己紹介 / who-am-i
yasulab
3
6.2k
MySmartSTEAM 2526
cbtlibrary
0
180
Featured
See All Featured
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
290
Unsuck your backbone
ammeep
671
58k
Design in an AI World
tapps
0
120
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
180
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Thoughts on Productivity
jonyablonski
74
5k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
160
The browser strikes back
jonoalderson
0
300
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Paper Plane (Part 1)
katiecoart
PRO
0
3.1k
Transcript
データモデリング 2024年度 AI事業本部研修 データアプリケーション研修応⽤編より抜粋
基幹系・情報系による分類 2 分類 基幹系システム OLTP: Online Transaction Processing 情報系システム OLAP:
Online Analytical Processing 要求 データの整合性を担保しながら高速に読み書き 大量のデータを高速に集計・分析 業務におけ る役割 販売管理、在庫管理、生産管理、財務会計といった 特に経営を支える屋台骨となる業務を一元管理して、 効率よく行うためのシステム 社内外のコミュニケーション、事務処理の効率化、 あるいは意思決定支援などに利用されるシステム 操作の特徴 追記に加え、更新も多い 追記が多い アクセス 範囲 読み取らなければいけないデータは全体の一部 データ全体
データモデリングの流れ 要件分析 ˔ データベースで管理したいデータやデータの使われ⽅などを整理 概念設計 ˔ 要件定義をもとに、DBかの対象となる実世界をモデル化 ˔ 特定の DBMS
のデータモデルには依存しない ˔ ER モデルが主流 論理設計 ˔ 概念モデルを DBMS のデータモデルでスキーマに変換(PKなど) ˔ スキーマの改善 物理設計 ˔ インデックス。ファイルフォーマットなどの性能チューニング ˔ この後のステップにはセキュリティ設計などが含まれる 3
ERD︓Entity Relationship Diagram 4 データベースの構造を視覚的に表現したもの エンティティ︓ 実世界のオブジェクトの概念 (例︓商品・メーカ・注⽂) 属性︓ エンティティを詳細に記述するための要素
(例︓商品名・原価・注⽂⽇) リレーションシップ︓ エンティティ間の関連性や相互作⽤ (例︓1:1、1:N、N:M などの関係)
正規化 第⼀正規化 重複したレコードの排除 第⼆正規化 ⾮キー属性が候補キーに完全関数従属 第三正規化 ⾮キー属性が候補キーに推移的関数従属 実務では第3正規化まで ⾏うことが多い 最適化のために物理設計で
⾮正規化を⾏うこともある 5 キー属性は「注文番号」と「商品番号」。 「商品名」、「分類」、「単価」は、 「商品 ID」によって一意に決まるので分割 キー属性は「注文番号」。 「名前」、「住所」、「電話番号」は、 「顧客 ID」によって一意に決まるため分割 注文明細テーブル 注文テーブル 注文テーブル 注文明細テーブル 商品テーブル 注文テーブル 顧客テーブル 注文明細テーブル 商品テーブル
モデリングでのテーブルの分類⽅法 マスタ(システムにとって重要なデータ) • ユーザーが変更できないデータ • あらかじめ登録しておくデータ トランザクション(作業時に発⽣するデータ) • ユーザーが登録するデータ •
⽇報データや売上や活動履歴とか リソース • ユーザや企業、ジョブの状態など • 主に 更新 される イベント • ユーザ登録や削除、ジョブ開始など • 主に 追記 される マスタ・トランザクション (定義は諸説ある) リソース・イベント (最近はこちらの表現が多い) 6
イミュータブルデータモデリング CRUDの中で基本的に 更新 が最も時間がかかり、システムを複雑にする データを変更せず、新しい追記するようにすればパフォーマンスの向上、 さらにデータの⼀貫性と信頼性を向上させることができる (関数型プログラミングの原則をデータ管理にも適⽤) リソース系とイベント系を明確に分け、リソース系を⼩さくする ⽋点︓
ストレージの⼤量消費、データのクリーンアップが⼤変 (スナップショットやアーカイブが必要。クラウドの発達でデメリットにならないケースも) 7
SQL の設計におけるアンチパターンには RDB が苦⼿なデータ構造 (半構造データ・グラフ)に対するおすすめのモデリングなどが書かれている。 おまけ)「SQLアンチパターン」の紹介 例)Jaywalking(信号無視) 半構造データを⽂字列結合で1つのカラムに押し込める 解決策 中間テーブルを⽤意して参照整合性を保つ
8 https://www.oreilly.co.jp/books/9784873115894/
情報系にもいろいろなモデリングがある 9
こんなデータがあったとする🤔 イベント(Fact) 10 購買 店舗 商品 会員 カテゴリ リソース(Demention)
⼤福帳 会員番号 性別 年齢 購買日 店舗コード 店舗名 大カテゴリ名 Janコード 商品名
… 購買金額 購買数量 Customer_1 男性 40 2024/01/01 Store_1 A店舗 カテゴリA Product_1 商品A 10000 1 トランザクションにマスタの情報をすべて結合してして⼀つのテーブルで保持する。 ˔ メリット ˓ 使うときにジョインしなくてもいい ˔ デメリット ˓ 変更に弱い ˓ 1テーブルがデカくなるので過去分全部は持てなかった 11
Fact を中⼼として、Dimension を結合して使⽤する。 Fact ˓ POSデータなどの⽇々増えていくデータ Dimension ˓ 店舗マスタ、商品マスタ、カレンダーマスタなど頻繁に更新をしないデータ スタースキーマ
12
Data Vault ハブ、リンク、サテライトの 3 種類のエンティティで構成される モデルが変更された場合に、ETL ジョブのリファクタリングが少なくて済む ハブ 顧客 ID、製品番号など、ビジネスの中核となるコンセプトを表す。
ユーザーはビジネスキーを使用して、ハブに関する情報を取得する。 ビジネスキーには、ビジネスコンセプト ID やシーケンス ID、ロード日、その他のメタデータ情報の組み合わせを含めることができる。 リンク ハブ間のリレーションシップを表す。 サテライト ハブに属する情報とハブ間のリレーションシップに関するデータを格納する 参考:https://www.phdata.io/blog/how-to-model-and-choose-the-right-data-model/ 13
Data Vault リ ン ク ハ ブ サ テ ラ
イ ト 参考:https://www.phdata.io/blog/how-to-model-and-choose-the-right-data-model/ 14
Data Vault ˔ メリット ˓ データの変更に強い ˙ 項⽬追加の場合はサテライトを追加すれば良い ˙ 変更履歴は全部取っておく
˓ スケーラビリティがある ˔ デメリット ˓ クエリを書く際にジョインが多くなる ˓ 初期構築時にビジネスキーとなる項⽬を定義が必要 ˙ なるべく不変的な項⽬ 参考:https://www.phdata.io/blog/how-to-model-and-choose-the-right-data-model/ 15
情報系データモデリングのまとめ 最適解はビジネスモデルに合った形で選ぶ必要がある とはいえ、いまのところスタースキーマがよく選ばれる (Data Vaultは実績がまだあまり多くない・・・) 16