Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
アプリの実装に役立つBackendとしてのPostgreSQL
Takahashi Ikki
January 20, 2019
Programming
0
71
アプリの実装に役立つBackendとしてのPostgreSQL
2019-01-20 の 岡山モバイルアプリ開発もくもく会 での発表資料です。
Takahashi Ikki
January 20, 2019
Tweet
Share
More Decks by Takahashi Ikki
See All by Takahashi Ikki
アプリケーションエンジニアから見たPostgreSQL15 の新機能/postgresql15-new-information
takahashiikki
6
2.1k
HowDoYouLikePostgreSQl12/Chugokudb28-1
takahashiikki
1
680
SQLチューニング_理論と改善の実例_/pgcon19j_t4
takahashiikki
10
2.9k
SQLチューニング 理論と実践/osc19ni
takahashiikki
0
470
AWS DMSを利用した今風DBリファクタリング/jawsug_okayama_2019
takahashiikki
1
480
DMSを使った異種DB移行で学んだPostgreSQLの面白い所/chugokudb27-postgresql-is-interesting
takahashiikki
2
790
SQLチューニングの基礎~基礎から振り返るExplainコマンド~/chugokudb26-sql-tuning
takahashiikki
0
860
オミカレを支えるチーム開発 ~プロダクトを支える文化~/phpconference-sendai2019-omicale
takahashiikki
2
3.6k
PostgreSQLをAWS DMSで安心安全バージョンアップ/chugokudb_25_session1
takahashiikki
2
2.8k
Other Decks in Programming
See All in Programming
Git Rebase
bkuhlmann
10
1.2k
Amazon QuickSightのアップデート -re:Invent 2022の復習&2022年ハイライト-
shogo452
0
260
CPU/GPU高速化セミナー 浮動小数点から文字列への高速変換の論文を読んでみた / cpugpu acceleration seminar 20230201
fixstars
0
110
Glance App Widgetでウィジェットを作ろう / MoT TechTalk #15
mot_techtalk
0
160
PHPDocにおける配列の型定義を少し知る
shimabox
1
140
Prácticas de Seguridad en Kubernetes
pablokbs
0
130
Swift Concurrency in GoodNotes
inamiy
4
1.4k
Functional Fun in Kotlin
nomisrev
1
130
OSC大阪 パスワード認証は人類には早すぎる ~ IDaaSを使ったソーシャルログインのすすめ ~
authyasan
7
1.5k
T3 Stack and TypeScript ecosystem
quramy
3
820
Cloudflare WorkersでGoを動かすライブラリを作っている話
syumai
1
340
SwiftPMのPlugin入門 / introduction_to_swiftpm_plugin
uhooi
2
110
Featured
See All Featured
Three Pipe Problems
jasonvnalue
89
8.9k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
349
27k
Stop Working from a Prison Cell
hatefulcrawdad
263
18k
The Art of Programming - Codeland 2020
erikaheidi
36
11k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
239
19k
Unsuck your backbone
ammeep
659
56k
5 minutes of I Can Smell Your CMS
philhawksworth
198
18k
Code Reviewing Like a Champion
maltzj
508
38k
The Straight Up "How To Draw Better" Workshop
denniskardys
226
130k
The Power of CSS Pseudo Elements
geoffreycrofte
52
4.3k
GraphQLとの向き合い方2022年版
quramy
20
9.9k
Agile that works and the tools we love
rasmusluckow
321
20k
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ൃදऀΛืूதͰ͢ʂʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ