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
SnowflakeにMySQLとJOINする機能を 実装する
Search
Kurochan
April 04, 2021
Technology
0
690
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
サイバーエージェント流クラウドコスト削減施策「みんなで金塊堀太郎」
kurochan
4
2.5k
AWS Elemental MediaPackageと格闘🤼
kurochan
2
63
サイバーエージェントでのSlack活用事例 @ 2025
kurochan
5
130
15年入社者に聞く! これまでのCAのキャリアとこれから
kurochan
1
290
入門 電気通信事業者
kurochan
13
5.7k
AWS x さくらのクラウドのハイブリッドクラウドによる安価なフレッツ閉域網接続の実装
kurochan
9
5.9k
GoでTCP Proxyを実装してみよう
kurochan
1
1.2k
サイバーエージェントの広告配信におけるIPoEトラフィックの概況
kurochan
0
510
スケールするというのはどういうことなのか
kurochan
14
5k
Other Decks in Technology
See All in Technology
新米エンジニアをTech Leadに任命する ー 成長を支える挑戦的な人と組織のマネジメント
naopr
1
340
ざっくり学ぶ 『エンジニアリングリーダー 技術組織を育てるリーダーシップと セルフマネジメント』 / 50 minute Engineering Leader
iwashi86
8
4k
書籍『実践 Apache Iceberg』の歩き方
ishikawa_satoru
0
410
[Journal club] Thinking in Space: How Multimodal Large Language Models See, Remember, and Recall Spaces
keio_smilab
PRO
0
110
設計に疎いエンジニアでも始めやすいアーキテクチャドキュメント
phaya72
22
14k
データエンジニアとして生存するために 〜界隈を盛り上げる「お祭り」が必要な理由〜 / data_summit_findy_Session_1
sansan_randd
0
330
GPUをつかってベクトル検索を扱う手法のお話し~NVIDIA cuVSとCAGRA~
fshuhe
0
310
プレイドのユニークな技術とインターンのリアル
plaidtech
PRO
1
590
初海外がre:Inventだった人間の感じたこと
tommy0124
1
160
kotlin-lsp の開発開始に触発されて、Emacs で Kotlin 開発に挑戦した記録 / kotlin‑lsp as a Catalyst: My Journey to Kotlin Development in Emacs
nabeo
2
160
GCASアップデート(202508-202510)
techniczna
0
220
ラスベガスの歩き方 2025年版(re:Invent 事前勉強会)
junjikoide
0
720
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
412
23k
Navigating Team Friction
lara
190
15k
Building a Modern Day E-commerce SEO Strategy
aleyda
44
7.9k
How GitHub (no longer) Works
holman
315
140k
Building an army of robots
kneath
306
46k
Leading Effective Engineering Teams in the AI Era
addyosmani
7
680
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Building Adaptive Systems
keathley
44
2.8k
Raft: Consensus for Rubyists
vanstee
140
7.2k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Context Engineering - Making Every Token Count
addyosmani
8
330
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