Snowflakeのマイクロパーティションのメリットと関西ユーザー会
Snowflakeの関西のユーザー会の熱量が高いと聞き、ぜひ体感してみたいとのことで参加をしてきました。
Snowflakeはコミュニティ活動がたいへん盛んで、さまざまなイベントが企画・実践されています。今は東京が主力ですが、関西も追いつけ追い越せという勢いを感じました。
マイクロパーティションについて学ぶ
Snowflake Data SuperheroであるSakatokuさんによるSnowflakeのアーキテクチャであるマイクロパーテイションについてたっぷり紹介していただきました。
当日の資料も公開してくださり、学習が捗ります。
そしてWestのメンバーの方がマイクロパーティションのまとめの図を用意してくださいました。この図を見れば今回の記事のすべてがわかります。
マイクロパーティションのまとめ#SnowVillage pic.twitter.com/ck07o6rVtp
— T.Ikeda (@TIkeda93820944) August 25, 2024
本記事ではマイクロパーテイションがあることでのメリットの部分を抜粋して紹介します。
データベースのアーキテクチャってなんでこうもワクワクするんだろ#SnowVillage
— りょうさん🍜町中華のオープンデータをつくる🥟 (@RyosanBIMania) August 23, 2024
列指向型のデータベースである
圧縮率や集計速度を上げるためか、Snowflakeの基本コンセプトは列指向型
なるほど、ハイブリッドテーブルというのがあるのか🤔
— りょうさん🍜町中華のオープンデータをつくる🥟 (@RyosanBIMania) August 23, 2024
行単位のINSERTやUPDATEが多い場合はこちらを採用するのかなhttps://t.co/FSWTrvlYBO#SnowVillage pic.twitter.com/NyQ1rWPZJg
ただしハイブリッドテーブルがあるため、行指向型を選択することができる。アプリや基幹システムなどでINSERTやUPDATEが大量発生する場合のロック緩和を考えることができる。
行指向、列指向の詳細については別の記事で紹介します。
メタデータを有効に活用して集計レスポンスを上げる
SELECT MIN(PRICE) FROM my_table;
— りょうさん🍜町中華のオープンデータをつくる🥟 (@RyosanBIMania) August 23, 2024
これはデータを見に行かずに個々のマイクロパーティションのメタデータ見に行くのか、それは早い、めちゃ早い#SnowVillage
マイクロパーティション単位でメタデータを保有しており、SELECTの段階でメタデータを見に行くことで集計レスポンスを向上させる動きがある。
カーディナリティの情報もあるので、メタデータを見るだけである程度集計レスポンスを予測することができるのもいいですね。
不変(イミュータブル)を活用したタイムトラベル
不変(イミュータブル)
— りょうさん🍜町中華のオープンデータをつくる🥟 (@RyosanBIMania) August 23, 2024
一回作ったファイルは書き換えない
INSERTは新規ファイルを作成
UPDATEは古いファイルは退避、新規ファイルを作成
DELETEも古いファイルは退避、新規ファイルを作成
Insertを数件単位でやったらファイルはそのたびに作成される? ある期間で作り直すのかな🤔#SnowVillage
マイクロパーティションはその情報を保持し続ける。過去の情報も効率的に保存をしており、参照することができる。
尚、数件程度のマイクロパーティションは内部的にオートマージするように設計されているよう。
不変(イミュータブル)があるからタイムトラベルができる
— りょうさん🍜町中華のオープンデータをつくる🥟 (@RyosanBIMania) August 23, 2024
タイムトラベルができるから UNDROP ができる
UNDROP 熱い#SnowVillage
旧ファイルが存在し続ける限り、過去のファイルを参照して以前のデータを掘り起こすことができる。
さいごに
SnowflakeはクラウドDBとしての高い技術力だけでなく初心者エンジニアにも入門しやすい設計となっている。またコミュニティの充実度からも自己学習が捗る製品であり、今後の拡張性もあることを体感しました。
今後、弊社ビジネスでもSnowflakeを導入・活用をしていくので、さらに学習・体験を深めてまいります。