More Related Content
Similar to Snowflake Elastic Data Warehouse as a Service (20)
Snowflake Elastic Data Warehouse as a Service
- 2. Agenda
1. 自己紹介
2. Elastic Data Warehouse as a Service
最近の大量データ処理基盤
従来型DWHの限界とSnowflake
Snowflake Computing
DWHに求められる機能
Snowflakeの特徴
3. Snowflakeの使い方
アカウント登録
Webコンソール/CLIツール
Database/Table/Warehouse/File Format/Stage
データロード、検索実行
頻繁に実行するSQL
4. 参考情報
5. まとめ
(Appendix) Snowflake Webコンソール詳細
1
- 3. 1. 自己紹介
• Name
₋ 本橋 峰明(Mineaki Motohashi)
• Contact
₋ mineaki.motohashi@gmail.com
• Job
₋ 某データベースベンダにて、データベース、アプリケーションサー
バのコンサルティング、プリセールス、新入社員のトレーニング
₋ 某コンサルティングファームにて、セキュリティ関連のコンサル
ティング、ERP基盤関連の構想立案から提案、構築、運用
₋ 現職にて、ID-POSシステムの設計、開発、運用、ベンダマネジメ
ント、技術検証など
• Database Experience
₋ Oracle Database、Microsoft SQL Server、Postgres、MySQL、
Pivotal Greenplum、Google BigQuery/Cloud Spanner、HPE
Vertica、AWS Redshift、MemSQL、Snowflake
• Residence
₋ 厚木
• Hobby
₋ ボウリング
₋ バドミントン
2
- 4. 2. Elastic Data Warehouse ~最近の大量データ処理基盤~
• 大量処理にはHadoop/Sparkベースのソリューションが向いていると
分類されることが多いが、本当にそうなのか?
• AWS Redshift、Google BigQuery、HPE Vertica、Pivotal
Greenplumを始め、様々な分散データベースが存在するが、良し悪
しや向き不向きは?
• 様々な大量データ処理基盤が存在するが、性能と使いやすさを両立す
る基盤はないのか?
3
- 5. 2. Elastic Data Warehouse ~従来型DWHの限界とSnowflake ~
• 従来型DWHはダイナミックな弾力性(Elasticity)を提供できる設計がされて
いない。
• アプライアンス製品は、ベストプラクティスに基づいて決められた構成
• ソフトウェア製品は、かなりの運用作業を伴うため、真に弾力性を持つとは言いがたい
• クラウドサービスは、ソフトウェア製品をクラウド環境に移植しただけのものが多い
• 共有ディスクアーキテクチャ vs 非共有アーキテクチャ(昔話の再掲)
• 共有ディスクアーキテクチャは、ノード数が増えると、ストレージとネットワークがボト
ルネックとなりうる
• 非共有ディスクアーキテクチャは、複数ノードへの最適なデータ配分や、データ再分散が
ボトルネックとなりうる
4
• Snowflakeでは、ストレージとコンピュート
リソースを物理的に分離しつつ、論理的に統
合した新しいアーキテクチャ「マルチクラス
タ、共有データアーキテクチャ」を実現
• 以下の独立したコンポーネントから構成
• Database storage:Snowflake DWHサービス内の
データ永続化ストレージレイヤ
• Processing:クエリに必要なデータ処理を実行するコ
ンピュートリソース
• Cloud services:メタデータ、インフラ管理、セキュ
リティ、アクセス制御などを管理する共通サービス
- 6. 2. Elastic Data Warehouse ~Snowflake Computing~
5
• 2012年に創業、翌年から毎年資金調達し調達総額$215M(約258億円)
• BIツールが次々と対応(直近では、10/3にGAとなったMSTR10.9が対応)
• CEOは元MicrosoftのAzureも含むServer/Toolsビジネスを牽引していた
Bob Muglia
• CTOは元OracleのRACのLead ArchitectのBenoit Dagevilleで、並列デー
タベースの研究で博士号を取得、80以上の特許を保有
• Founder Architectは元Oracleでオプティマイザ/並列実行のグループの
LeadのThierry Cruanesで、データベースの研究で博士号を取得、40以
上の特許を保有
• VP of Engeneeringは元MicrosoftのGM、Facebookのデータインフラ
チームのLeadのSameet Agarwalで、世界最大規模のHadoop環境を構築
し、Hive、Presto、Scubaなどのテクノロジーをインキュベート
• 数多くの調査会社のレポートで高評価
• ForresterWave「BigDataWarehouse Q2 2017」にて、低コスト、ハイパフォーマンス、
スケーラブルなDWHとしてStrong Performerと評価
• Gartner「Critical Capabilities for Data Management Solutions for Analytics」の
Vendors’ Product Scores for the Traditional Data Warehouse Use Caseにて
BigQueryよりも高評価
• Gartner「Magic Quadrant for Data Management Solution for Analytics」にてNiche
Playersと評価
• オフィシャルには日本での利用をサポートをしておらず実績なし
- 7. 2. Elastic Data Warehouse ~DWHに求められる機能~
6
• すぐに簡単に始められる(Evaluating Time to Value)
• 使用した分だけ支払う(Usage-based pricing)
• 標準SQL(Standard SQL)
• スケーラビリティ(Scalability)、弾力性(Elasticity)
• データ共有(Data Sharing)
• 高可用性(High availability)
• バックアップ/リカバリ(Backup/Recovery)、クローン(Clone)
• セキュリティ(Security)
• 運用管理作業の低減(Self-managing services)
- 8. 2. Elastic Data Warehouse ~Snowflakeの特徴(1/2)~
7
• すぐに簡単に始められる(Evaluating Time to Value)
• ETLなしでも簡単にデータをロード可能
• 半構造化データも扱えて1つのデータベースに統合可能
• 使用した分だけ支払う(Usage-based pricing)
• 最大ワークロードに合わせたキャパシティ不要
• アクセスがない時は自動でサスペンドさせることができ、その間は費用がかからない
• コンピューティング/ストレージリソースを自由に変更可能でき、費用を最適化可能
• 標準SQL(Standard SQL)
• SQL-99の大部分、およびSQL-2003の分析拡張部分をサポート
• スケーラビリティ(Scalability)、弾力性(Elasticity)
• リアルタイムに処理性能と同時実行性能を変更可能
• 処理量に応じて自動スケールアウト/ダウン
• ワークロードを分離することによる競合の回避、ボトルネックが発生しないアーキテク
チャ
- 9. 2. Elastic Data Warehouse ~Snowflakeの特徴(2/2)~
8
• データ共有(Data Sharing)
• データ/API連携ではなく、データベースの一部をアクセス制御をかけて、他組織に共有
• 他組織はコンピュートリソースを用意し、データベースアクセス(費用は他組織で負担)
• 高可用性(High availability)
• 複数データセンタにまたがって環境が構築されていて、障害発生時にも迅速な復旧が可能
• バックアップ/リカバリ(Backup/Recovery)、クローン(Clone)
• Table/Schema/Database単位でPoint-in-time Recovery
• 削除してしまったTable/Schema/Databaseの復元も可能
• 過去時点のデータに対してもクエリを実行可能
• 過去時点のTable/Schema/Databaseをクローン可能
• セキュリティ(Security)
• 全ての通信経路、およびデータを暗号化
• 多要素認証
• SAML2.0によるフェデレーションサービス
• SIEMによる監視および通知
• SOC2 Type II、PCI DSS、HIPAAといった第三者によるセキュリティ認証/認定
• 運用管理作業の低減(Self-managing services)
- 11. 3. Snowflakeの使い方 ~アカウント登録(2/5)~
10
• 必要な情報を入力
<製品情報>
• エディション
Standard、Premier、Enterprise、
Enterprise for sensitive dataから選択
• リージョン
us-east(n.virginia)、us-west(oregon)、
eu(frankfurt)、asia pacific(sydney)か
ら選択
※レイテンシを考慮すると、日本では
asia pacificよりもus-westの方がおす
すめ
<連絡先>
• Email
• 姓、名
- 12. 3. Snowflakeの使い方 ~アカウント登録(3/5)~
11
• 必要な情報を入力し、Term of Service、Privacy Policyを確認後、
「Snowflake On Demand Customer Agreement」にチェックをした上
で「CREATE ACCOUNT AND CONTINUE」ボタンを押下
<連絡先> (続き)
• 企業名、役職
• 電話番号
• 国、郵便番号、都市、住所
※ビル名を入れたらエラーとなり登録で
きなかったので、ビル名は入れない方
が無難
※それでもアカウント登録がエラーとな
る場合は、support@snowflake.netに
問合せて、アカウントごとに日本での
利用を設定してもらう必要があるかも
- 13. 3. Snowflakeの使い方 ~アカウント登録(4/5)~
12
• 必要な情報を入力し、「Use Contact Address From Previous Page」に
チェックした上で「CONFIRM PAYMENT AND CONTINUE」ボタンを押
下
<支払情報>
• クレジットカード番号
• 有効期限、CVV
• カード所有者氏名
- 14. 3. Snowflakeの使い方 ~アカウント登録(5/5)~
13
• しばらくすると「Snowflake On Demand Registration Confirmation」
というタイトルのメールが届く
• その後「Activate Your Snowflake On Demand Account」というタイト
ルのメールが届くので、メールの指示に従って「CLICK TO ACTIVATE」
ボタンを押下
• ユーザ名、およびパスワードを設定して、アカウント登録完了
• アクセスしているサイトのURLをブックマーク
https://<account_name>.snowflakecomputing.com
30日間限定ですが、無償で$400
ドル分使えます。ぜひいろいろと
試してみて下さい!
- 16. 3. Snowflakeの使い方 ~Webコンソール/CLIツール(2/4)~
15
1. Databasesページ
2. Warehousesページ
3. Worksheetページ
4. Historyページ
5. Accountページ(アカウント管理者でのみ表示)
6. Helpページ
7. User Preferencesページ
⇒ 具体的な内容は、「Appendix. Snowflake Webコンソール詳細」にて説明
Account Name
- 18. 3. Snowflakeの使い方 ~Webコンソール/CLIツール(4/4)~
17
• snowsqlはSQLを実行するCLIツールで、コマンド補完や履歴など、インテ
リジェントな機能を持ち、Webコンソールで可能な作業の多くをコマンド
ラインで実行可能
※ 接続するアカウント名、ユーザ名、パスワード、データベース名、スキーマ名、
ウェアハウス名をconfigファイルに設定しておけばsnowsqlコマンドを起動する
だけで環境に接続できるはずだが、うまく読み込まなかったため、代わりに環境
変数を設定している。
https://docs.snowflake.net/manuals/user-guide/snowsql-install-config.html#configuring-snowsql
Account Name
Account Name
- 19. 3. Snowflakeの使い方 ~Database/Table/Warehouse/File Format/Stage(1/3)~
18
• Database作成
Account Name#(no warehouse)@(no database).(no schema)> CREATE DATABASE testdb;
+--------------------------------------------+
| status |
|----------------------------------------------|
| Database TESTDB successfully created. |
+--------------------------------------------+
1 Row(s) produced. Time Elapsed: 0.411s
• Table作成
Account Name#(no warehouse)@TESTDB.PUBLIC> CREATE OR REPLACE TABLE testemp
(name STRING, city STRING, salary NUMBER);
+-----------------------------------------+
| status |
|------------------------------------------|
| Table TESTEMP successfully created. |
+-----------------------------------------+
1 Row(s) produced. Time Elapsed: 0.456s
- 20. 3. Snowflakeの使い方 ~Database/Table/Warehouse/File Format/Stage(2/3)~
19
• Warehouse作成/設定
Account Name#(no warehouse)@TESTDB.PUBLIC> CREATE WAREHOUSE testwarehouse
WITH WAREHOUSE_SIZE = xsmall;
+---------------------------------------------------------+
| status |
|-----------------------------------------------------------|
| Warehouse TESTWAREHOUSE successfully created. |
+---------------------------------------------------------+
1 Row(s) produced. Time Elapsed: 1.815s
Account Name#(no warehouse)@TESTDB.PUBLIC> use warehouse testwarehouse;
+-------------------------------------+
| status |
|--------------------------------------|
| Statement executed successfully. |
+-------------------------------------+
1 Row(s) produced. Time Elapsed: 0.339s
- 21. 3. Snowflakeの使い方 ~Database/Table/Warehouse/File Format/Stage(3/3)~
20
• File Format作成
Account Name#TESTWAREHOUSE@TESTDB.PUBLIC>CREATE OR REPLACE FILE FORMAT testtsvformat
TYPE = 'CSV'
COMPRESSION = AUTO
FIELD_DELIMITER = ‘¥t'
DATE_FORMAT = 'YYYY-MM-DD'
SKIP_HEADER = 1;
+---------------------------------------------------------+
| status |
|----------------------------------------------------------|
| File format TESTTSVFORMAT successfully created. |
+---------------------------------------------------------+
1 Row(s) produced. Time Elapsed: 1.781s
• Stage作成
Account Name#TESTWAREHOUSE@TESTDB.PUBLIC>CREATE OR REPLACE STAGE teststage
URL = 's3://XXXX/'
CREDENTIALS = (aws_key_id=‘XXXX‘
aws_secret_key=‘XXXX’
);
+-------------------------------------------------+
| status |
|---------------------------------------------------|
| Stage area TESTSTAGE successfully created. |
+-------------------------------------------------+
1 Row(s) produced. Time Elapsed: 2.373s
- 22. 3. Snowflakeの使い方 ~データロード、検索実行(1/2)~
21
• データロード(Insert)
Account Name#TESTWAREHOUSE@TESTDB.PUBLIC> INSERT INTO testemp VALUES('Scott',
'Tokyo', '10000000');
+----------------------------+
| number of rows inserted |
|-----------------------------|
| 1 |
+----------------------------+
1 Row(s) produced. Time Elapsed: 2.198s
• 検索実行
Account Name#TESTWAREHOUSE@TESTDB.PUBLIC> SELECT * FROM testemp;
+--------+-------+-----------+
| NAME | CITY | SALARY |
|--------+-------+------------|
| Scott | Tokyo | 10000000 |
+-------+-------+------------+
1 Row(s) produced. Time Elapsed: 0.759s
- 23. 3. Snowflakeの使い方 ~データロード、検索実行(2/2)~
22
• データロード(Copy)
Account Name#TESTWAREHOUSE@TESTDB.PUBLIC>COPY INTO m_member
FROM @teststage/MTR/
PATTERN = '.*M_MEMBER_.*'
FILE_FORMAT = ( FORMAT_NAME = 'testtsvformat')
ON_ERROR = 'ABORT_STATEMENT'
PURGE = FALSE;
+------------------------------------------+--------+-------------+-------------+-------------+-------------
+-------------+------------------+-----------------------+-------------------------+
| file | status | rows_parsed | rows_loaded | error_limit | errors_seen |
first_error | first_error_line | first_error_character | first_error_column_name |
|------------------------------------------+--------+-------------+-------------+-------------+-------------
+-------------+------------------+-----------------------+-------------------------|
| s3://XXXX/MTR/M_MEMBER_00004.tsv | LOADED | 175203 | 175203 | 175203 |
0 | NULL | NULL | NULL | NULL |
| s3://XXXX/MTR/M_MEMBER_00543.tsv.gz | LOADED | 4507447 | 4507447 | 4507447 |
0 | NULL | NULL | NULL | NULL |
2 Row(s) produced. Time Elapsed: 2.373s
- 24. 3. Snowflakeの使い方 ~頻繁に実行するSQL~
23
• 各種設定確認
show warehouses;
show tables [ like ‘%<key_word>%’];
show parameters [ like ‘%<key_work>%’];
• Warehouseの設定変更
ALTER WAREHOUSE <warehouse_name>
SET WAREHOUSE_SIZE = <warehouse_size>
MIN_CLUSTER_COUNT = <number>
MAX_CLUSTER_COUNT = <number>
AUTO_SUSPEND = NULL | <number>
AUTO_RESUME = TRUE | FALSE;
• Warehouseの一時停止/再開
ALTER WAREHOUSE <warehouse_name> suspend;
ALTER WAREHOUSE <warehouse_name> resume;
• キャッシュの無効化
ALTER SESSION SET USE_CACHED_RESULT = false;
- 25. 4. 参考情報
24
• ドキュメント
https://docs.snowflake.net
• ブログ
https://www.snowflake.net/blog
https://www.snowflake.net/engineering-blog
• オンラインコミュニティ/サポートポータル
https://support.snowflake.net
• 価格
https://www.snowflake.net/product/pricing
https://docs.snowflake.net/manuals/user-guide/credits.html
https://docs.snowflake.net/manuals/user-guide/warehouses-
multicluster.html
• 各種リソース
https://resources.snowflake.net
- 26. 5. まとめ
25
• すぐに簡単に始められる(Evaluating Time to Value)
• 使用した分だけ支払う(Usage-based pricing)
• 標準SQL(Standard SQL)
• スケーラビリティ(Scalability)、弾力性(Elasticity)
• データ共有(Data Sharing)
• 高可用性(High availability)
• バックアップ/リカバリ(Backup/Recovery)、クローン(Clone)
• セキュリティ(Security)
• 運用管理作業の低減(Self-managing services)
- 28. (Appendix) Snowflake Webコンソール詳細(2/10)
31
作成 クローン 削除 変更 データロード オーナー変更
データベース ○ ○ ○ ○
テーブル ○ ○ ○ ○ ○
ビュー ○ ○ ○
スキーマ ○ ○ ○ ○
ステージ ○ ○ ○ ○ ○
ファイル
フォーマット
○ ○ ○ ○ ○
シーケンス ○ ○ ○ ○ ○
1. Databasesページ
各種データベースオブジェクトの作成、クローン、削除、変更、データロード、
オーナー変更を行うことが可能
- 31. (Appendix) Snowflake Webコンソール詳細(5/10)
34
3. Worksheetページ
SQLに関する強力なインタフェースを提供
• クエリおよびDDL/DMLをワークシートで実行、もしくはSQLスクリプトを実行
• 最大6つのワークシートで別セッションを作成可能
• ワークシートを保存
• Snowflakeからログアウトした場合、アクティブなクエリの実行を停止
• 実行したSQLの結果をエクスポート
Account Name