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
データ基盤の○層構造を独り歩きさせない データモデリング設計 Data Ops Night #1
Search
Sotaro Tanaka
February 17, 2022
Technology
5.8k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
データ基盤の○層構造を独り歩きさせない データモデリング設計 Data Ops Night #1
Sotaro Tanaka
February 17, 2022
More Decks by Sotaro Tanaka
See All by Sotaro Tanaka
データエンジニアリング 4年前と変わったこと、 4年前と変わらないこと
tanakarian
4
1k
ABEMAはなぜセマンティックレイヤーに挑戦しているのか?
tanakarian
0
1.3k
dbtを活用したデータ基盤の 論理・物理設計の現在地と振り返り / data warehouse logic design by using dbt
tanakarian
8
16k
データ分析基盤の障害を未然に防ぐためのチェックリスト / checklist for preventing incidents of data management system
tanakarian
1
13k
データの価値を失わないためのData Reliability
tanakarian
7
12k
building-evolutionary-data-warehouse
tanakarian
2
11k
Other Decks in Technology
See All in Technology
日本 Fintech 未来予測レポート 2027〜2028年(手動編集版)
8maki
0
920
小さく始める AI 活用推進 ― 日経電子版 Web チームの事例/nikkei-tech-talk47
nikkei_engineer_recruiting
0
120
2026TECHFRESH畢業分享會 - Lightning Talk - 打造精準高效的 MCP 設計模式與測試實務
line_developers_tw
PRO
0
610
Amazon Bedrock AgentCore ワークショップ JAWS UG TOHOKU / amazon-bedrock-agentcore-workshop-jawsug-tohoku-2026
gawa
9
590
AIソロプレナー時代に2ヶ月で20人増員した事業創造会社の開発組織の話
miyatakoji
0
530
あなたの AI ワークスペースに、 専門コーダーを連れてくる - Amazon Quick Desktop 最新情報
kawaji_scratch
1
130
LLMと共に進化するプロセスを目指して
ymatsuwitter
12
3.9k
ポケモンの型をTypeScriptの型システムで表現してみた
subroh0508
0
360
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
2
370
生成 AI × MCP で切り拓く次世代 SRE!自律型運用への挑戦と開発者体験の進化
_awache
0
190
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
620
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
600
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The Cult of Friendly URLs
andyhume
79
6.9k
Building Applications with DynamoDB
mza
96
7.1k
How to make the Groovebox
asonas
2
2.2k
Done Done
chrislema
186
16k
Technical Leadership for Architectural Decision Making
baasie
3
400
From π to Pie charts
rasagy
0
200
Build your cross-platform service in a week with App Engine
jlugia
234
18k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
320
How STYLIGHT went responsive
nonsquared
100
6.2k
Transcript
データ基盤の◦層構造を独り歩きさせない データモデリング設計 2022/02/17 Sotaro Tanaka @__sotaron__ Data Ops Night #1
2 • Product Management ←最近コレ • TypeScript + React /
Kotlin • Data Management & BI • Like : Docker/k8s/Python/Go/小倉唯さん • Hobby : 🎮 / 🏂 / ⚽ / 小倉唯さん 自己紹介 Sotaro Tanaka @__sotaron__ Data Engineer @ Ubie, Inc. 2
3 今日お話すること 昨年末、別イベントにて「 dbtを活用したデータ基盤の論理・物理設計の現在地と振り返り」 というタイトルで登壇したとき、「 ◦層構造」の話が独り歩きしてしまっているように感じ、 その背景にあるWhyをうまく伝えられませんでした。 なので今日は、以下を話します。 • Ubieデータ基盤の現在の設計について
• いわゆる「3層構造」のデータ基盤について • なにが違うのか? / なにが同じなのか? • 誰が、いつ、なぜ、このような設計を考えるべきか? 3
4 目次 1.Ubieデータ基盤の現在の設計 2.いわゆる「3層構造」のデータ基盤について 3.なにが違うのか?なにが同じなのか? 4 4.誰が、いつ、なぜ、このような設計を考えるべきか?
5 Ubieデータ分析基盤の論理設計 5 論理的にはこのような設計を Ubieでは採用(prj名など入っているので、微妙に論理じゃない …) Ubieデータ基盤の現在の設計
6 物理設計 on BigQuery Ubieデータ基盤の現在の設計 6 layer dataset name table/view
table name Interface if_{ソースデータセッ ト名} view ソーステーブル名 Component(fact) dc_{ドメイン名} view fact_{任意の名前} Component(dimension) 同上 view dim_{任意の名前} DWH dwh_{サービス名} table {任意の名前} DWH Intermediate 同上 view _itm_{任意の名前} DataMart dm_{サービス名} table {任意の名前} DataMart Intermediate 同上 view _itm_{任意の名前}
7 Interface層は、最低限のケアを施した分析向けの基本データ Ubieデータ基盤の現在の設計 先述のような汎用的な共通処理を施す層 データ分析をしたいときに、「細かいコトを考えずに使えるログテーブル」のようなもの 1/ 特定のデータモデルに依存しないような共通の処理 タイムスタンプのJST変換やカラム名の変換など 2/
無効な値の排除 重複、論理削除レコード、不正値などの排除 7
8 Component層は、再利用性を意識し、特定のデータモデルを表現 Ubieデータ基盤の現在の設計 複数のDWHで利用されることを意識した、再利用性が考慮された層 Ubieであれば、「問診」や「医療機関の検索」といったドメインのイベントを表現している 1/ Conformed Dimension スタースキーマにおけるDimensionを、基盤内で互換性をもって利用できる形に整備したもの
キャンペーンコードのリストや、医療機関のリスト、疾患や症状のデータなど 2/ Conformed Fact スタースキーマにおけるFactを、基盤内で互換性をもって利用できる形に整備したもの 問診イベントレコードや、検索レコードなどが該当 8
9 DWH層は、Componentの結合により、分析のベースとなるテーブル群 Ubieデータ基盤の現在の設計 Componentを束ね、あるドメインの分析に必要な情報を集めたベースのテーブル 基本的に、分析者はこの DWHを利用して、分析・可視化を実施 1/ 可視化を意識しない 可視化を意識すると、テーブルサイズや集計軸が気になるが、
ここではあくまで特定ドメインの分析に必要なComponentの結合や指標算出にとどめている 2/ 当該ドメインに詳しくなくても触れるテーブル群 アナリストが、自身の担当ではない事業の分析をする際も、dbt docsやschemaを確認しながら、 利用できるように整備されている 9
10 DataMart層は、特定の分析・可視化を用途に Ubieデータ基盤の現在の設計 特定の分析・可視化を意図した層 ドリルダウン前提のマートから、ヘルスチェック用のメトリクス集計済みマートまで 1/ BIツールとの統合を意識 テーブルサイズやカラム名など、Tableau等のBIツールでの利用を前提に整備 2/
基本的なメトリクスはMetrics Martを用意 サービスの基本的なKPIは大きくは変わらないので、そのようなメトリクスは集計した状態のマートを用意 結果的に集計値の一貫性テストを実施したり、BIツールによる闇集計を回避 10
11 各層でのdbtテスト 代表的なもの 11 完全性 Integrity レコードは欠損していないか? Requiredなカラムに値があるか? 主にComponent層に実装 -
user_idなどのnull,unique チェック (not_null, unique) - キャンペーンコードなどの値 チェック (relationships) 一貫性 Consistency ある値が、データセット内/間で 一貫しているか? 主にDataMart層に実装 - レポートAとレポートBでの同じ 指標値の一貫性 (dbt_utils tests) 鮮度 Freshness データが十分に新鮮か? 主にInterface層に実装 - freshness testなど Ubieデータ基盤の現在の設計
12 目次 1.Ubieデータ基盤の現在の設計 2.いわゆる「3層構造」のデータ基盤について 3.なにが違うのか?なにが同じなのか? 12 4.誰が、いつ、なぜ、このような設計を考えるべきか?
13 DataLake/DWH/DataMartの3層構造 ※ 図および以降の説明は『実践的データ基盤への処方箋 ※1』を参考に、発表者が作成しています 13 いわゆる「3層構造」のデータ基盤について ※1 : ゆずたそ,
渡部徹太郎 , 伊藤徹郎 著 『実践的データ基盤への処方箋』技術評論社 2021
14 このイベント参加者には 「釈迦に説法」 だと思いますが… 14
15 DataLake層は、さまざまなソースから1つのシステムにデータを集約したもの いわゆる「3層構造」のデータ基盤について 15 加工処理をする前のデータのコピー 1/ Excel, RDB, 外部サービスなど複数の出どころからなるデータを一箇所に集める
割愛 2/ あえて処理を加えないことで、問題調査等にも使える 割愛
16 DWH層は、共通指標となるデータの置場 いわゆる「3層構造」のデータ基盤について DataLakeにあるデータを意味のある「情報」に変換する層 指標算出や、そのためのイベントレベルのテーブルなど 1/ Single Source of Truthの実現
ある指標値や実績値が、レポートをまたがって異なることのないように 2/ 一口に「DWH層」といってもいくつかの処理が集まっている データのクレンジング、ディメンショナルモデリング(等のモデリング)、共通指標の集計など 16
17 DataMart層は、特定の利用者 / 特定の用途向けに整理されたデータ いわゆる「3層構造」のデータ基盤について DWH層のデータをもとに、特定の利用者や用途を想定し、加工・集計されたデータの置場 1/ ユースケースと1対1の関係 修正・削除の影響範囲を狭めたり、似たようなユースケースでの再利用がしやすくなる
17
18 目次 1.Ubieデータ基盤の現在の設計 2.いわゆる「3層構造」のデータ基盤について 3.なにが違うのか?なにが同じなのか? 18 4.誰が、いつ、なぜ、このような設計を考えるべきか?
19 必要とされる処理、およびデータの流れは同じ なにが違うのか?なにが同じなのか? 先述のUbieにおけるデータ基盤設計と 3層構造の対応関係 レイクはソースデータのコピー、 DWHは意味のある情報を作り、マートは特定の用途へ 19
20 違いは、DWH層における処理を処理内容ごとにレイヤ分けした部分 なにが違うのか?なにが同じなのか? DWH層がもつ処理の責務を明示的にレイヤに分解 クレンジングはInterface、ディメンショナルモデリングは Component、共通指標の算出は dwh 20
21 つまり、ほとんど同じッてコト …?! 21
22 そうです 22
23 じゃあ、なんでわざわざ あんな設計に…? 23
24 目次 1.Ubieデータ基盤の現在の設計 2.いわゆる「3層構造」のデータ基盤について 3.なにが違うのか?なにが同じなのか? 24 4.誰が、いつ、なぜ、このような設計を考えるべきか?
25 誰が、いつ、なぜ、このような設計を考えるべきか?誰が、いつ、なぜ、このような設計を考えるべきか? レイヤ分けの大きな目的は「保守性」や「テストのしやすさ」の維持 逆にいうと、以下のようなケースを除いては必要ないかもしれない 1/ データエンジニア、データアナリスト以外も複数人開発にコミットするケース DWH層はどんな処理をすべきか、なにをテストすべきか、がよくわかっていない開発者は 責務とテストすべき内容が明示
されたレイヤがあったほうが開発しやすい。 逆にデータエンジニアとデータアナリスト2~3人でやっているうちは、分けなくても保守性に大きな問題はないかも。 2/ 共通ドメイン、複数プロダクトなケース たとえば、「医学データ」「toC/toB双方のプロダクト」のケースで考えると、「医学データ」のような共通ドメインの ディメンションは Componentとして切り出しておくと、toC/toB開発エンジニアがそれを使った指標算出のクエリを書き やすい(Component層に再 利用可能な形でデータがあるという期待) 「共通ドメイン、複数プロダクト、多くの開発者」そんなとき、必要かもしれない 25
26 Ubieでは、 先述の設計により、 責務の明確化と明示 ができた 26
27 結果として、 コミッターが増え、 開発も以前より活発に 27
28 独り歩きしないための、重要な問い 「◦層がどうこう」という話を独り歩きさせず、自分たちにあった設計にするための問い 1/ そのデータ基盤の開発、運用には誰がどこまで関わるのか? データエンジニア、データアナリストだけなのか? データ基盤にそこまで明るくないバックエンドエンジニアもコミットするのか?エンジニア以外も触るのか?
触るならどこまで触るのか? 2/ その設計で、各層の責務は自明に分かるか? 開発をする自分たちが、それぞれの層でやるべき処理、 およびその層のデータが満たすべき品質、性質を自明に理解しているのか? 28 Key Takeaway
29 ところで 29
30 twitter: @__sotaron__ までDMどうぞ!! 気になるけど、DMするほどでもないな〜という方はとりあえず以下から! - Ubieってそもそもどんな会社なん? 【Ubie説明資料一覧】Ubieの事業とチームが分かる 5つの資料をまとめました -
どんな人を求めているの?( Ubie Discovery) 3分でわかる Ubieness チェック Ubieで医療データのあれやこれや、やっていきませんか! 30
31 おわり 31