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
可能な限りRDB脳のままCloud_Firestoreを使ってみる.pdf
Search
TsukasaSekiguchi
June 01, 2019
Technology
0
670
可能な限りRDB脳のままCloud_Firestoreを使ってみる.pdf
https://gunmaweb.connpass.com/event/127593/
のLTスライドです!
TsukasaSekiguchi
June 01, 2019
Tweet
Share
More Decks by TsukasaSekiguchi
See All by TsukasaSekiguchi
おれのAI活用の現状とこれから
tsukasagr
0
150
Deep Researchで積読解消!技術書キャッチアップ術
tsukasagr
0
57
v0とCursorで爆速開発🚀
tsukasagr
0
210
Prismaを1年くらい使ってみたのでちょっと語る
tsukasagr
0
200
playwrightのVSCode拡張が便利すぎて、もはやE2E書けないとか言い訳できないレベルだった
tsukasagr
0
200
AWS_Copilotではじめる簡単コンテナ運用.pdf
tsukasagr
0
370
SupabaseにBaaS拡大の未来を感じた
tsukasagr
0
270
超ざっくりFirebase vs Amplify
tsukasagr
0
320
NestJSがいい感じだった
tsukasagr
0
320
Other Decks in Technology
See All in Technology
Github Copilot エージェントモードで試してみた
ochtum
0
110
"サービスチーム" での技術選定 / Making Technology Decisions for the Service Team
kaminashi
1
180
Amazon S3標準/ S3 Tables/S3 Express One Zoneを使ったログ分析
shigeruoda
4
560
AIの最新技術&テーマをつまんで紹介&フリートークするシリーズ #1 量子機械学習の入門
tkhresk
0
140
「良さそう」と「とても良い」の間には 「良さそうだがホンマか」がたくさんある / 2025.07.01 LLM品質Night
smiyawaki0820
1
340
Model Mondays S2E03: SLMs & Reasoning
nitya
0
110
プロダクトエンジニアリング組織への歩み、その現在地 / Our journey to becoming a product engineering organization
hiro_torii
0
130
Leveraging Open-Source Tools for Creating 3D Tiles in the Urban Environment
simboss
PRO
0
110
強化されたAmazon Location Serviceによる新機能と開発者体験
dayjournal
3
230
CI/CD/IaC 久々に0から環境を作ったらこうなりました
kaz29
1
190
Tech-Verse 2025 Global CTO Session
lycorptech_jp
PRO
0
530
BrainPadプログラミングコンテスト記念LT会2025_社内イベント&問題解説
brainpadpr
1
170
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1370
200k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
670
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Building Applications with DynamoDB
mza
95
6.5k
KATA
mclloyd
30
14k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.4k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Building an army of robots
kneath
306
45k
Transcript
ՄೳͳݶΓRDBͷ·· Cloud FireStoreΛ ͬͯΈΔ 2019/06/01 Gunma.web #35 ؔޱ ࢘
໊લ: ؔޱ࢘ SNS: GitHub: TsukasaGR Twitter: TsukasaGr NewsPicks: ؔޱ࢘ ࠲ӈͷ
ࣗͷͨΊʹɺଞਓʹਚ͘͢ ࣄ: αϥϦʔϚϯ: SIerͰ৽نࣄۀ(toC͚ͷWebαʔϏε)։ൃ ϑϦʔϥϯε: ελʔτΞοϓͷWebΤϯδχΞ ࠷ۙ৮ͬͯΔͷ: PHP(Laravel)ɺJavascript/Typescript(Vue.js/Nuxt.js)ɺGraphQLɺDockerɺAWSɺFirebase ࣗݾհ
What is Cloud Firestore? • Firebase͕ఏڙ͍ͯ͠ΔΫϥυσʔλϕʔε • ϑϩϯτΤϯυ͔Βૢ࡞ग़དྷΔ • Φʔτεέʔϧͯ͘͠ΕΔ
• ϦΞϧλΠϜಉظ͕ඵͰ࣮ݱग़དྷΔ • NoSQLͳͷͰRDBͱউख͕͍ͣͿΜҧ͏
• Firebase͕ఏڙ͍ͯ͠ΔΫϥυσʔλϕʔε • ϑϩϯτΤϯυ͔Βૢ࡞ग़དྷΔ • Φʔτεέʔϧͯ͘͠ΕΔ • ϦΞϧλΠϜಉظ͕ඵͰ࣮ݱग़དྷΔ • NoSQLͳͷͰRDBͱউख͕͍ͣͿΜҧ͏
ϑϩϯτΤϯυ͔Βૢ࡞ग़དྷΔ Ұൠతͳ8FC"QQ 41" $MPVE'JSFTUPSFΛͬͨ 8FC"QQ 41"
ϑϩϯτΤϯυ͔Βૢ࡞ग़དྷΔ Ұൠతͳ8FC"QQ 41" $MPVE'JSFTUPSFΛͬͨ 8FC"QQ 41" App Server͕ෆཁʂ
αʔόʔཧ͕ෆཁ • AppServerΛ༻ҙ͠ͳͯ͘ྑ͍ • όοΫΤϯυͷॲཧΛҰॻ͔ͣʹϑϩϯτΤϯ υͷΈͰ݁ग़དྷΔ
• Firebase͕ఏڙ͍ͯ͠ΔΫϥυσʔλϕʔε • ϑϩϯτΤϯυ͔Βૢ࡞ग़དྷΔ • Φʔτεέʔϧͯ͘͠ΕΔ • ϦΞϧλΠϜಉظ͕ඵͰ࣮ݱग़དྷΔ • NoSQLͳͷͰRDBͱউख͕͍ͣͿΜҧ͏
αʔόʔཧ͕ෆཁ Ұൠతͳ8FC"QQ 41" $MPVE'JSFTUPSFΛͬͨ 8FC"QQ 41"
αʔόʔཧ͕ෆཁ Ұൠతͳ8FC"QQ 41" $MPVE'JSFTUPSFΛͬͨ 8FC"QQ 41" DB Server͕ෆཁʂ
αʔόʔཧ͕ෆཁ • DBServerΛ༻ҙ͠ͳͯ͘ྑ͍ • Φʔτεέʔϧͯ͘͠ΕΔͷͰߴෛՙʹΑΔμ ϯΛؾʹ͠ͳͯ͘ྑ͍
• Firebase͕ఏڙ͍ͯ͠ΔΫϥυσʔλϕʔε • ϑϩϯτΤϯυ͔Βૢ࡞ग़དྷΔ • Φʔτεέʔϧͯ͘͠ΕΔ • ϦΞϧλΠϜಉظ͕ඵͰ࣮ݱग़དྷΔ • NoSQLͳͷͰRDBͱউख͕͍ͣͿΜҧ͏
ϦΞϧλΠϜಉظָ͕ Ұൠతͳ8FC"QQ 41" $MPVE'JSFTUPSFΛͬͨ 8FC"QQ 41"
ϦΞϧλΠϜಉظָ͕ Ұൠతͳ8FC"QQ 41" $MPVE'JSFTUPSFΛͬͨ 8FC"QQ 41" ΈԽָ͕ʂ
ϦΞϧλΠϜಉظָ͕ • Web Socket ServerΛ༻ҙ͠ͳͯ͘ྑ͍ • ߏஙίετθϩ
• Firebase͕ఏڙ͍ͯ͠ΔΫϥυσʔλϕʔε • ϑϩϯτΤϯυ͔Βૢ࡞ग़དྷΔ • Φʔτεέʔϧͯ͘͠ΕΔ • ϦΞϧλΠϜಉظ͕ඵͰ࣮ݱग़དྷΔ • NoSQLͳͷͰRDBͱউख͕͍ͣͿΜҧ͏
RDBͱউख͕͍ͣͿΜҧ͏ Ұൠతͳ42- $MPVE'JSFTUPSFΛͬͨ ΫΤϦ
RDBͱউख͕͍ͣͿΜҧ͏ Ұൠతͳ42- $MPVE'JSFTUPSFΛͬͨ ΫΤϦ ϦϨʔγϣϯઌͷ݅Ͱ ͍͘ΒͰࢦఆग़དྷΔ ϦϨʔγϣϯઌͷ͕͔݅ͳΓݶఆతͰɺ ͦͦϦϨʔγϣϯ͢Δͷͪΐ͍໘
ͬ͘͟ΓRDB NoSQL 3%# 'JSFTUPSF /P42- • ݫີ͞ʹΑΔ҆৺ײ • ͔Ώ͍ͱ͜Ζʹख͕ಧ͘ •
େنσʔλʹ͑͏Δͷ͕ͭΒ ͨΜ • ܰշ͞ɺॊೈ͞ʹΑΔߴύϑΥʔ Ϛϯε • γϯϓϧ͕ނʹ͔Ώ͍ͱ͜Ζࣗ ͰؤுΔ
ͬ͘͟ΓRDB NoSQL 3%# 'JSFTUPSF /P42- • ݫີ͞ʹΑΔ҆৺ײ • ͔Ώ͍ͱ͜Ζʹख͕ಧ͘ •
େنσʔλʹ͑͏Δͷ͕ͭΒ ͨΜ • ܰշ͞ɺॊೈ͞ʹΑΔߴύϑΥʔ Ϛϯε • γϯϓϧ͕ނʹ͔Ώ͍ͱ͜Ζࣗ ͰؤுΔ ͕ඞཁ
1: σʔλͷԽ 3%# 'JSFTUPSF /P42-
1: σʔλͷԽ 3%# 'JSFTUPSF /P42- ͋͑ͯඇਖ਼نԽͯ͠ ࣋ͨͤΔ
2: Client Side Join 3%# 'JSFTUPSF /P42-
2: Client Side Join 3%# 'JSFTUPSF /P42- ݩσʔλऔಘޙɺϦϨʔγϣϯઌͷσʔλΛऔಘ
Client Side Join͢ΕRDBͷ··ͰͦΕͳΓʹ͑Δ • σʔλΛԽͤ͞ΔͷRDB͔Β͢Δͱ࠷ॳڋ ൱Ԡ͕ग़ͯ͠·͏ • Client Side JoinͳΒDBΛਖ਼نԽͨ͠··Ͱߦ͚Δ
• (ݺͼग़͢ଆN+1Λঝͷ͏͑ͰΰϦΰϦΔඞཁ͋Δ͕)
ͦΕͰͬͺΓਏΈ͋Δ • ͑Δൺֱԋࢉࢠ <, <=, ==, >, >= ͷΈ •
OR͕͑ͳ͍ • In۟͑ͳ͍ • Like͑ͳ͍
ෳࡶͳݕࡧΛ͍ͨ͠߹ Ҿ༻ɿhttps://firebase.google.com/docs/firestore/solutions/search
ෳࡶͳݕࡧΛ͍ͨ͠߹ Ҿ༻ɿhttps://firebase.google.com/docs/firestore/solutions/search ෳࡶͳ݅ΛFirestoreͰΓ͘Γ͢Δͷݱ࣮తͰͳ͍
ෳࡶͳݕࡧΛ͍ͨ͠߹ Ҿ༻ɿhttps://firebase.google.com/docs/firestore/solutions/search ෳࡶͳ݅ΛFirestoreͰΓ͘Γ͢Δͷݱ࣮తͰͳ͍ શจݕࡧΛ͏
શจݕࡧαʔϏεΛ͏ Firestoreొ࣌ʹAlgoliaʹσʔλΛొ͓͚ͯ͠ɺ
શจݕࡧαʔϏεΛ͏ Firestoreొ࣌ʹAlgoliaʹσʔλΛొ͓͚ͯ͠ɺ ॊೈɺ͔ͭߴʹσʔλऔಘग़དྷΔ
શจݕࡧαʔϏεΛ͏ Firestoreొ࣌ʹAlgoliaʹσʔλΛొ͓͚ͯ͠ɺ ॊೈɺ͔ͭߴʹσʔλऔಘग़དྷΔ શจݕࡧ × Client Side Join = DBΛਖ਼نԽͨ͠··FirestoreΛ͑Δʂ
ͨͩ͠ɺ༻๏༻ྔΛकͬͯਖ਼ͬͨ͘͠΄͏͕ྑ͍ • ͦͦRDBͱNoSQLͰత͕ҧ͏ͷͰ͏໘ ͕ҟͳΔ • ͲͪΒ͔͚ͩͰͳ͘ɺ྆ํΛॴʹΑ͍ͬͯ ͚Δͷ͕εϚʔτ(ͱࢥΘΕΔ)
Ͱɺͳͥ͜ͷLTΛͨ͠ͷ͔ • ʮͱΓ͋͑ͣࠔͬͨΒϩΩιχϯʯతͳײ͡Ͱ༻๏༻ ྔΛଟগແࢹͯ͠ͰָʹͳΓ͍͕ͨ࣌͋Δͣ
ϩΩιχϯͷ͍࣌ • SPA(※) • DBαʔόʔΛཧͨ͘͠ͳ͍ • ϦΞϧλΠϜσʔλಉظΛ͍͍ͨ (※)AlgoliaΛར༻͢Δ߹όοΫΤϯυ͕ඞཁ͕ͩɺCloudFunctionsΛ͏͜ͱͰAppServerෆཁʹͳΔ
ϩΩιχϯͷ͍࣌ • SPA • DBαʔόʔΛཧͨ͘͠ͳ͍ • ϦΞϧλΠϜσʔλಉظΛ͍͍ͨ DBΞΫηεҎ֎ ϑϩϯτͷΈ Ͱ݁͢Δ
(※)AlgoliaΛར༻͢Δ߹όοΫΤϯυ͕ඞཁ͕ͩɺCloudFunctionsΛ͏͜ͱͰAppServerෆཁʹͳΔ
ϩΩιχϯͷ͍࣌ • SPA • DBαʔόʔΛཧͨ͘͠ͳ͍ • ϦΞϧλΠϜσʔλಉظΛ͍͍ͨ εέʔϧ͢Δ͔͠Εͳ͍͚Ͳɺ͠ͳ͍͔ ͠Εͳ͍ɺͨͩϦιʔεݶΒΕ͍ͯ ΔɺΈ͍ͨͳ࣌ʹ࠷ॳ͔ΒΦʔτεέʔϧ
ͷΈԽͳΜͯͬͯΒΕͳ͍ DBΞΫηεҎ֎ ϑϩϯτͷΈ Ͱ݁͢Δ (※)AlgoliaΛར༻͢Δ߹όοΫΤϯυ͕ඞཁ͕ͩɺCloudFunctionsΛ͏͜ͱͰAppServerෆཁʹͳΔ
ϩΩιχϯͷ͍࣌ • SPA • DBαʔόʔΛཧͨ͘͠ͳ͍ • ϦΞϧλΠϜσʔλಉظΛ͍͍ͨ εέʔϧ͢Δ͔͠Εͳ͍͚Ͳɺ͠ͳ͍͔ ͠Εͳ͍ɺͨͩϦιʔεݶΒΕ͍ͯ ΔɺΈ͍ͨͳ࣌ʹ࠷ॳ͔ΒΦʔτεέʔϧ
ͷΈԽͳΜͯͬͯΒΕͳ͍ ௨όοξνϟοτػೳ͚ͩαΫοͱϦΞϧλΠϜಉظ͍͚ͨ͠Ͳ WebSocketཧղ͖͠Εͯͳ͍࣌ؒ͠ͳ͍ DBΞΫηεҎ֎ ϑϩϯτͷΈ Ͱ݁͢Δ (※)AlgoliaΛར༻͢Δ߹όοΫΤϯυ͕ඞཁ͕ͩɺCloudFunctionsΛ͏͜ͱͰAppServerෆཁʹͳΔ
ϩΩιχϯͷ͍࣌ • SPA • DBαʔόʔΛཧͨ͘͠ͳ͍ • ϦΞϧλΠϜσʔλಉظΛ͍͍ͨ εέʔϧ͢Δ͔͠Εͳ͍͚Ͳɺ͠ͳ͍͔ ͠Εͳ͍ɺͨͩϦιʔεݶΒΕ͍ͯ ΔɺΈ͍ͨͳ࣌ʹ࠷ॳ͔ΒΦʔτεέʔϧ
ͷΈԽͳΜͯͬͯΒΕͳ͍ ௨όοξνϟοτػೳ͚ͩαΫοͱϦΞϧλΠϜಉظ͍͚ͨ͠Ͳ WebSocketཧղ͖͠Εͯͳ͍࣌ؒ͠ͳ͍ DBΛਖ਼نԽͨ͠··FirestoreΛ͏͕͘Δ ͔͠Εͳ͍(͠ɺདྷͳ͍͔͠Εͳ͍) DBΞΫηεҎ֎ ϑϩϯτͷΈ Ͱ݁͢Δ (※)AlgoliaΛར༻͢Δ߹όοΫΤϯυ͕ඞཁ͕ͩɺCloudFunctionsΛ͏͜ͱͰAppServerෆཁʹͳΔ
͍͞͝ʹ
• ࠓ͍ͭͬͯ͘ΔϓϩμΫτͰࢼ͍ͯ͠Δ͕ɺ·ͩྑ ͠ѱ͠ΛஅͰ͖͍ͯͳ͍ • RDB͕࿀͘͠ͳΔ࣌ਖ਼݁ߏ͋Δ • ͦΕͰݸਓతʹ͏ཧ༝ҎԼ • DB Serverෆཁ
>>> App Serverෆཁ >>> ϦΞ ϧλΠϜσʔλಉظ • ແྉ͔Β࢝ΊΒΕΔͷͰɺͥͻօ͞Μ৮ͬͯΈͯ ͍͔͕Ͱ͠ΐ͏͔ʂ