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
tblsはいいぞ(第44回 PostgreSQLアンカンファレンス@オンライン)
Search
majimaccho
December 19, 2023
0
210
tblsはいいぞ(第44回 PostgreSQLアンカンファレンス@オンライン)
majimaccho
December 19, 2023
Tweet
Share
More Decks by majimaccho
See All by majimaccho
TypeScript サーバーサイドエンジニアが関数型から学 ぶべき 3 つのアイディア
majimaccho
3
490
Result 型、自前で書くか、ライブラリ使うか
majimaccho
3
610
graphql-rdb-mismatch
majimaccho
0
36
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
21k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
Typedesign – Prime Four
hannesfritz
41
2.6k
A Modern Web Designer's Workflow
chriscoyier
693
190k
How GitHub (no longer) Works
holman
314
140k
The World Runs on Bad Software
bkeepers
PRO
68
11k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Designing for humans not robots
tammielis
253
25k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.6k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
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で整理しよう