石川覚(126)16Snowflakeの速さの秘訣はプルーニングであり、効果的にプルーニングするにはデータクラスタリングが必要です。クラスタ化したデータを効率的に扱えるデータファイルがマイクロパーティションとなります。今日はSnoflakeの基礎の基礎、マイクロパーティションとデータクラスタリングの解説します。DevelopersIOマイクロパーティションマイクロパーティションとはマイクロパーティションは、Snowflakeのテーブルのデータを格納するファイルです。Stageに配置したデータファイルはCOPYコマンドでロードすると自動的に取り込み順序に基づいて連続したマイクロパーティションに保存されます。マイクロパーティションは、イミュータブル(変更不可能)な特性を持つので、更新する度に新しいファイルが作成します。特長DML操作(DELETE、UPDATE、MERGEなど)は、潜在的なマイクロパーティションメタデータを利用して、テーブルのメンテナンスを簡素化しますテーブルからすべての行を削除するなどの一部の操作は、メタデータのみの操作ですMIN、MAX、COUNTなどの集計操作はメタデータのみの操作ですデータクラスタリングナチュラルデータクラスタリングデータクラスタリングとは、データを分類することを表します。ナチュラルデータクラスタリングは、Stageからロードした順に基づいてデータを分類します。毎日データをロードすると自然と日付順にデータが配置されますが、更に日付と1つ以上のカラムとは相関しているという特性を活かしてデータを分類します。データがテーブルにロードされると、データをロードされた順にマイクロパーティションが作成されるデータロードした日付と1つ以上のカラムとは相関しているという特性を活かすシーケンシャルフィールドを持つテーブル日付フィールドを持つテーブルどうやって決定するのか?1回のデータロードでソースデータを読み取り、マイクロパーティションに書き込みます。次にソースデータの構成が、マイクロパーティションで表現される値の範囲を決定します。ソースデータには特定の日の行が含まれ、その日のデータは連続したマイクロパーティションになるソースデータには1か月または1年の行が含まれ、マイクロパーティションにはその月または年内の日付の最大値/最小値がありますクラスタリングキーによるクラスタ化テーブル前述の通り、全てのテーブルはデータの取り込みに基づいたナチュラルデータクラスタリングを利用できますが、任意のキーでクラスタリングすることも可能です。最大1〜3個のキーを使用することが推奨、キーが多いことが良いことではありません低いカーディナリティから高いカーディナリティの順に設定クラスタリングキーは、クラスタリングに使用するカラムまたは式を指定します。クラスタリング後、同じクラスタリングキーのデータは同じマイクロパーティションにロードされます。クラスタリングテーブルのメンテナンスはSnowflake自動クラスタリングサービスによって処理され、1秒ごとに請求されます。常にクラスタ化テーブルが良いとは限らないクラスタリングキーはすべてのテーブルにとって良い選択とは限りません。自動クラスタリングはクレジットを消費します再クラスタリングはストレージコストも増加させますテーブルをロードした後、クラスターキーを追加するのに費用がかからない自動クラスタリングを無効にすることができますクラスタリングキー選定のポイント:数テラバイト規模のテーブルでは、クラスタリングのメリットが最も大きくなります。TO_DATE(c1));パーティションプルーニングクエリでプルーニングするこれまでデータをなぜデータをクラスタ化して保存したかというと、クエリでプルーニングをしたかったからです。クラスタ化の目的は不必要なデータの読み取りを削減(プルーニング)するためです。(プルーニングとは英語で「剪定(せんてい)」の意で、木の余計な枝を切るように、余計なデータを切ってしまうことの比喩的表現です。3,000億件のレコードが722,313個のパーティションファイルに分割されていた場合、クエリは「1840」を含むパーティションファイルのみを読み取りで済むため、余計なファイルの読み取りや処理が不要になり高速になります。最後にSnowflakeは効率的にプルーニングするためにデータをクラスタリングしてマイクロパーティションに格納しているので、不要なファイルの読み取りを効果的に削減できます。Snowflakeはクラスタキーを設定しなくてもナチュラルオーダーでデータをプルーニングできますが、分類したいキーが明らかな場合はクラスタキーを指定した方がベターです。一般的なデータウェアハウスやデータレイクにクラスタキー相当の設定をすると同様にプルーニングできるようになりますが、事前のETLやデータロード時のソートなどのコストが発生します。Snowflakeはロード時にナチュラルーオーダーでロードするので非常に高速です。データのクラスタリングやソートはフルマネージドサービスレイヤがバックグラウンドで非同期実行して、常に最適なパフォーマンスが得られる状態を維持します。大規模なテーブルの場合、ほとんどのデータがクラスタ化されているため、クエリが常に高速になります。自動クラスタリングはクレジットの消費やストレージコストも生じるのでユースケースに応じて使い分けるということも忘れない方が良いでしょう。1,261,369電気メーカ系SIerのSE、IP電話開発会社の製品企画・開発を経てJoin。Linux、Java、MySQLを中心にウェブ、スマホ、基幹サーバーと何でも屋。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。カフェ店長のオカノです。使いたいときの注意点を書きました。本が出ていたので読んでみたところよかったので紹介させていただきます。EC2)環境において、不要な踏み台サーバをなくすことができる便利なアップデートです。臼田佳祐295ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。洋介252SnowflakeがAWSの東京リージョン上で稼働するようになりました。データを日本に置けます。芳賀健232こんにちは!猫様の忠実なるしもべ、芳賀健です。Tokyoで開催されました。カフェ店長のオカノです。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。