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
600
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
12
5.2k
AWS x さくらのクラウドのハイブリッドクラウドによる安価なフレッツ閉域網接続の実装
kurochan
9
5.1k
GoでTCP Proxyを実装してみよう
kurochan
1
840
サイバーエージェントの広告配信におけるIPoEトラフィックの概況
kurochan
0
390
スケールするというのはどういうことなのか
kurochan
14
4.5k
サイバーエージェントのGitHub Copilot導入と 開発生産性
kurochan
45
42k
Cloudflare Zero Trustを利用したセキュアな開発環境へのアクセス手法の確立
kurochan
10
3.1k
セキュキャンを卒業してその後
kurochan
0
1.3k
サイバーエージェントの実践×実験Snowflake 導入の経緯から最新機能のトライアルまで / How Snowflake Is Used In CyberAgent - Go To the Future
kurochan
1
1k
Other Decks in Technology
See All in Technology
TypeScript、上達の瞬間
sadnessojisan
46
13k
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
2
1.7k
AIチャットボット開発への生成AI活用
ryomrt
0
170
Terraform未経験の御様に対してどの ように導⼊を進めていったか
tkikuchi
2
430
これまでの計測・開発・デプロイ方法全部見せます! / Findy ISUCON 2024-11-14
tohutohu
3
370
100 名超が参加した日経グループ横断の競技型 AWS 学習イベント「Nikkei Group AWS GameDay」の紹介/mediajaws202411
nikkei_engineer_recruiting
1
170
強いチームと開発生産性
onk
PRO
34
11k
Terraform CI/CD パイプラインにおける AWS CodeCommit の代替手段
hiyanger
1
240
Amazon Personalizeのレコメンドシステム構築、実際何するの?〜大体10分で具体的なイメージをつかむ〜
kniino
1
100
ドメイン名の終活について - JPAAWG 7th -
mikit
33
20k
Taming you application's environments
salaboy
0
180
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
2
300
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
38
7.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Designing for Performance
lara
604
68k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Practical Orchestrator
shlominoach
186
10k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
GraphQLとの向き合い方2022年版
quramy
43
13k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
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