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
最新のRailsでPostgreSQLを使う良さ
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
nyo_taro
November 27, 2023
0
640
最新のRailsでPostgreSQLを使う良さ
- 前提
- PostgreSQLとは
- SaaSにおけるPostgreSQLの利用
- RailsのPostgreSQLサポート
nyo_taro
November 27, 2023
Tweet
Share
More Decks by nyo_taro
See All by nyo_taro
RailsをPdM視点で見てみた
nyo_taro
0
120
プロダクト価値を考えるための情報透明化とチーム文化づくり
nyo_taro
1
390
過去の失敗からリアーキテクチャをやらないと判断した理由
nyo_taro
0
120
ドキュメントファーストの非同期文化で知ったこと
nyo_taro
1
530
チームで品質を高めながらSaaS開発を続けるためにやったこと.pdf
nyo_taro
0
73
Featured
See All Featured
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
240
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
75
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.8k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
250
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
980
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
250
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
200
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
240
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
300
Transcript
最新の Rails で PostgreSQL を使う良さ @nyo_taro
井上 翔太朗 (@nyo_taro) セールステックのエンジニア 好きなエディタは VScode 特徴 ・八王子に生息 ・コーヒーは最近浅煎り ・
ZORN のファン 自己紹介 @nyo_taro
@nyo_taro
前提 PostgreSQL とは SaaS における PostgreSQL の利用 Rails の PostgreSQL
サポート 今回のはなすこと @nyo_taro
今日はこんな話をします Rails で使える PostgreSQL で基本的な機能について Rails と PostgreSQL の最新の使用することで得られる恩恵についてお話 します。
前提 @nyo_taro
PostgreSQL は、カリフォルニア大学バークレー校のコンピューター サイエン ス学部で開発された、オブジェクト リレーショナル データベース管理システ ム ( ORDBMS )
です。 PostgreSQL とは @nyo_taro
Rails では PostgreSQL はデフォルトでサポートされており Rails ガイドも PostgreSQL の使い方が丁寧に記載されています。 https://railsguides.jp/active_record_postgresql.html Rails
と PostgreSQL @nyo_taro
@nyo_taro
SaaS における PostgreSQL の利用 @nyo_taro
2016 年バージョン 9.5 で行単位セキュリティ( RLS )が追加された! 行レベルで DB テナントごとに取得・追加・削除・更新を保護してくれ許 可しなければその操作は拒否される
RLS(Row Level Security) @nyo_taro
複数企業 ( テナント ) が 1 つのシステムを共有する シングルテナントに比べて低コストで利用できる マルチテナント @nyo_taro
RLS あり RLS なし select * from users id name
tenant_id 1 a 1 4 b 1 select * from users id name tenant_id 1 a 1 2 a 2 3 a 3 4 b 1 @nyo_taro
PostgreSQL の機能の Rails サポート @nyo_taro
JSON 、 JSONB データ型 : 非構造化データや動的なスキーマを持つデータ を扱うことができます。 配列データ型 : 単一のカラムに複数の値を格納することができます。
hstore: キーと値のペアを格納するためのデータ型 範囲型( Range Types ) : 日付、数値、時間の範囲を表すためのデータ型 Rails の PostgreSQL サポート ( 一部抜粋 ) @nyo_taro
ENUM の migration が使いやすくなる 外部キー制約に deferrable を指定可能になった PostgreSQL12 生成列( generated
column) のサポート PostgreSQL15 NULLS NOT DISTINCT をサポート Rails7 での PostgreSQL サポートの強化 @nyo_taro
ENUM の migration が使いやすくなる before execute <<-SQL CREATE TYPE status
AS ENUM ('draft', 'published', 'archived', 'trashed'); SQL create_table :articles do |t| t.column :current_status, :status end after change_table :articles do |t| t.enum :current_status, enum_type: "status", default: "draft", null: false end create_enum :status, %w[draft published archived trashed] @nyo_taro
before execute <<-SQL ALTER TABLE users ADD COLUMN full_name character
varying GENERATED ALWAYS AS (last_name || first_name) STORED SQL after add_column :users, :full_name, :virtual, type: :text, as: "last_name || first_name", stored: true PostgreSQL12 生成列( generated column) のサポート @nyo_taro
user = User.create(first_name: ' 太郎', last_name: ' 山田') User.last.full_name #
=> " 山田太郎" PostgreSQL12 生成列( generated column) のサポート @nyo_taro
Rails 内でのテストも追加される @nyo_taro
message が同じでも tag が NULL であれば、複数のレコードが許容 UNIQUE (message, tag) message
が同じで tag が NULL のレコードは一つしか許容されない UNIQUE NULLS NOT DISTINCT(message, tag) PostgreSQL15 NULLS NOT DISTINCT @nyo_taro
`UNIQUE (message, tag)` `UNIQUE NULLS NOT DISTINCT(message, tag)` id message
tag 1 hello NULL 2 hello NULL 3 hello NULL id message tag 1 hello NULL 2 hello tag1 3 hello tag2 PostgreSQL15 NULLS NOT DISTINCT @nyo_taro
Rails を最新にすることで Rails の機能を使って DB の新機能を使える Rails を使うことでサポートしていないなどのテストもある PostgreSQL の最新の機能を使えることで開発の選択肢が広がる
まとめ @nyo_taro
ご静聴ありがとうございました! @nyo_taro