snowflake elastic data warehouse as a service

36
Snowflake Elastic Data Warehouse as a Service 本橋 峰明 Mineaki Motohashi 1 Nov. 2017

Upload: mineaki-motohashi

Post on 21-Jan-2018

390 views

Category:

Technology


1 download

TRANSCRIPT

SnowflakeElastic Data Warehouse as a Service

本橋 峰明

Mineaki Motohashi

1 Nov. 2017

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コンソール詳細(7/10)

36

• クエリの結果を含む詳細表示

(Appendix) Snowflake Webコンソール詳細(8/10)

37

5. Accountページ月/日/時間ごとのクレジット利用状況を表示したり、ユーザ/ロール/ポリシー/セッション/リソースモニタ(ウェアハウス/アカウントごとの利用状況アラート)を設定

Account Name

(Appendix) Snowflake Webコンソール詳細(9/10)

38

6. HelpページSnowflakeドキュメントやサポートポータルにアクセスしたり、Snowflakeクライアントのダウンロード/情報表示、表示している内容に応じたヘルプパネル表示

Account Name

(Appendix) Snowflake Webコンソール詳細(10/10)

39

7. User Preferencesページユーザのパスワードやセキュリティロールを変更可能。また、通知のメールアドレスも設定可能。

Account Name