Upgrade to Pro — share decks privately, control downloads, hide ads and more …

マルチテナントの実現におけるDB設計とRLS / Utilizing RSL in multi...

マルチテナントの実現におけるDB設計とRLS / Utilizing RSL in multi-tenancy

Avatar for soudai sone

soudai sone

March 12, 2024
Tweet

More Decks by soudai sone

Other Decks in Technology

Transcript

  1. 自己紹介
 曽根 壮大(39歳)
 Have Fun Tech LLC 代表社員
 株式会社リンケージ CTO


    
 そ  ね   たけ とも
 • 日本PostgreSQLユーザ会 勉強会分科会 担当
 • 3人の子供がいます(長女、次女、長男)
 • 技術的にはWeb/LL言語/RDBMSが好きです
 • コミュニティが好き
  2. RLSの概要と実際の活用方法 ID NAME ROLE email 1 test admin [email protected] 2

    hoge user [email protected] 3 fuga user [email protected] 4 foo admin [email protected] 5 bar user [email protected] Viewで列を制限 ID NAME ROLE 1 test admin 2 hoge user 3 fuga user 4 foo admin 5 bar user SELECT id,name,role FROM hoge;
  3. RLSの概要と実際の活用方法 ID NAME ROLE email 1 test admin [email protected] 2

    hoge user [email protected] 3 fuga user [email protected] 4 foo admin [email protected] 5 bar user [email protected] RLSで行を制限 SELECT * FROM hoge; 例えばrole=userだけの結果を返す
  4. ここまでシンプルな実装を目指しましょうと強調してきました が、「シンプルな実装」とはなんでしょうか。RDBMSを使う上で シンプルな実装のヒントは正規化です。正規化のコツは次の ように表現できます。 
 • 事実だけを保存する 
 • 重複がない


    • 不整合がない
 • nullがない
 これらを意識して設計していくとシンプルな設計に近づいてい きます。
 また正規化を行う際はここまで説明したとおり、種別と状態を 考えることも重要です。ライフサイクルが違うデータは往々に して状態や種別が異なります。 場合によってはnullになるよう なカラムやUPDATEが必要なレコードは状態を持っている可 能性があります。こうしたテーブルが見つかった場合はより 深く考察する必要があります。 
 https://agilejourney.uzabase.com/entry/2022/07/28/103000
OSZAR »