Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
tblsはいいぞ(第44回 PostgreSQLアンカンファレンス@オンライン)
Search
majimaccho
December 19, 2023
380
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
tblsはいいぞ(第44回 PostgreSQLアンカンファレンス@オンライン)
majimaccho
December 19, 2023
More Decks by majimaccho
See All by majimaccho
TypeScript サーバーサイドエンジニアが関数型から学 ぶべき 3 つのアイディア
majimaccho
4
760
Result 型、自前で書くか、ライブラリ使うか
majimaccho
5
1k
graphql-rdb-mismatch
majimaccho
0
71
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Designing for humans not robots
tammielis
254
26k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
980
WCS-LA-2024
lcolladotor
0
830
How GitHub (no longer) Works
holman
316
150k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
230
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
350
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
530
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.9k
Transcript
tblsはいいぞ 第44回 PostgreSQLアンカンファレンス @オンライン
この間のPostgreSQLConference Japan 2023が 初参加でとても楽しかったので勢いで LTさせていただいています 社外のLTは初めてなので暖かい目で見ていただけると幸いです お名前:まじまっちょ X(旧Twitter):@majimaccho_ お仕事:医療系未上場企業のアプリケーションエンジニア 好きなもの:美味しいお酒とお肉
自己紹介
tblsはいいぞ🦍
tblsとは • 既存のDBスキーマ、テーブルコメント、カラムコメントからDBのドキュメントを生成 • Markdown形式なのでGitHubから参照でき、ホスティングが不要 • カラムコメント、テーブルコメントの有無などを検証 • CIへの組み込みが容易 https://speakerdeck.com/k1low/phpconfuk-2023?slide=7
プチアピール ちょっとだけ私もコントリビュートしてます
なんのためにDBのドキュメンテーションを行うか • 再来月の全て忘れた自分が思い出すため • 開発チームに新規参加したメンバーがキャッチアップするため • 運用チームがSQLでDBにアクセスしてトラブルシュートするため • 解析チーム、データ基盤チームが既存のDBの内容を理解するため 釈迦に説法すぎてすいません…
よくあるDBドキュメンテーションの課題 • メンテナンスされない • 存在が知られていない • ER図が大きすぎて読めない • そもそも存在しない
tblsによって生成されるドキュメント
tblsによって生成されるドキュメント • トップのドキュメント(全体像) ◦ Viewpoints(後述) ◦ テーブル一覧(テーブルコメント) ◦ ER図 •
テーブル詳細 ◦ 概要(テーブルコメント) ◦ カラム一覧(カラムコメント) ◦ Viewpoints(後述) ◦ 制約一覧 ◦ インデックス一覧 ◦ ER図 • Viewpoint詳細(後述) ◦ 概要 ◦ 内包するテーブルの一覧 ◦ 内包するテーブルのER図
Viewpointはいいぞ🦍
Viewpoint(s)とは • tbls独自の概念 • DBのスキーマを任意のまとまりに分割 • DDLでの設定ではなく、tblsの設定ファイルのYAMLに記述 https://speakerdeck.com/k1low/phpconfuk-2023?slide=34
Viewpointがあると - トップのドキュメント • 全体像を表すトップのドキュメント にViewpointの一覧がくる • ここでデータの種類・利用のされ方 の概要が掴める •
名前がViewpointのリンクになって いて個別のViewpointの内容に飛 べる
Viewpointがあると - Viewpoint詳細 • データのまとまりごとにテー ブル一覧が見られる • 意味的なまとまりの範囲を 伝えられる •
ER図がViewpointの単位に できて見やすい
• 個別のテーブルがどの Viewpointから参照されている のかわかる • Viewpoint⇔個別のテーブルを 行来するとDB設計の理解が進 む Viewpointがあると -
テーブル詳細
Viewpointの設定の仕方 キー 説明 name Viewpointの名前 desc Viewpointの説明 tables Viewpointに含まれるテーブ ルの一覧
• requireColumnComment(カラムコメントの必須化) ◦ カラムコメントが設定されていないカラムがあるとリントエラーになります。 ◦ どのカラムに設定されていないかを出力してくれます。 ◦ オプションでid, created_atなど任意の名前のカラムを対象外にできます。 •
requireTableComment (テーブルコメント必須化) ◦ requireColumnCommentのテーブルコメント版です。 ◦ テーブルコメントが設定されていないテーブルがあるとリントエラーになります。 • requireViewpoints (Viewpoints必須化) ◦ 一つもViewpointに属していないテーブルがあるとリントエラーになります。 tblsのリント機能
PostgreSQLならViewもマテビューも見やすく! Viewもマテビューも テーブルとして扱われ るが、タイプから見分 けられる Viewpointに含めて関 連するデータと一緒に ドキュメンテーションで きる
PostgreSQLならViewもマテビューも見やすく! 詳細からはViewとマテビューは作成時の SQLが参照できる! 参照しているテーブルも一覧が出る! すいません…勢い駆動LTにつき、ポスグレ関係で 何かないかと思って無理やりここを足しました。 🐘
おまけ
実際に見てみよう https://github.com/majimaccho/prisma-tbls
今日の内容をもう少し詳しく書いたのでよろしければ見てやってください DBスキーマはtblsのViewpointsで整理しよう