snowflake elastic data warehouse as a service
TRANSCRIPT
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
1. 自己紹介
• Name₋ 本橋 峰明(Mineaki Motohashi)
• Contact₋ [email protected]
• Job₋ 某データベースベンダにて、データベース、アプリケーションサー
バのコンサルティング、プリセールス、新入社員のトレーニング₋ 某コンサルティングファームにて、セキュリティ関連のコンサル
ティング、ERP基盤関連の構想立案から提案、構築、運用₋ 現職にて、ID-POSシステムの設計、開発、運用、ベンダマネジメ
ント、技術検証など• Database Experience
₋ Oracle Database、Microsoft SQL Server、Postgres、MySQL、Pivotal Greenplum、Google BigQuery/Cloud Spanner、HPEVertica、AWS Redshift、MemSQL、Snowflake
• Residence₋ 厚木
• Hobby₋ ボウリング₋ バドミントン
2
2. Elastic Data Warehouse ~最近の大量データ処理基盤~
• 大量処理にはHadoop/Sparkベースのソリューションが向いていると分類されることが多いが、本当にそうなのか?
• AWS Redshift、Google BigQuery、HPE Vertica、PivotalGreenplumを始め、様々な分散データベースが存在するが、良し悪しや向き不向きは?
• 様々な大量データ処理基盤が存在するが、性能と使いやすさを両立する基盤はないのか?
3
2. Elastic Data Warehouse ~従来型DWHの限界とSnowflake ~
• 従来型DWHはダイナミックな弾力性(Elasticity)を提供できる設計がされていない。• アプライアンス製品は、ベストプラクティスに基づいて決められた構成• ソフトウェア製品は、かなりの運用作業を伴うため、真に弾力性を持つとは言いがたい• クラウドサービスは、ソフトウェア製品をクラウド環境に移植しただけのものが多い
• 共有ディスクアーキテクチャ vs 非共有アーキテクチャ(昔話の再掲)• 共有ディスクアーキテクチャは、ノード数が増えると、ストレージとネットワークがボト
ルネックとなりうる• 非共有ディスクアーキテクチャは、複数ノードへの最適なデータ配分や、データ再分散が
ボトルネックとなりうる
4
• Snowflakeでは、ストレージとコンピュートリソースを物理的に分離しつつ、論理的に統合した新しいアーキテクチャ「マルチクラスタ、共有データアーキテクチャ」を実現
• 以下の独立したコンポーネントから構成• Database storage:Snowflake DWHサービス内の
データ永続化ストレージレイヤ• Processing:クエリに必要なデータ処理を実行するコ
ンピュートリソース• Cloud services:メタデータ、インフラ管理、セキュ
リティ、アクセス制御などを管理する共通サービス
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」にてNichePlayersと評価
• オフィシャルには日本での利用をサポートをしておらず実績なし
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)
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)• リアルタイムに処理性能と同時実行性能を変更可能• 処理量に応じて自動スケールアウト/ダウン• ワークロードを分離することによる競合の回避、ボトルネックが発生しないアーキテク
チャ
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)
3. Snowflakeの使い方 ~アカウント登録(1/5)~
9
• https://www.snowflake.netから「Start for Free」をクリック
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• 姓、名
3. Snowflakeの使い方 ~アカウント登録(3/5)~
11
• 必要な情報を入力し、Term of Service、Privacy Policyを確認後、「Snowflake On Demand Customer Agreement」にチェックをした上で「CREATE ACCOUNT AND CONTINUE」ボタンを押下
<連絡先> (続き)• 企業名、役職• 電話番号• 国、郵便番号、都市、住所
※ビル名を入れたらエラーとなり登録できなかったので、ビル名は入れない方が無難
※それでもアカウント登録がエラーとなる場合は、[email protected]に問合せて、アカウントごとに日本での利用を設定してもらう必要があるかも
3. Snowflakeの使い方 ~アカウント登録(4/5)~
12
• 必要な情報を入力し、「Use Contact Address From Previous Page」にチェックした上で「CONFIRM PAYMENT AND CONTINUE」ボタンを押下
<支払情報>• クレジットカード番号• 有効期限、CVV• カード所有者氏名
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ドル分使えます。ぜひいろいろと
試してみて下さい!
3. Snowflakeの使い方 ~Webコンソール/CLIツール(1/4)~
14
<Webコンソール>• https://<account_name>.snowflakecomputing.comにアクセスし、
先に登録したユーザ名、パスワードでログイン
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
3. Snowflakeの使い方 ~Webコンソール/CLIツール(3/4)~
16
<CLIツール>• 「Help」-「Download...」をクリックすることで、CLI Clientダウンロード
用ダイアログが表示されるので、プラットフォームに合わせてダウンロード
Account Name
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
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
3. Snowflakeの使い方 ~Database/Table/Warehouse/File Format/Stage(2/3)~
19
• Warehouse作成/設定
Account Name#(no warehouse)@TESTDB.PUBLIC> CREATE WAREHOUSE testwarehouseWITH 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
3. Snowflakeの使い方 ~Database/Table/Warehouse/File Format/Stage(3/3)~
20
• File Format作成
Account Name#[email protected]>CREATE OR REPLACE FILE FORMAT testtsvformatTYPE = 'CSV'COMPRESSION = AUTOFIELD_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#[email protected]>CREATE OR REPLACE STAGE teststageURL = '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
3. Snowflakeの使い方 ~データロード、検索実行(1/2)~
21
• データロード(Insert)
Account Name#[email protected]> INSERT INTO testemp VALUES('Scott', 'Tokyo', '10000000');
+----------------------------+| number of rows inserted ||-----------------------------|| 1 |+----------------------------+1 Row(s) produced. Time Elapsed: 2.198s
• 検索実行
Account Name#[email protected]> SELECT * FROM testemp;+--------+-------+-----------+| NAME | CITY | SALARY ||--------+-------+------------|| Scott | Tokyo | 10000000 |+-------+-------+------------+1 Row(s) produced. Time Elapsed: 0.759s
3. Snowflakeの使い方 ~データロード、検索実行(2/2)~
22
• データロード(Copy)
Account Name#[email protected]>COPY INTO m_memberFROM @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
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;
4. 参考情報
24
• ドキュメントhttps://docs.snowflake.net
• ブログhttps://www.snowflake.net/bloghttps://www.snowflake.net/engineering-blog
• オンラインコミュニティ/サポートポータルhttps://support.snowflake.net
• 価格https://www.snowflake.net/product/pricinghttps://docs.snowflake.net/manuals/user-guide/credits.htmlhttps://docs.snowflake.net/manuals/user-guide/warehouses-multicluster.html
• 各種リソースhttps://resources.snowflake.net
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)
(Appendix) Snowflake Webコンソール詳細(1/10)
30
1. Databasesページ2. Warehousesページ3. Worksheetページ4. Historyページ5. Accountページ(アカウント管理者でのみ表示)6. Helpページ7. User Preferencesページ
Account Name
(Appendix) Snowflake Webコンソール詳細(2/10)
31
作成 クローン 削除 変更 データロード オーナー変更
データベース ○ ○ ○ ○
テーブル ○ ○ ○ ○ ○
ビュー ○ ○ ○
スキーマ ○ ○ ○ ○
ステージ ○ ○ ○ ○ ○
ファイルフォーマット
○ ○ ○ ○ ○
シーケンス ○ ○ ○ ○ ○
1. Databasesページ各種データベースオブジェクトの作成、クローン、削除、変更、データロード、オーナー変更を行うことが可能
(Appendix) Snowflake Webコンソール詳細(3/10)
32
• データベースの作成、クローン、削除、オーナー変更
• テーブル/ビュー/スキーマ/ステージ/ファイルフォーマット/シーケンスの作成、クローン、削除、データロード、削除、オーナー変更
Account Name
(Appendix) Snowflake Webコンソール詳細(4/10)
33
2. Warehousesページウェアハウスの作成/削除、停止/再開、構成変更(サイズ、最小/最大数、自動停止/再開)、オーナー変更を行うことが可能
Account Name
(Appendix) Snowflake Webコンソール詳細(5/10)
34
3. WorksheetページSQLに関する強力なインタフェースを提供• クエリおよびDDL/DMLをワークシートで実行、もしくはSQLスクリプトを実行• 最大6つのワークシートで別セッションを作成可能• ワークシートを保存• Snowflakeからログアウトした場合、アクティブなクエリの実行を停止• 実行したSQLの結果をエクスポート
Account Name
(Appendix) Snowflake Webコンソール詳細(6/10)
35
4. Historyページ過去14日間で実行された全てのクエリの一覧および詳細を表示• ページに表示されるクエリをフィルタリング• 未完了していないクエリのキャンセル• 列の並び替えやソート
Account Name
(Appendix) Snowflake Webコンソール詳細(8/10)
37
5. Accountページ月/日/時間ごとのクレジット利用状況を表示したり、ユーザ/ロール/ポリシー/セッション/リソースモニタ(ウェアハウス/アカウントごとの利用状況アラート)を設定
Account Name
(Appendix) Snowflake Webコンソール詳細(9/10)
38
6. HelpページSnowflakeドキュメントやサポートポータルにアクセスしたり、Snowflakeクライアントのダウンロード/情報表示、表示している内容に応じたヘルプパネル表示
Account Name