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
アプリの実装に役立つBackendとしてのPostgreSQL
Search
Takahashi Ikki
January 20, 2019
Programming
0
120
アプリの実装に役立つBackendとしてのPostgreSQL
2019-01-20 の 岡山モバイルアプリ開発もくもく会 での発表資料です。
Takahashi Ikki
January 20, 2019
Tweet
Share
More Decks by Takahashi Ikki
See All by Takahashi Ikki
アプリケーションエンジニアから見たPostgreSQL16 の新機能/postgresql16-new-information
takahashiikki
0
160
システムリプレースの中でCDCを取り入れている話/chugokudb32-cdc
takahashiikki
1
390
DBリファクタリングのデータリモデリング勘所/stafesstudy-db-modling
takahashiikki
4
1.8k
アプリケーションエンジニアから見たPostgreSQL15 の新機能/postgresql15-new-information
takahashiikki
7
2.7k
HowDoYouLikePostgreSQl12/Chugokudb28-1
takahashiikki
1
1k
SQLチューニング_理論と改善の実例_/pgcon19j_t4
takahashiikki
10
3.4k
SQLチューニング 理論と実践/osc19ni
takahashiikki
0
700
AWS DMSを利用した今風DBリファクタリング/jawsug_okayama_2019
takahashiikki
1
760
DMSを使った異種DB移行で学んだPostgreSQLの面白い所/chugokudb27-postgresql-is-interesting
takahashiikki
2
1.1k
Other Decks in Programming
See All in Programming
Amazon BedrockでサーバレスなAIお料理ボットを作成する!!
tosuri13
0
230
意外とフォントが大事だった話 / Font Issues on Internationalization
fumi23
0
110
Swiftコードバトル必勝法
toshi0383
0
170
Go1.23で入った errorsパッケージの小さなアプデ
kuro_kurorrr
2
390
Rechartsで楽にゴリゴリにカスタマイズする!
10tera
1
170
【TID2024】模擬講義:プログラマと一緒にゲームをデザインしてみよう!
akatsukigames_tech
0
660
Desafios e Lições Aprendidas na Migração de Monólitos para Microsserviços em Java
jessilyneh
2
150
仮想ファイルシステムを導入して開発環境のストレージ課題を解消する
segadevtech
2
550
Modular Monolith Go Server with GraphQL Federation + gRPC
110y
1
590
ドメイン駆動設計を実践するために必要なもの
bikisuke
4
330
Patched fetch did not work
quramy
4
390
Using Livebook to build and deploy internal tools @ ElixirConf 2024
hugobarauna
0
250
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
42
5.7k
Why You Should Never Use an ORM
jnunemaker
PRO
53
8.9k
Design by the Numbers
sachag
277
19k
Why Our Code Smells
bkeepers
PRO
334
56k
Six Lessons from altMBA
skipperchong
26
3.4k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
230
17k
Web Components: a chance to create the future
zenorocha
309
42k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
25
3.9k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
Learning to Love Humans: Emotional Interface Design
aarron
270
40k
Optimizing for Happiness
mojombo
375
69k
A designer walks into a library…
pauljervisheath
201
24k
Transcript
ΞϓϦͷ࣮ʹཱͭ PostgreSQL 2019-01-20 ୈ30ճϞόΠϧΞϓϦ։ൃ͘͘ձ
͓͠ͳ͕͖ 1.͋͏ͱΈʔ 2.PostgreSQLͷྻܕ 3.·ͱΊ
1. ͋͏ͱΈʔ
1. ͋͏ͱΈʔ • ߴڮ Ұٍ • ΦϛΧϨ WebΤϯδχΞ • ຊPostgreSQLϢʔβʔձ
தࠃࢧ෦
גࣜձࣾΦϛΧϨ શࠃ35,000݅ͷࠗ׆ύʔςΟΛ ܝࡌͨ͠ϙʔλϧαΠτ 30ສਓڧͷձһͷํʑʹ͝ར༻͍͍ͯ· ͢ɻ ࠗ׆ͱݴ͑ΦϛΧϨʂ \\͍͍݁ࠗͧʂʂ//
2. PostgreSQLͷྻܕ
ׂͱ͋Γ͕ͪͳΞϓϦ ͷཁ݅ ಥવͰ͕͢ɺօ͞Μ ͜ΕɺͲ͏࣮ͬͯ͠·͢ʁ
λάׂ࣮ͱਏ͗͢ • ొ؆୯ɻ • ฤूͱݕࡧ͕ࠈɻ
1ΧϥϜͷςΩετܕʹcsv۠ΓͰೖΕΔ ߋ৽ਏ͍ɻݕࡧਏ͍ɻ (δΣΠΥʔΫ) tag1, tag2, tag3,... ͬͯΔɻ tagΛ3͔ͭ͠αϙʔτ͠ͳ͍ʁ
ͦ͜ͰྻܕͰ͢Αɻ CREATE TABLE blogs ( title varchar(64), content text, tags
varchar(16)[] )
ྻܕͷྫ INSERT INTO blogs (title, content, tags) VALUES ('͘͘ձ', '໌͘͘ձͰ͢',
'{ "ios", "android" , "PostgreSQL" }') title | contents | tags ------------+----------------------+-------------------------- ͘͘ձ | ໌͘͘ձͰ͢ | {ios,android,PostgreSQL} (1 row)
ྻܕͷϝϦοτ • ΠϯσοΫε͕ޮ͘ɻ • ݕࡧΛ͢Δҝͷԋࢉࢠϝιουͷαϙʔτ͕๛ɻ • औಘޙ֤ݴޠͷྻͱͯ͠༻Ͱ͖Δ ( Djangoͱ͔ͦ ͏.
)
ྻܕͷݕࡧʹ͍ͭͯ 'ios' λά͕͋ΔͷΛݕࡧ. SELECT * FROM blogs WHERE 'ios' =
ANY(tags); title | contents | tags ------------+----------------------+-------------------------- ͘͘ձ | ໌͘͘ձͰ͢ | {ios,android,PostgreSQL} (1 row) ios λά ͕͍ͭͯΔ ͔ͭ android λά͕͍ͭͯΔ Έ͍ͨͳݕࡧͰ͖Δɻ
ྻܕͷऔಘʹ͍ͭͯ SELECT tags[1] AS tag FROM blogs; tag ---------- ios
(1 row) ͦͷ΄͔ʹ tags[2:3] : ྻͷ 2ʙ3൪Λऔಘ tags[2:] : ྻͷ 2൪Ҏ߱Λऔಘ tags[:2] : ྻͷ 2൪ҎԼΛऔಘ ※ 0͔Β։࢝͠ͳ͍ࣄʹதࢭ
ͦͷଞʹָʹཁ݅Λ ຬͨͤΔ SELECT unnest(tags) , count(*) FROM blogs GROUP BY
unnest(tags) ORDER BY count(*) DESC; unnest | count ------------+------- database | 2 ios | 1 PostgreSQL | 1 android | 1 (4 rows)
ྻܕͷσϝϦοτ • ֎෦Ωʔ੍͕షΕͳ͍ɻ => ͷ߹ੑΛอূ͢Δͷ͕͍͠ɻ => λάݕࡧͳͲͷϑϦʔςΩετͷσʔλΛอ࣋͢Δͷʹ ద͍ͯ͠Δɻ
3. ·ͱΊ
3. ·ͱΊ ࠓճɺPostgreSQLͷྻܕͷհΛ͠·ͨ͠ɻ ͱͯڧྗͳΈͰ͕ͪ͢ΖΜϝϦοτɾσϝϦοτ͕͋Γɺ ඞͣۜ͠ͷؙͱ͍͏Θ͚Ͱͳ͍Ͱ͢ɻ ͳͷͰɺunnest() array_agg() Λͬͯ ߦ
<=> ྻؒΛ૬ޓม͢ΔͳͲɺ ϝϦοτɾσϝϦοτΛڗडͰ͖ΔΑ͏ͳܗͰ ͍ͬͯ͘ͷ͕ྑ͍͔ͱࢥ͍·͢ʂ
4. ࠂ தࠃํDBษڧձ 2019-02-02 () ୈ26ճ தࠃํDBษڧձ in Ԭࢁ https://dbstudychugoku.connpass.com/event/112468/
SQLνϡʔχϯά(EXPLAIN)ͷํ๏ύϥϝʔλνϡʔχϯάΛ औΓ্͛·͢ɻ ઈࢍLTൃදऀΛืूதͰ͢ʂʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ