Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
SnowflakeにMySQLとJOINする機能を 実装する
Kurochan
April 04, 2021
Technology
0
180
SnowflakeにMySQLとJOINする機能を 実装する
#SnowVillage LIVE 004
https://www.youtube.com/watch?v=zY7z2IEtqCc
Kurochan
April 04, 2021
Tweet
Share
More Decks by Kurochan
See All by Kurochan
サイバーエージェントの実践×実験Snowflake 導入の経緯から最新機能のトライアルまで / How Snowflake Is Used In CyberAgent - Go To the Future
kurochan
0
220
入門Open Policy Agent: Policy as Codeを目指して / introduction-to-open-policy-agent
kurochan
0
250
WireGuardとOpenID Connectの連携をGoで実装してみた
kurochan
3
1.3k
140兆円の巨大市場、小売業界の再発明に挑む開発プロジェクト #ca_base_next / retail-dx-project
kurochan
1
1.2k
CyberAgentでのSlack 活用事例紹介
kurochan
0
5.8k
入門Envoy
kurochan
3
7.3k
広告配信プロダクトのSnowflakeへの移行
kurochan
2
6.1k
SnowflakeとRedshiftの比較検証
kurochan
1
9.9k
CA20新卒研修 電気通信事業者編
kurochan
0
5.9k
Other Decks in Technology
See All in Technology
失敗から学ぶAWSコスト管理入門 ~想定の50倍以上の請求がきた話~
msato
0
450
1年間のポストモーテム運用とそこから生まれたツール sre-advisor / SRE NEXT 2022
fujiwara3
6
3.5k
New Features in C# 10/11
chack411
0
990
testing journey / テストが嫌いでIT業界を離れるはずだったのに〜テスト嫌いが現場で品質改善を実施するまでの物語〜
aki_moon
1
400
[SRE NEXT 2022]メルカリグループにおけるSREs
srenext
0
420
OSS ことはじめ
hsbt
3
580
Adopting Kafka for the #1 job site in the world
ymyzk
1
690
Devに力を授けたいSREのあゆみ / SRE that wants to empower developers
tocyuki
3
480
VFX Graphを使って 軽率にAudio Visualizerを作る
drumath2237
0
100
読者のことを考えて書いてみよう / Write with your reader in mind
line_developers
PRO
3
370
ZOZOTOWNのProduction Readiness Checklistと信頼性向上の取り組み / Improvement the reliability of ZOZOTOWN with Production Readiness Checklist
akitok_
5
1.9k
SRENEXT2022 組織にSREを実装していくまでの道のり
marnie0301
1
680
Featured
See All Featured
Clear Off the Table
cherdarchuk
79
280k
Intergalactic Javascript Robots from Outer Space
tanoku
261
25k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
498
130k
Pencils Down: Stop Designing & Start Developing
hursman
112
9.8k
It's Worth the Effort
3n
172
25k
What the flash - Photography Introduction
edds
61
10k
Testing 201, or: Great Expectations
jmmastey
21
5.4k
The Invisible Side of Design
smashingmag
289
48k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_i
21
14k
How to name files
jennybc
39
59k
VelocityConf: Rendering Performance Case Studies
addyosmani
316
22k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
12
900
Transcript
SnowflakeʹMySQLͱJOIN͢ΔػೳΛ ࣮͢Δ גࣜձࣾαΠόʔΤʔδΣϯτ AIࣄۀຊ෦ ࠇ࡚ ༏ଠ (@kuro_m88)
ࠇ࡚ ༏ଠ • גࣜձࣾαΠόʔΤʔδΣϯτ Dynalyst ։ൃऀ • ࠂ৴γεςϜͷόοΫΤϯυΛ࡞͍ͬͯ·͢ • ීஈAWS
x Scalaͷࣄ͕ଟ͍Ͱ͢ @kuro_m88 @kurochan
Federated QueryΛ࡞Γ͍ͨ
Federated Query • Redshiftʹࡌ͞Ε͍ͯΔͭ • Redshift͔ΒPostgreSQLʹΫΤϦΛ͛Δ͜ͱ͕Ͱ͖Δ • ͜Ε͕Ͱ͖Δͱɺ ϩάσʔλͱϑΝΫτσʔλͷ ݁߹͕Ͱ͖ͨΓͯ͠خ͍͠
• MySQL·ͩbeta
ཁ͢Δʹ͜Ε͕Γ͍ͨ
SnowflakeͰΓ͍ͨ • Snowflakeʹຬ͍ͯ͠Δ͕ɺRedshift͕ત·͍͠ͱࢥ͏ػೳΛͻͱ্ͭ͛ Δͱ͢ΕFederated Query • ݱঢ়ͦͷΑ͏ͳػೳͳ͍͠ɺಉҰVPCʹSnowflakeͱRDS͕ଘࡏ͠ͳ͍ͨ Ί௨৴͢Δͷͦ͠͏… • ત·͍͠ͷͰͳΜͱ͔ͦΕͬΆ͍ͷΛࣗ࡞͍ͨ͠
• ࣮ͯ͠Έ·ͨ͠ • CyberAgent / snowflake-aws-mysql-connector • https://github.com/CyberAgent/snowflake-aws-mysql-connector
Federated QueryΛ ࣮͢Δ
Snowflakeͱ֎෦αʔϏεͷ࿈ܞ • SnowflakeʹExternal Functionͱ͍͏ػೳ͕͋ΓɺSQLͷؔͱͯ͠AWS LambdaͷؔΛݺͼग़͢͜ͱ͕Մೳ • Lambda FunctionͰRDSʹΞΫηεͯ͠ɺͦͷ݁ՌΛProxy͢ΕSnowflake ͔ΒಈతʹΫΤϦ͕͛ΒΕΔͷͰͳ͍͔…ʁ •
ͱΓ͋͑ͣLambda Function + API Gateway
Lambda Function • ΄΄proxyͯ͠Δ͚ͩ • Lambda FunctionͷҾ͔ΒSQLͷจࣈྻΛऔΓग़͢ • DBʹΫΤϦ͢Δ •
ϨεϙϯεΛܗ͢Δ
LambdaͷϨεϙϯεαΠζ੍ݶ • Lambda FunctionͷϨεϙϯε6MB·Ͱ • ༗ݶͳͷͰϨεϙϯεΛѹॖͯ͠Αͦ͞͏ • Ϩεϙϯε͕େ͖ͦ͏ͩͬͨΒѹॖ͢Δ͜ͱʹ (Ϩεϙϯεʹѹॖ͔ͨ͠Ͳ͏͔ͷϑϥάೖΕ͓ͯ͘)
SnowflakeͷUDF • UDF = User Defined Function • UDFSQLͷଞʹJavascript͕ॻ͚Δ •
UDFʮߦʯΛฦؔ͢ • External FunctionʮߦʯΛฦؔ͢ • ࠓճSnowflakeͷςʔϒϧͱRDSͷςʔϒϧΛJOIN͍ͨ͠…
UDTF • User Defined Table Function • ʮςʔϒϧʯΛฦؔ͢ • UDF:
select my_function(); • UDTF: select * from table(my_table_function()); • ͋ͱؔΛςʔϒϧؔʹม͢Δ͕ؔ͋Εɺ External FunctionΛUDTFͰϥοϓ͢Ε͍͍ͣ…ʂ
ؔΛςʔϒϧؔʹม͢Δؔ: flattenؔ
ؔΛςʔϒϧؔʹม͢Δؔ: flattenؔ
API IntegrationΛઃఆ͢Δ • API Gateway(Lambda)Λݺͼग़͢ํ๏Λఆٛ͢Δ
External FunctionΛఆٛ͢Δ • Snowflake͔ΒAPI GateawyΛݺͼग़͢
UDTFΛఆٛ͢Δ • UDTFͷதͰExternal FunctionΛݺΜͰɺ݁ՌΛflatten͢Δ
UDTFͷதͷSQL • ΫΤϦ݁Ռ͕gzipѹॖ͞Ε͍ͯͨΒల։͠ɺ ૉͷJSONͰ͋Εͦͷ··ύʔε͢Δ
͍ํͷΠϝʔδ
͍ํͷΠϝʔδ
None