$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
tblsはいいぞ(第44回 PostgreSQLアンカンファレンス@オンライン)
Search
majimaccho
December 19, 2023
0
290
tblsはいいぞ(第44回 PostgreSQLアンカンファレンス@オンライン)
majimaccho
December 19, 2023
Tweet
Share
More Decks by majimaccho
See All by majimaccho
TypeScript サーバーサイドエンジニアが関数型から学 ぶべき 3 つのアイディア
majimaccho
4
630
Result 型、自前で書くか、ライブラリ使うか
majimaccho
5
870
graphql-rdb-mismatch
majimaccho
0
52
Featured
See All Featured
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
89
Git: the NoSQL Database
bkeepers
PRO
432
66k
Applied NLP in the Age of Generative AI
inesmontani
PRO
3
2k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
1
210
Building a Scalable Design System with Sketch
lauravandoore
463
34k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
1
870
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
97
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
65
35k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
980
Rebuilding a faster, lazier Slack
samanthasiow
85
9.3k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
0
45
Chasing Engaging Ingredients in Design
codingconduct
0
85
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で整理しよう