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
230
tblsはいいぞ(第44回 PostgreSQLアンカンファレンス@オンライン)
majimaccho
December 19, 2023
Tweet
Share
More Decks by majimaccho
See All by majimaccho
TypeScript サーバーサイドエンジニアが関数型から学 ぶべき 3 つのアイディア
majimaccho
4
560
Result 型、自前で書くか、ライブラリ使うか
majimaccho
4
660
graphql-rdb-mismatch
majimaccho
0
36
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
57
9.4k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Facilitating Awesome Meetings
lara
54
6.4k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
670
Music & Morning Musume
bryan
46
6.6k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.3k
Bash Introduction
62gerente
614
210k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
How GitHub (no longer) Works
holman
314
140k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
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で整理しよう