■ はじめに
Snowflake (スノーフレイク) を扱うことになったのでメモ。
目次
【1】Snowflake 【2】特徴 【3】構成 / アーキテクチャ 1)ストレージ層 - Storage 2)コンピューティング層 - Compute 3)サービス層 - Services 【4】キャッシュ 1)クエリリザルトキャッシュ 2)メタデータキャッシュ 3)ウェアハウスキャッシュ 【5】関連用語 1)ステージ (Stage) 2)ウェアハウス(Warehouse) 3)SnowSQL 4)クレジット(Snowflake credit)
【1】Snowflake
* Snowflake社が提供するクラウドベースの分析用データウェアハウス => AWS でいう「Redshift」 (Redshiftについては、以下の関連記事を参照のこと。) => Snowflake社は、Oracle出身のデータアーキテクト達が 2012年に米国で創業した会社
https://dk521123.hatenablog.com/entry/2020/02/22/002139
※ データウェアハウス(DWH:Data WareHouse)
* 以下の関連記事を参照のこと。
https://dk521123.hatenablog.com/entry/2020/02/22/002139
【2】特徴
* マルチクラウドプラットフォーム(AWS/Azure/GCP)に対応 * 料金体系:従量課金制
【3】構成 / アーキテクチャ
* Snowflake は、以下のような3層設計 1)ストレージ層 - Storage 2)コンピューティング層 - Compute 3)サービス層 - Services
1)ストレージ層 - Storage
* Snowflakeが保持しているデータが置かれているレイヤ
2)コンピューティング層 - Compute
* データ処理(クエリ)を実行する
3)サービス層 - Services
* Snowflakeの各種管理を担当する [1] セキュリティ機能 [2] ユーザセッションの認証 [3] メタデータ管理 [4] SQL最適化 [5] トランザクション管理
【4】キャッシュ
https://dev.classmethod.jp/articles/snowflake-cache-three/
1)クエリリザルトキャッシュ
* 再利用できるクエリ結果をキャッシュ
2)メタデータキャッシュ
* メタデータ(行数, Max/Min etc)をキャッシュとして使う
3)ウェアハウスキャッシュ
* データのキャッシュ
【5】関連用語
1)ステージ (Stage)
* ファイルからデータをロードする際に、そのファイルを置く場所 => 詳細は、以下の関連記事を参照のこと。
Snowflake ~ 基本編 / ステージ ~
https://dk521123.hatenablog.com/entry/2022/09/01/220643
2)ウェアハウス(Warehouse)
* コンピューティング のこと * サイズを持っている。 => 以下の関連記事も参照のこと。
Snowflake ~ ウェアハウス / Warehouse ~
https://dk521123.hatenablog.com/entry/2022/12/04/000000
3)SnowSQL
* Snowflake用のCLI Client
https://docs.snowflake.com/ja/user-guide/snowsql.html
4)クレジット(Snowflake credit)
https://docs.snowflake.com/ja/user-guide/what-are-credits.html
より抜粋 ~~~~~~~~~~~~ Snowflakeクレジットは、Snowflakeのリソースの消費に対する支払いに使用されます。 Snowflakeクレジットは測定単位であり、 仮想ウェアハウスの実行中、クラウドサービスレイヤーの作業中、サーバーレス機能の使用時など、 顧客がリソースを使用している場合にのみ消費されます。 ~~~~~~~~~~~~
参考文献
https://macro-send.com/blog/snowflake
https://dev.classmethod.jp/articles/snowflake-architecture-keyconcepts/
https://dev.classmethod.jp/articles/about-snowflake-internal-stages/
https://qiita.com/foursue/items/327dbd5dbbe6084a1f32
関連記事
Snowflake ~ 入門編 / Hello world ~
https://dk521123.hatenablog.com/entry/2021/11/22/212520
Snowflake ~ 基本編 / データ型 ~
https://dk521123.hatenablog.com/entry/2021/12/16/095524
Snowflake ~ 基本編 / キャスト ~ ~
https://dk521123.hatenablog.com/entry/2021/12/15/162658
Snowflake ~ 基本編 / テーブル ~
https://dk521123.hatenablog.com/entry/2022/09/03/012113
Snowflake ~ 基本編 / アクセス制御 ~
https://dk521123.hatenablog.com/entry/2021/11/16/231010
Snowflake ~ 基本編 / ゼロコピークローン ~
https://dk521123.hatenablog.com/entry/2021/11/27/134934
Snowflake ~ 基本編 / ステージ ~
https://dk521123.hatenablog.com/entry/2022/09/01/220643
Snowflake ~ データロード / COPY INTO ~
https://dk521123.hatenablog.com/entry/2021/11/15/221245
Snowflake ~ 基本編 / View ~
https://dk521123.hatenablog.com/entry/2022/10/10/000000
Snowflake ~ Materialized View ~
https://dk521123.hatenablog.com/entry/2023/06/22/100804
Snowflake ~ Snowpipe ~
https://dk521123.hatenablog.com/entry/2023/04/15/225515
Snowflake ~ Snowpipe Streaming ~
https://dk521123.hatenablog.com/entry/2023/07/04/001637
Snowflake ~ ウェアハウス / Warehouse ~
https://dk521123.hatenablog.com/entry/2022/12/04/000000
Snowflake ~ リソースモニター ~
https://dk521123.hatenablog.com/entry/2022/12/01/000000
Snowflake ~ ウェアハウス負荷監視 ~
https://dk521123.hatenablog.com/entry/2022/12/06/191727
Snowflake ~ データ アンロード ~
https://dk521123.hatenablog.com/entry/2022/07/04/172738
Snowflakeアンロード の 使用上の注意
https://dk521123.hatenablog.com/entry/2022/07/06/145724
Snowflake ~ ユーザ/ロールあれこれ ~
https://dk521123.hatenablog.com/entry/2022/11/02/144541
Snowflake ~ Removeコマンド ~
https://dk521123.hatenablog.com/entry/2022/09/26/150259
Snowflake ~ ストレージ統合 ~
https://dk521123.hatenablog.com/entry/2022/06/29/221037
Snowflake ~ ストレージ統合の作成手順 ~
https://dk521123.hatenablog.com/entry/2023/07/27/000000
Snowflake ~ Task ~
https://dk521123.hatenablog.com/entry/2023/04/17/174732
Snowflake ~ 日時関連 ~
https://dk521123.hatenablog.com/entry/2022/06/17/113003
Snowflake ~ 日時関連 / 日時取得関数 ~
https://dk521123.hatenablog.com/entry/2022/09/02/092144
Snowflake ~ Timezone ~
https://dk521123.hatenablog.com/entry/2024/10/10/002436
Snowflake ~ 文字列操作関連 ~
https://dk521123.hatenablog.com/entry/2022/10/01/000000
Snowflake ~ NULLの扱い ~
https://dk521123.hatenablog.com/entry/2024/09/15/235911
Snowflake ~ 関係演算 / 集合論 ~
https://dk521123.hatenablog.com/entry/2024/09/12/003814
Snowflake ~ GRANT OWNERSHIP ~
https://dk521123.hatenablog.com/entry/2022/02/25/094250
Snowflake ~ SHOW / DESCRIBE ~
https://dk521123.hatenablog.com/entry/2022/02/24/231532
Snowflake ~ SHOW GRANT ~
https://dk521123.hatenablog.com/entry/2022/10/25/213624
Snowflake ~ File Format ~
https://dk521123.hatenablog.com/entry/2022/07/28/153332
Snowflake ~ MERGE INTO ~
https://dk521123.hatenablog.com/entry/2022/08/01/132611
Snowflake ~ MERGE の使用上の注意 ~
https://dk521123.hatenablog.com/entry/2023/09/05/161817
Snowflake ~ GET_DDL ~
https://dk521123.hatenablog.com/entry/2022/08/12/221106
Snowflake ~ SEQUENCE ~
https://dk521123.hatenablog.com/entry/2023/07/14/091918
Snowflake ~ Dynamic masking ~
https://dk521123.hatenablog.com/entry/2022/10/07/102337
Snowflake ~ Replication ~
https://dk521123.hatenablog.com/entry/2022/10/06/110305
Snowflake ~ SELECT ... EXCLUDE ~
https://dk521123.hatenablog.com/entry/2024/10/01/195225
Snowflake ~ トランザクション ~
https://dk521123.hatenablog.com/entry/2022/12/19/221551
Snowflake ~ ネットワークポリシー ~
https://dk521123.hatenablog.com/entry/2022/12/08/120131
Snowflake ~ TAG ~
https://dk521123.hatenablog.com/entry/2023/08/08/172648
Snowflake ~ クエリの中断 ~
https://dk521123.hatenablog.com/entry/2022/12/09/152837
Snowflake ~ テストデータ作成 / generator ~
https://dk521123.hatenablog.com/entry/2022/06/20/095659
Snowflake ~ Data Sharing ~
https://dk521123.hatenablog.com/entry/2024/02/19/152927
Snowflake ~ IDENTIFIER / SET ~
https://dk521123.hatenablog.com/entry/2024/02/20/095207
Snowflake ~ 囲み文字の除去 ~
https://dk521123.hatenablog.com/entry/2024/09/20/011918
Snowflake ~ Partition構成のデータを取り込む ~
https://dk521123.hatenablog.com/entry/2022/10/28/000925
Snowflake ~ テーブルの簡易バックアップを考える ~
https://dk521123.hatenablog.com/entry/2022/11/07/224328
Snowflake ~ ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR ~
https://dk521123.hatenablog.com/entry/2024/09/30/155315
Snowflakeのパフォーマンス改善 ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/09/20/002235
Snowflakeのパフォーマンス改善 ~ データロードの改善 ~
https://dk521123.hatenablog.com/entry/2022/12/07/111847
Snowflakeのパフォーマンス改善 ~ 検索最適化サービス ~
https://dk521123.hatenablog.com/entry/2023/02/27/120943
Snowflakeのパフォーマンス改善 ~ クラスタリングキー ~
https://dk521123.hatenablog.com/entry/2023/03/04/222610
Snowflakeのパフォーマンス改善 ~ クエリプロファイル / 実行計画 ~
https://dk521123.hatenablog.com/entry/2023/09/12/194705
Snowflake ~ 統計情報 ~
https://dk521123.hatenablog.com/entry/2023/08/03/000817
Snowflake ~ QUERY_HISTORY ビュー ~
https://dk521123.hatenablog.com/entry/2024/10/09/155708
SparkからSnowflakeへの接続について考える
https://dk521123.hatenablog.com/entry/2023/03/19/013833
Snowflake ~ キーペア認証 ~
https://dk521123.hatenablog.com/entry/2023/06/08/004532
権限トラブル時のTips
https://dk521123.hatenablog.com/entry/2022/08/19/131922
Snowflake ~ エラー時の解析方法 ~
https://dk521123.hatenablog.com/entry/2022/04/20/192334
Snowflake ~ 見積もり・コスト ~
https://dk521123.hatenablog.com/entry/2023/06/13/000000
【Snowflake】ストアド ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/12/11/202904
【Snowflake】ストアド ~ 基本編 / 条件分岐 ~
https://dk521123.hatenablog.com/entry/2022/12/26/211349
【Snowflake】ストアド ~ 基本編 / ループ ~
https://dk521123.hatenablog.com/entry/2022/12/16/143349
【Snowflake】ストアド ~ EXECUTE IMMEDIATE ~
https://dk521123.hatenablog.com/entry/2022/12/17/000217
【Snowflake】ストアド ~ クエリ結果を受け取る ~
https://dk521123.hatenablog.com/entry/2022/12/24/212242
【Snowflake】ストアド ~ 例外 / EXCEPTION ~
https://dk521123.hatenablog.com/entry/2022/12/23/223345
【Snowflake】ストアド ~ デバッグログについて ~
https://dk521123.hatenablog.com/entry/2022/12/18/121334
【Snowflake】ストアド ~ S3内にパーティション構成でUnloadする ~
https://dk521123.hatenablog.com/entry/2022/12/27/225629
【Snowflake】ストアド ~ ステージ内でデータ0件の場合エラーにする ~
https://dk521123.hatenablog.com/entry/2022/12/29/175848
Snowflake ~ Pythonでクエリ実行 ~
https://dk521123.hatenablog.com/entry/2023/10/27/235743
権限トラブル時のTips
https://dk521123.hatenablog.com/entry/2022/08/19/131922
エラー「Failed to cast variant value "" to XXX」時の対応
https://dk521123.hatenablog.com/entry/2021/12/17/102659
エラー「Insufficient privileges to operate」時の対応
https://dk521123.hatenablog.com/entry/2022/08/02/090439
エラー「<Object> does not exist or not authorized」時の対応
https://dk521123.hatenablog.com/entry/2022/08/18/120935
エラー「Failure using stage area. ... AccessDenied」時の対応
https://dk521123.hatenablog.com/entry/2022/10/27/195547
エラー「Error assuming AWS_ROLE」時の対応
https://dk521123.hatenablog.com/entry/2022/11/25/175912
所有権変更後にエラー「current role has no privileges on it」
https://dk521123.hatenablog.com/entry/2023/04/14/151140
エラー「Ownership restriction violation」時の対応
https://dk521123.hatenablog.com/entry/2023/07/13/000000
COPY INTO したがデータが格納されていない
https://dk521123.hatenablog.com/entry/2022/12/20/152040
エラー「Transient object cannot be cloned to a permanent object」時の対応
https://dk521123.hatenablog.com/entry/2024/09/13/213300
エラー「String 'XXXXX...' is too long and would be truncated」が発生
https://dk521123.hatenablog.com/entry/2024/10/31/133028
指定した日付分アンロードするSQLを生成するPythonコード
https://dk521123.hatenablog.com/entry/2023/08/09/000000
Kafkaコネクタ ~ Kafka用Snowflakeコネクタ ~
https://dk521123.hatenablog.com/entry/2023/06/07/144114
Amazon Redshift ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/22/002139