SlideShare a Scribd company logo
1 of 30
Download to read offline
0
Snowflake
Architecture and Performance
本橋 峰明
Mineaki Motohashi
21 Apr. 2018
1
本日の勉強会参加者の方へ
• 本日の勉強会に参加される方のために、米カリフォルニア州サンマテオにある
Snowflake Computingの本社、2月に新しくできたオーストラリアの拠点からノベル
ティを送ってもらいました。
• お一人一点行き渡るよう準備していますので、お好きなものを一点お持ち頂いて結構
です。
• SnowflakeというクラウドDWHサービスですが、アカウント登録後1ヶ月間、400ド
ル分まで無償で使うことができますのでぜひ試してみて下さい。秒単位課金ですので、
動作/機能確認だけでなく特定パターンのみ性能検証くらいであれば、無償分だけで
まかなえると思います。
• アカウント登録から利用開始までの手順は、以下の資料をご参照下さい。
https://www.slideshare.net/mmotohas/snowflake-elastic-data-warehouse-as-a-service-81459451
2
Agenda
1. 自己紹介
2. Snowflakeとは
 最近のデータ処理基盤
 従来型DWHの限界とSnowflake
 Snowflake Computing
 DWHに求められる機能
 Snowflakeの特徴
 Snowflakeの設計思想
3. Snowflakeアーキテクチャ
 アーキテクチャ概要
 ステージ
 テーブル
 ウェアハウス
 リザルトキャッシュ
 ユーザアクセス
 その他情報
4. パフォーマンスを考慮した設計
(Snowflake/BigQuery/Redshift)
 性能を引き出すための検討事項
5. まとめ
6. 参考URL
Appendix.
 エディションの説明
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、SAP HANA
• Contents
₋ https://www.slideshare.net/mmotohas/
 Snowflake Elastic Data Warehouse as a Service
₋ アカウント登録、データベース作成からデータロード、検索までの手順、およびWebコ
ンソール紹介
 Snowflake Architecture and Performance(本資料)
₋ 設計/管理/運用する上で必要となるアーキテクチャ、エディションごとの機能/価格紹介
• Residence
₋ 厚木
• Hobby
₋ ボウリング、バドミントン
4
2. Snowflakeとは ~最近の大量データ処理基盤~
• 大量処理にはHadoop/Sparkベースのソリューションが向いていると分類され
ることが多いが、本当にそうなのか?
• AWS Redshift、Google BigQuery、HPE Vertica、Pivotal Greenplumを始
め、様々な分散データベースが存在するが、良し悪しや向き不向きは?
• 様々な大量データ処理基盤が存在するが、性能と使いやすさを両立する基盤は
ないのか?
5
2. Snowflakeとは ~従来型DWHの限界とSnowflake ~
• 従来型DWHはダイナミックな弾力性(Elasticity)を提供できる設計がされていない。
• アプライアンス製品は、ベストプラクティスに基づいて決められた構成
• ソフトウェア製品は、かなりの運用作業を伴うため、真に弾力性を持つとは言いがたい
• クラウドサービスは、ソフトウェア製品をクラウド環境に移植しただけのものが多い
• 共有ディスクアーキテクチャ vs 非共有アーキテクチャ(昔話の再掲)
• 共有ディスクアーキテクチャは、ノード数が増えると、ストレージとネットワークがボト
ルネックとなりうる
• 非共有ディスクアーキテクチャは、複数ノードへの最適なデータ配分や、データ再分散が
ボトルネックとなりうる
• Snowflakeでは、ストレージとコンピュートリソースを
物理的に分離しつつ、論理的に統合した新しいアーキテ
クチャを実現
• 以下の独立したコンポーネントから構成
• Database storage:
Snowflake DWHサービス内のデータ永続化ストレージレイヤ
• Processing:
クエリに必要なデータ処理を実行するコンピュートリソース
• Cloud services:
メタデータ、インフラ管理、セキュリティ、アクセス制御などを管理す
る共通サービス
The Data Warehouse Build for the Cloud
6
2. Snowflakeとは ~Snowflake Computing~
• 2012年に創業し翌年から毎年資金調達、直近は1/25に$263M(約290億円)を調達し、
調達総額は$473M(約630億円)で、評価額は$1.5B(約1,650億円)
https://www.snowflake.net/disruption-as-stepping-stone/
https://www.snowflake.net/news-items/snowflake-closes-263-million-growth-funding/
• 過去1年で顧客ベースは300%増加し、Snowflakeに保存されている顧客データは4倍
• Looker、Tableau、Informatica、TreasureDataなど様々なツールが次々対応
• CEOは元MicrosoftのAzureも含むServer/Toolsビジネスを牽引していたBob Muglia
• CTOは元OracleのRACのLead ArchitectのBenoit Dageville、並列データベースの研
究で博士号を取得、80以上の特許を保有
• Founder Architectは元Oracleでオプティマイザ/並列実行のグループのLeadの
Thierry Cruanes、データベースの研究で博士号を取得、40以上の特許を保有
• Co-FounderのMarcin Zukowskiは世界最速といわれるカラムナーデータベース
Vectorwise(現Actian Vector)を開発したデータベースアーキテクト
• VP of Engeneeringは元MicrosoftのGM、FacebookのデータインフラチームのLead
のSameet Agarwalで、世界最大規模のHadoop環境を構築し、Hive、Presto、
Scubaなどのテクノロジーをインキュベート
• 数多くの調査会社のレポートで高評価
₋ ForresterWave「BigDataWarehouse Q2 2017」にてStrong Performerと評価
₋ Gartner「Critical Capabilities for Data Management Solutions for Analytics(16 March
2017)」のVendors’ Product Scores for the Traditional Data Warehouse Use Caseにて
BigQueryより高評価
₋ Gartner「Magic Quadrant for Data Management Solution for Analytics (13 February
2018)」にてChallengerと評価(昨年はNiche Player)
• これまでAWSでのみCloud NativeなDWHサービスを展開していたが、2018/2/2か
らAzure BLOB Storageとのインテグレーション機能を提供開始
• 2018/2/21にシドニー、メルボルンにAsia Pacific and Japanオフィスを開設
7
2. Snowflakeとは ~DWHに求められる機能~
• すぐに簡単に始められる(Evaluating Time to Value)
• 使用した分だけ支払う(Usage-based pricing)
• 標準SQL(Standard SQL)
• スケーラビリティ(Scalability)、弾力性(Elasticity)、高性能(High Performance)
• データ共有(Data Sharing)
• 高可用性(High availability)
• バックアップ/リカバリ(Backup/Recovery)、クローン(Clone)
• セキュリティ(Security)
• 運用管理作業の低減(Self-managing services)
8
2. Snowflakeとは ~Snowflakeの特徴(1/2)~
• すぐに簡単に始められる(Evaluating Time to Value)
• ETLなしでも簡単にデータをロード可能
• サーバレスETLツールSnowpipeによりリアルタイムデータ取り込み可能
• 半構造化データも扱えて1つのデータベースに統合可能
• 使用した分だけ支払う(Usage-based pricing)
• 秒単位の課金
• 最大ワークロードに合わせたキャパシティ不要
• アクセスがない時は自動でサスペンドさせることができ、その間は費用がかからない
• コンピューティング/ストレージリソースを自由に変更可能でき、費用を最適化可能
• 標準SQL(Standard SQL)
• SQL-99の大部分、およびSQL-2003の分析拡張部分をサポート
• スケーラビリティ(Scalability)、弾力性(Elasticity)、高性能(High Performance)
• リアルタイムに処理性能と同時実行性能を変更可能
• 処理量に応じて自動スケールアウト/ダウン
• ワークロードを分離することによる競合の回避、ボトルネックが発生しないアーキテクチャ、
制限なしの同時実行性能
• 従来型のDWHと比較して、最大で200倍高速、かつ1/10のコスト
9
2. Snowflakeとは ~Snowflakeの特徴(2/2)~
• データ共有(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)
10
2. Snowflakeとは ~Snowflakeの設計思想~
データベースの在り方を根本的に変える設計思想
• 一般的なDWHに関するデータフローは、
• 複数のソースDBからデータを抽出して、何らかのストレージに転送し、そこ
からDWHにデータを取り込む
• さらに、DWHから分析用DBなど、組織外含めてさまざまなシステムにデータ
を連携(抽出、転送、取込)して、活用することになり、結局同じデータが複数
箇所に散在する
• 組織におけるデータプラットフォームの課題は、
• 組織内であればあるデータは本来1箇所にだけあれば良いが、様々なシステム
が同一DBにアクセスすると互いの処理が干渉し合って、性能が出なくなるた
め、やむを得ずデータベースを分けている
• 組織外にデータを連携するケースもデータプロバイダであればかなりの数にな
り、抽出バッチのスケジュールにも空きがなくなってくる
Single Database Platform of Truth
• Data Sharing、Secure Viewという機能を使うことでSingle Database Platform of
Truthを実現
• システムごとにコンピュートリソースを用意することで、同一データにアクセスしても
競合は発生しないアーキテクチャ
11
3. Snowflakeアーキテクチャ ~アーキテクチャ概要~
• クラウドをベースに構築されたDWHサービスで、Elastic、ハイパフォーマンス、
低価格、かつストレージおよびコンピュートリソースが分離されていることにより
ボトルネックが発生しないのが特徴。
Staging Location(S3バケット)
File
s
File
s
Files
File
s
File
s
Files
File
s
File
s
Files
テーブル
(Object)
S3
EC2
クラスタ1
SSD
(パーティ
ション
キャッシュ
・・・
クラスタn
SSD
(パーティ
ションキャッ
シュ)
クラスタ
SSD
(パーティションキャッシュ)
リザルトキャッシュ
オンライン用
Warehouse
バッチ用
Warehouse
リザルトキャッシュ クラウド
サービス
認証、認可
インフラ
管理
Web管理
ツール
オプティマ
イザ
トランザク
ション管理
セキュリ
ティ
ステージ(Object)
メタデータ
ウェアハウスウェアハウス
12
3. Snowflakeアーキテクチャ ~ステージ~
• ユーザ・ステージ、テーブル・ステージ、インターナル・
ネームドステージの3種類が存在
– ユーザステージ(@~)
ユーザ固有のファイルを格納するために用意されている
ステージング領域
– テーブルステージ(@<table_name>)
テーブルごとに用意されているステージング領域
– インターナルネームドステージ(@<stage_name>)
最も柔軟性があるステージング領域で、必要に応じて作成する必要があるステージ
ング領域で、複数ユーザでロードしたり、複数テーブルにロードする際に使用する
• データベースに登録したいファイルをPUTコマンドでステージング領域に格
納した後、COPY INTOコマンドでステージング領域からデータベーステーブ
ルにロード
• S3に格納されているデータであれば、COPY INTOコマンドでステージング領
域を経由して直接データベーステーブルにロード可能
• ロードファイルは10~100MBに分割しておいた方がパフォーマンスを上げる
ことが可能
• データロードだけでなく、ステージ、もしくはS3にアンロード可能
• Snowpipeを使うことで、以下の2パターンの取り込み処理をサーバレスで行
うことが可能
₋ S3バケットからAmazon SQS通知をトリガとしてのデータロード
₋ REST APIをトリガとしてのデータロード
Staging Location(S3バケット) F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
テーブル
(Object)
S3
EC2
ウェアハウス
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
・
・
・
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
ウェアハウス
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
・
・
・
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
・
・
・
リザルトキャッシュ
オンラ
イン用
Wareh
ouse
バッチ
用
Ware
house
リザルトキャッシュ クラウド
サービス
認証、
認可
イン
フラ
管理
Web
管理
ツー
ル
オプ
ティ
マイ
ザ
トラ
ンザ
ク
ショ
ン管
理
セ
キュ
リ
ティ
ステージ
(Object)
メタ
デー
タ
13
3. Snowflakeアーキテクチャ ~テーブル(1/3)~
<マイクロパーティション>
• 従来型のデータウェアハウスでは、パフォーマンスと
スケーラビリティを実現するために、テーブルを静的
パーティショニングで分割
₋ 指定する分散キーによっては、データが不均衡になる
₋ メンテナンスに手間がかかる
• Snowflakeでは、テーブル内のデータが複数行単位で自動分割され、それぞれマイ
クロパーティションにマッピングされる
₋ ユーザが明示的にデータ分割方式を定義する必要がない
• 圧縮前で50~500MB(Snowflake内では圧縮される)に
分割されるため、クエリ高速化するためのプルーニング、
DMLの効率化が可能
• マイクロパーティション内で列ごとに個別に格納、
圧縮される
Country Product Revenue
US Camera 3,000
US TV 1,250
JP Camera 700
US Video 2,000
JP TV 500
UK TV 450
■テーブルイメージ
PRODUCT_REVENUEテーブル
Micro
Partition1
(row3,5,6)
Country
JP
JP
UK
Product
Camera
TV
TV
Revenue
700
500
450
Micro
Partition2
(row1,2,4)
Country
US
US
US
Product
Camera
TV
Video
Revenue
3,000
1,250
2,000
■マイクロパーティション
物理格納イメージ
Staging Location(S3バケット) F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
テーブル
(Object)
S3
EC2
ウェアハウス
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
・
・
・
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
ウェアハウス
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
・
・
・
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
・
・
・
リザルトキャッシュ
オンラ
イン用
Wareh
ouse
バッチ
用
Ware
house
リザルトキャッシュ クラウド
サービス
認証、
認可
イン
フラ
管理
Web
管理
ツー
ル
オプ
ティ
マイ
ザ
トラ
ンザ
ク
ショ
ン管
理
セ
キュ
リ
ティ
ステージ
(Object)
メタ
デー
タ
14
3. Snowflakeアーキテクチャ ~テーブル(2/3)~
<クラスタリングキー>
• データ格納時に、日付などの列は自動的にソートされて格納
されるが、クラスタリングキーを定義することで、マイクロ
パーティション内のデータの並び順を明示的に制御することが可能
₋ カーディナリティが高いWHERE句で指定される列や結合列を指定することで、クエリの
スキャン効率や列圧縮率を高めることが可能
₋ 明示的にRECLUSTER句を指定したALTER TABLEコマンドを実行することで、テーブル
を再クラスタリング可能
<永続テーブル/トランジエントテーブル/テンポラリテーブル>
• 永続テーブルは、ユーザが明示的に削除するまでデータが保持され、タイムトラ
ベル&リカバリが可能
• トランジエントテーブルは、ユーザが明示的に削除するまでデータが保持され、
タイムトラベルは可能だが、リカバリできない
• テンポラリテーブルは、セッション単位でデータを保持するため他のユーザは参
照できず、タイムトラベルは可能だが、リカバリはできない
Table Type Persistence Time Travel
Retention Period
(Days)
Failsafe Period
(Days)
永続(EE以上) 明示的に削除されるまで 0~90 7
永続(PE以下) 明示的に削除されるまで 0 or 1 7
トランジエント 明示的に削除されるまで 0 or 1 0
テンポラリ セッションの間 0 or 1 0
Staging Location(S3バケット) F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
テーブル
(Object)
S3
EC2
ウェアハウス
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
・
・
・
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
ウェアハウス
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
・
・
・
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
・
・
・
リザルトキャッシュ
オンラ
イン用
Wareh
ouse
バッチ
用
Ware
house
リザルトキャッシュ クラウド
サービス
認証、
認可
イン
フラ
管理
Web
管理
ツー
ル
オプ
ティ
マイ
ザ
トラ
ンザ
ク
ショ
ン管
理
セ
キュ
リ
ティ
ステージ
(Object)
メタ
デー
タ
15
3. Snowflakeアーキテクチャ ~テーブル(3/3)~
<Secure View>
• Secure Viewを使用することで、ビュー定義、およびビュー
を構成するテーブルへのアクセスを隠蔽した状態であっても、
ユーザが必要なデータにアクセスすることが可能
₋ CURRENT_ACCOUNT、CURRENT_ROLE、CURRENT_USERファンクションを活用する
ことで、セキュアにデータシェアリング(後述)を行うことが可能
Staging Location(S3バケット) F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
テーブル
(Object)
S3
EC2
ウェアハウス
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
・
・
・
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
ウェアハウス
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
・
・
・
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
・
・
・
リザルトキャッシュ
オンラ
イン用
Wareh
ouse
バッチ
用
Ware
house
リザルトキャッシュ クラウド
サービス
認証、
認可
イン
フラ
管理
Web
管理
ツー
ル
オプ
ティ
マイ
ザ
トラ
ンザ
ク
ショ
ン管
理
セ
キュ
リ
ティ
ステージ
(Object)
メタ
デー
タ
16
3. Snowflakeアーキテクチャ ~ウェアハウス(1/2)~
• ウェアハウスは、ストレージと分離されたコンピュート
リソースで、クエリやDMLを実行する際に必ず必要
• ウェアハウスが起動している間、エディション、ウェアハウスサ
イズ、クラスタ数に応じてクレジットが消費され、費用がかかる
<エディション>
• エディションには、Standard Edition、Premier Edition、Enterprise Edition、
Enterprise Edition for Sensitive Data、Virtual Private Snowflakeがあり、
エディションごとにコンピュートリソースの単価が決められている
₋ 詳細は「4. 参考情報」のエディションごとの機能、サポートレベル、価格を参照
<ウェアハウスサイズ>
• ウェアハウスサイズは、クラスタ内のサーバ数を示していて、1サーバのスペックは
「Amazon C3.2XLarge 8 cores, 15 gigs of ram, 160 SSD」
₋ リニアな性能向上を実現 (ウェアハウスサイズを倍にすると、処理時間は1/2)
Warehouse
Size
Servers/
Cluster
Credits/
Hour
Credits/
Seconds
Additional Details
X-Small 1 1 0.0003 CREATE WAREHOUSEコマンド実行時のデフォルトサイズ
Small 2 2 0.0006
Medium 4 4 0.0012
Large 8 8 0.0024
X-Large 16 16 0.0048 Webインタフェースでウェアハウス作成時のデフォルトサイズ
2X-Large 32 32 0.0096
3X-Large 64 64 0.0192
4X-Large 128 128 0.0384
Staging Location(S3バケット) F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
テーブル
(Object)
S3
EC2
ウェアハウス
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
・
・
・
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
ウェアハウス
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
・
・
・
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
・
・
・
リザルトキャッシュ
オンラ
イン用
Wareh
ouse
バッチ
用
Ware
house
リザルトキャッシュ クラウド
サービス
認証、
認可
イン
フラ
管理
Web
管理
ツー
ル
オプ
ティ
マイ
ザ
トラ
ンザ
ク
ショ
ン管
理
セ
キュ
リ
ティ
ステージ
(Object)
メタ
デー
タ
17
3. Snowflakeアーキテクチャ ~ウェアハウス(2/2)~
<クラスタ数>
• ウェアハウス内でクラスタを複数作成可能(EE以上)
₋ クラスタ数は1~10を指定可能
₋ オートサスペンド(ユーザアクセスがなくなった後何秒でサスペンド
するか設定可能)/オートレジューム可能
₋ 4X-Largeで10クラスタ起動すると、1時間で1,280クレジット(EEの場合3,840ドル)かか
るため、クラスタ数を増やす場合は慎重に!
• ALTER WAREHOUSEコマンドにて、ウェアハウスのサスペンド/レジューム可能
₋ サスペンドしている間は課金されない
₋ ウェアハウスが起動している間のみ秒単位で課金される
• 例えばオンライン/夜間バッチのようにユースケースが異なる処理については、
ウェアハウスを複数作成することでウェアハウス間の競合なく処理を行うことが
可能
• ウェアハウスサイズによって単一処理時間、クラスタ数によって同時実行数を調
整することが可能
• パーティションキャッシュはマイクロパーティションのキャッシュで、ウェアハ
ウス起動後にクエリを実行することで、スキャン対象データがウェアハウスの実
体であるEC2のSSDにキャッシュされる
₋ ウェアハウスの起動/レジューム直後はデータがキャッシュされていないため、初回アク
セスから性能を出したい場合は、ウォームアップも検討する必要あり
₋ 検索対象データが大量な場合は、全てのデータがSSDに載るかも確認が必要
Staging Location(S3バケット) F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
テーブル
(Object)
S3
EC2
ウェアハウス
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
・
・
・
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
ウェアハウス
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
・
・
・
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
・
・
・
リザルトキャッシュ
オンラ
イン用
Wareh
ouse
バッチ
用
Ware
house
リザルトキャッシュ クラウド
サービス
認証、
認可
イン
フラ
管理
Web
管理
ツー
ル
オプ
ティ
マイ
ザ
トラ
ンザ
ク
ショ
ン管
理
セ
キュ
リ
ティ
ステージ
(Object)
メタ
デー
タ
18
3. Snowflakeアーキテクチャ ~リザルトキャッシュ~
• クエリの実行結果のキャッシュでS3に24時間格納されている
• クライアントはクラウドサービス経由か直接S3からダウンロード
₋ サイズの上限はない
₋ 性能検証を行う場合はUSE_CACHED_RESULTをFALSEにすることで
リザルトキャッシュを無効化することも検討
Staging Location(S3バケット) F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
テーブル
(Object)
S3
EC2
ウェアハウス
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
・
・
・
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
ウェアハウス
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
・
・
・
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
・
・
・
リザルトキャッシュ
オンラ
イン用
Wareh
ouse
バッチ
用
Ware
house
リザルトキャッシュ クラウド
サービス
認証、
認可
イン
フラ
管理
Web
管理
ツー
ル
オプ
ティ
マイ
ザ
トラ
ンザ
ク
ショ
ン管
理
セ
キュ
リ
ティ
ステージ
(Object)
メタ
デー
タ
19
3. Snowflakeアーキテクチャ ~ユーザアクセス~
• 標準SQL
https://docs.snowflake.net/manuals/sql-reference/intro-summary-
sql.html
₋ SQL-99の大部分、およびSQL-2003の分析拡張部分をサポート
₋ データ型、SQL構文、事前定義関数
• ユーザ定義関数
https://docs.snowflake.net/manuals/sql-reference/user-defined-
functions.html
• トランザクションサポート
https://docs.snowflake.net/manuals/sql-reference/transactions.html
₋ S3に格納されているデータの整合性担保は、メタデータを管理している
FoundationDBで実現
₋ サポートしている分離レベルはRead Commitedのみ
Staging Location(S3バケット) F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
テーブル
(Object)
S3
EC2
ウェアハウス
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
・
・
・
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
ウェアハウス
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
・
・
・
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
・
・
・
リザルトキャッシュ
オンラ
イン用
Wareh
ouse
バッチ
用
Ware
house
リザルトキャッシュ クラウド
サービス
認証、
認可
イン
フラ
管理
Web
管理
ツー
ル
オプ
ティ
マイ
ザ
トラ
ンザ
ク
ショ
ン管
理
セ
キュ
リ
ティ
ステージ
(Object)
メタ
デー
タ
20
3. Snowflakeアーキテクチャ ~その他情報~
<Data Sharing>
• 従来のデータ連携では、ファイル出力/連携/取り込み、もしくは
APIによる連携が必要だった
• Snowflakeが以下のアーキテクチャを持っていることで、自社DB
と他社DBの一部をセキュリティを担保しつつ、最も効率的に連携することが可能
₋ コンピュートとストレージの疎結合
₋ 強固なメタデータ管理によるアクセス制御
₋ 無制限な同時実行
<クローン>
• テーブル、スキーマ、データベース単位でクローニング可能
• クローンは数秒で完了し、かつ追加のストレージコストは発生しない
• タイムトラベル機能と合わせて使用することで、EE以上であれば
最大90日前のクローンも作成可能
<バックアップ&リカバリ>
• 従来型のデータベースでは、多くの場合完全バックアップと増分バックアップを
取得
₋ データストレージの増大
₋ データ再ロード、リカバリ時のビジネスダウンタイム
₋ (場合によって)最後のバックアップ以降のデータ損失
• マルチデータセンタや冗長化アーキテクチャは従来のバックアップの必要性を大
幅に軽減する
• データ破損や紛失の可能性はあるため、効率的で費用対効果の高いバックアップ
の代替手段として、7日間分の回復可能な履歴データ(Failsafe)を自動取得
Staging Location(S3バケット) F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
F
i
l
e
s
テーブル
(Object)
S3
EC2
ウェアハウス
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
・
・
・
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
ウェアハウス
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
・
・
・
S
S
D
(
パ
ー
テ
ィ
シ
ョ
ン
キ
ャ
ッ
シ
ュ
)
・
・
・
リザルトキャッシュ
オンラ
イン用
Wareh
ouse
バッチ
用
Ware
house
リザルトキャッシュ クラウド
サービス
認証、
認可
イン
フラ
管理
Web
管理
ツー
ル
オプ
ティ
マイ
ザ
トラ
ンザ
ク
ショ
ン管
理
セ
キュ
リ
ティ
ステージ
(Object)
メタ
デー
タ
21
4. パフォーマンスを考慮した設計 ~性能を引き出すための検討事項(1/4)~
<Snowflake>
〇設計のキーとなる項目
• マイクロパーティション
₋ テーブル内のデータが行単位でマイクロパーティションに自動分割される
₋ マイクロパーティション内で列ごとに個別に格納、圧縮される
• クラスタリングキー
₋ 指定しなかった場合も、日付などの列は自動的にソートされて格納されるが、
明示的にカーディナリティが高いWHERE句で指定される列や結合列を指定す
ることで、クエリのスキャン効率や列圧縮率を高めることが可能
₋ 検索効率の高い順番に複数列を指定することで、Oracle Databaseの索引構
成表のようにデータが格納される
• パーティションキャッシュ
₋ クラスタ起動時にはパーティションキャッシュにはデータがロードされず、
クエリ実行によって初めてロードされるため、ウォームアップの仕組みを用
意しておくことが望ましい
• リザルトキャッシュ
₋ 特に何も設定しなくても、リザルトキャッシュは24h有効
₋ サイズの制限はなし
₋ 性能検証を実施する際には同じSQLを複数回実行するため、無効化しておく
必要あり
• その他
₋ クラスタごとの同時実行数(デフォルト:8)はMAX_CONCURRENCY_LEVEL
で変更可能
22
4. パフォーマンスを考慮した設計 ~性能を引き出すための検討事項(2/4)~
〇設計のポイント
• 1処理の目標時間を達成できるまでウェアハウスサイズを大きくし、同時に実行
したい処理数に合わせてクラスタ数を変更していくことで、性能要件(単一処理
性能、同時実行数)を満たすことができる。
• ピーク時にウェアハウスサイズ、およびクラスタ数をElasticに変更することが
可能。データベース内でパターンの異なる処理(軽い処理/重い処理、オンライ
ン/バッチ)がある場合は、ウェアハウスを分けることで、競合なく処理を共存
することが可能。これらを組み合わせることで、性能要件(単一処理性能、同時
実行数)に応じてシステム構成を柔軟に変更することができる。
23
4. パフォーマンスを考慮した設計 ~性能を引き出すための検討事項(3/4)~
<BigQuery>
〇設計のキーとなる項目
• パーティション分割
₋ コストに影響のあるスキャン対象データ量を減らすため、ファイル分割や—
time-partitioning_typeによってパーティション分割することが可能
〇設計のポイント
• 2,000スロット未満であれば自動で必要なリソース(スロット)を確保して使用し
てくれるが、調整可能なパラメータがなく同時実行性能を出すことが難しい。
軽い処理でも一定時間かかるため、マスタをDataStoreに入れるなどの工夫が必
要。大量データ集計を同時実行する場合には、スロット数が足りるかの検証も
必要。
<Redshift>
〇設計のキーとなる項目
• 分散キー
₋ ノード間でのデータ格納方法(EVEN分散、キー分散、ALL分散)を定義
₋ 再分散を避けるようなデータの持ち方を検討しておくことが重要で、実行計画
で再分散の状況を確認できるが、一番つらいのはDS_BCAST_INNER(全ノー
ドにデータをコピー)
24
4. パフォーマンスを考慮した設計 ~性能を引き出すための検討事項(4/4)~
〇設計のキーとなる項目
• ソートキー
₋ ノード内のデータ格納方法(ソート順)を定義し、複数列を指定する場合は順番
が重要
₋ インターリーブドソートキーは複数列を指定する場合に、どの列を検索条件に
してもそれなりの検索性能を出すためのデータ格納方法を定義する
(データの変動に応じてVACUUM REINDXが必要となるため、多くの場合使用
する必然性はない)
• 列圧縮方式
₋ ANALYZE COMPRESSIONを実行するも、ほとんどの列でZSTDが推奨される
• ワークロード管理
₋ concurrency(デフォルト:5)にて同時実行数、wlm_query_slot_count(デ
フォルト:1)でクエリに割り当てるメモリリソースを制御
〇設計のポイント
• テーブルごとに検索条件に指定する列が限られていればよいが、様々な列を指
定する場合にはテーブルを非正規化していると再分散の影響が大きくなる。
• 性能を出すには各種パラメータの最適値を導き出すための試行錯誤が必要。
• クラスタに対する同時実行数の最大が50で、ベストプラクティスとしては15以
下とも言われているため、同時実行には強くない。
• 拡張時のダウンタイムがつらい。
• 2017/10/18に追加されたdc2.8xlargeはdc1.8xlargeと比べ、価格据え置きで
性能2倍ということなので試してみるべき。
25
5. まとめ
データベースの在り方を根本的に変える設計思想
• これまで、1つのデータベースに対して異なるワークロードを実行していたため、ワーク
ロード管理が難しく性能を出すことが難しかった。
• コンピュートリソースとストレージが分離されたことで、1つのデータベースで競合しない
複数のコンピュートリソースを割り当てることができるようになった。
• 検索対象のデータはS3ではなく、コンピュートリソースのSSDにキャッシュとして保持さ
れるため、データも競合しない。Unlimited Concurrency
• 競合が発生していたために、用途ごとにデータベースを用意し、データを重複保持してい
たが、開発環境以外は1つのデータベースのみの運用とすることが可能。
• 他の組織へのデータ連携も不要となり、ライブデータをセキュアに組織を跨いで共有可能。
ぜひ試してみて下さい!
• これまでにないアーキテクチャで、性能要件に合わせて柔軟に環境を用意することができ
るのと、データベースを用途ごとに複数用意する必要がありません。また、AWS上で動作
するクラウドデータウェアハウスなので、AWSの1サービスとして他のサービスと組み合
わせて使うことが可能です。
• 私自身これまで20年間データベースに関わってきましたが、実際に使ってみて、機能、性
能、価格全てにおいてすごく良いと感じました。
• ベンダとしては、日本への進出は手探り状態のようですが、皆さんに使ってもらえれば日
本市場をより強く意識するようになると思いますので、まずこれをきっかけに使って見て
もらえればと思っています。
• 実際に使ってみて感想などを共有頂ければ、ベンダにもフィードバックしたいと思います。
26
6. 参考URL
• ドキュメント
https://docs.snowflake.net
• Snowflakeアーキテクチャ詳細
https://www.snowflake.net/resource/sigmod-2016-paper-snowflake-
elastic-data-warehouse/
• ブログ
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
27
Appendix. エディションの説明(1/3)
<エディションごとの機能一覧>
28
Appendix. エディションの説明(2/3)
<エディションごとのセキュリティ認証>
<エディションごとのサポートレベル>
29
Appendix. エディションの説明(3/3)
<エディションごとの価格>

More Related Content

What's hot

統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)NTT DATA Technology & Innovation
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方Yoshiyasu SAEKI
 
Snowflake Architecture and Performance
Snowflake Architecture and PerformanceSnowflake Architecture and Performance
Snowflake Architecture and PerformanceMineaki Motohashi
 
Hatena::Letの式年遷宮
Hatena::Letの式年遷宮Hatena::Letの式年遷宮
Hatena::Letの式年遷宮Takafumi ONAKA
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターンSoudai Sone
 
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)NTT DATA Technology & Innovation
 
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くしたNginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くしたtoshi_pp
 
広告がうざい
広告がうざい広告がうざい
広告がうざいGen Ito
 
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築gree_tech
 
エラー・バジェットによるリスク管理 Managing risk with error budgets
エラー・バジェットによるリスク管理 Managing risk with error budgetsエラー・バジェットによるリスク管理 Managing risk with error budgets
エラー・バジェットによるリスク管理 Managing risk with error budgetsGoogle Cloud Platform - Japan
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記Hiroyuki Ohnaka
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介AdvancedTechNight
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかAtsushi Nakada
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...NTT DATA Technology & Innovation
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)NTT DATA Technology & Innovation
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)mosa siru
 

What's hot (20)

統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
Snowflake Architecture and Performance
Snowflake Architecture and PerformanceSnowflake Architecture and Performance
Snowflake Architecture and Performance
 
Molecule入門
Molecule入門Molecule入門
Molecule入門
 
Hatena::Letの式年遷宮
Hatena::Letの式年遷宮Hatena::Letの式年遷宮
Hatena::Letの式年遷宮
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
 
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
 
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くしたNginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
 
広告がうざい
広告がうざい広告がうざい
広告がうざい
 
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
 
エラー・バジェットによるリスク管理 Managing risk with error budgets
エラー・バジェットによるリスク管理 Managing risk with error budgetsエラー・バジェットによるリスク管理 Managing risk with error budgets
エラー・バジェットによるリスク管理 Managing risk with error budgets
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 

Similar to Snowflake architecture and_performance_kansaidb20180421

Snowflake Elastic Data Warehouse as a Service
Snowflake Elastic Data Warehouse as a ServiceSnowflake Elastic Data Warehouse as a Service
Snowflake Elastic Data Warehouse as a ServiceMineaki Motohashi
 
Snowflake Architecture and Performance
Snowflake Architecture and PerformanceSnowflake Architecture and Performance
Snowflake Architecture and PerformanceMineaki Motohashi
 
オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)
オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)
オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)オラクルエンジニア通信
 
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演VirtualTech Japan Inc.
 
○ヶ月でできた!?さくらのクラウド開発秘話(【ヒカ☆ラボ】さくらインターネットとMilkcocoa!年末イベント:ここだけのウラ話)
○ヶ月でできた!?さくらのクラウド開発秘話(【ヒカ☆ラボ】さくらインターネットとMilkcocoa!年末イベント:ここだけのウラ話)○ヶ月でできた!?さくらのクラウド開発秘話(【ヒカ☆ラボ】さくらインターネットとMilkcocoa!年末イベント:ここだけのウラ話)
○ヶ月でできた!?さくらのクラウド開発秘話(【ヒカ☆ラボ】さくらインターネットとMilkcocoa!年末イベント:ここだけのウラ話)さくらインターネット株式会社
 
オラクル・データベース・クラウド~さらなる進化のご紹介(Oracle Cloud Days Tokyo 2015)
オラクル・データベース・クラウド~さらなる進化のご紹介(Oracle Cloud Days Tokyo 2015)オラクル・データベース・クラウド~さらなる進化のご紹介(Oracle Cloud Days Tokyo 2015)
オラクル・データベース・クラウド~さらなる進化のご紹介(Oracle Cloud Days Tokyo 2015)オラクルエンジニア通信
 
Oracle Database Appliance X5-2 アップデート内容のご紹介
Oracle Database Appliance X5-2 アップデート内容のご紹介Oracle Database Appliance X5-2 アップデート内容のご紹介
Oracle Database Appliance X5-2 アップデート内容のご紹介オラクルエンジニア通信
 
BIがクラウドで更なる進化!  データとの連携を強化したデータビジュアライゼーション
BIがクラウドで更なる進化!  データとの連携を強化したデータビジュアライゼーションBIがクラウドで更なる進化!  データとの連携を強化したデータビジュアライゼーション
BIがクラウドで更なる進化!  データとの連携を強化したデータビジュアライゼーションHisashi Igarashi
 
BIがクラウドで更なる進化!データとの連携を強化したデータビジュアライゼーション(Oracle Cloud Days Tokyo 2015)
BIがクラウドで更なる進化!データとの連携を強化したデータビジュアライゼーション(Oracle Cloud Days Tokyo 2015)BIがクラウドで更なる進化!データとの連携を強化したデータビジュアライゼーション(Oracle Cloud Days Tokyo 2015)
BIがクラウドで更なる進化!データとの連携を強化したデータビジュアライゼーション(Oracle Cloud Days Tokyo 2015)オラクルエンジニア通信
 
Oracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデートOracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデートオラクルエンジニア通信
 
広告ログの解析システム
広告ログの解析システム広告ログの解析システム
広告ログの解析システムKatsuhiro Takata
 
Intro2 Sqlanalyzer
Intro2 SqlanalyzerIntro2 Sqlanalyzer
Intro2 Sqlanalyzersaeka
 
Snowflake Architecture and Performance(db tech showcase Tokyo 2018)
Snowflake Architecture and Performance(db tech showcase Tokyo 2018)Snowflake Architecture and Performance(db tech showcase Tokyo 2018)
Snowflake Architecture and Performance(db tech showcase Tokyo 2018)Mineaki Motohashi
 
Azure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data LakeAzure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data LakeHideo Takagi
 
OSC2014広島 CloudStackの歩き方【完全版】
OSC2014広島 CloudStackの歩き方【完全版】OSC2014広島 CloudStackの歩き方【完全版】
OSC2014広島 CloudStackの歩き方【完全版】Midori Oge
 
Developers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeDevelopers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeSatoru Ishikawa
 
今日から始めるDigitalOcean
今日から始めるDigitalOcean今日から始めるDigitalOcean
今日から始めるDigitalOceanMasahito Zembutsu
 

Similar to Snowflake architecture and_performance_kansaidb20180421 (20)

Snowflake Elastic Data Warehouse as a Service
Snowflake Elastic Data Warehouse as a ServiceSnowflake Elastic Data Warehouse as a Service
Snowflake Elastic Data Warehouse as a Service
 
Snowflake Architecture and Performance
Snowflake Architecture and PerformanceSnowflake Architecture and Performance
Snowflake Architecture and Performance
 
オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)
オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)
オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)
 
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演
 
○ヶ月でできた!?さくらのクラウド開発秘話(【ヒカ☆ラボ】さくらインターネットとMilkcocoa!年末イベント:ここだけのウラ話)
○ヶ月でできた!?さくらのクラウド開発秘話(【ヒカ☆ラボ】さくらインターネットとMilkcocoa!年末イベント:ここだけのウラ話)○ヶ月でできた!?さくらのクラウド開発秘話(【ヒカ☆ラボ】さくらインターネットとMilkcocoa!年末イベント:ここだけのウラ話)
○ヶ月でできた!?さくらのクラウド開発秘話(【ヒカ☆ラボ】さくらインターネットとMilkcocoa!年末イベント:ここだけのウラ話)
 
オラクル・データベース・クラウド~さらなる進化のご紹介(Oracle Cloud Days Tokyo 2015)
オラクル・データベース・クラウド~さらなる進化のご紹介(Oracle Cloud Days Tokyo 2015)オラクル・データベース・クラウド~さらなる進化のご紹介(Oracle Cloud Days Tokyo 2015)
オラクル・データベース・クラウド~さらなる進化のご紹介(Oracle Cloud Days Tokyo 2015)
 
Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
 
Oracle Database Appliance X5-2 アップデート内容のご紹介
Oracle Database Appliance X5-2 アップデート内容のご紹介Oracle Database Appliance X5-2 アップデート内容のご紹介
Oracle Database Appliance X5-2 アップデート内容のご紹介
 
BIがクラウドで更なる進化!  データとの連携を強化したデータビジュアライゼーション
BIがクラウドで更なる進化!  データとの連携を強化したデータビジュアライゼーションBIがクラウドで更なる進化!  データとの連携を強化したデータビジュアライゼーション
BIがクラウドで更なる進化!  データとの連携を強化したデータビジュアライゼーション
 
BIがクラウドで更なる進化!データとの連携を強化したデータビジュアライゼーション(Oracle Cloud Days Tokyo 2015)
BIがクラウドで更なる進化!データとの連携を強化したデータビジュアライゼーション(Oracle Cloud Days Tokyo 2015)BIがクラウドで更なる進化!データとの連携を強化したデータビジュアライゼーション(Oracle Cloud Days Tokyo 2015)
BIがクラウドで更なる進化!データとの連携を強化したデータビジュアライゼーション(Oracle Cloud Days Tokyo 2015)
 
Oracle Big Data Cloud Serviceのご紹介
Oracle Big Data Cloud Serviceのご紹介Oracle Big Data Cloud Serviceのご紹介
Oracle Big Data Cloud Serviceのご紹介
 
Oracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデートOracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデート
 
広告ログの解析システム
広告ログの解析システム広告ログの解析システム
広告ログの解析システム
 
Intro2 Sqlanalyzer
Intro2 SqlanalyzerIntro2 Sqlanalyzer
Intro2 Sqlanalyzer
 
Snowflake Architecture and Performance(db tech showcase Tokyo 2018)
Snowflake Architecture and Performance(db tech showcase Tokyo 2018)Snowflake Architecture and Performance(db tech showcase Tokyo 2018)
Snowflake Architecture and Performance(db tech showcase Tokyo 2018)
 
Oracle Database 12c Release 1 PSR 12.1.0.2 のご紹介
Oracle Database 12c Release 1 PSR 12.1.0.2 のご紹介Oracle Database 12c Release 1 PSR 12.1.0.2 のご紹介
Oracle Database 12c Release 1 PSR 12.1.0.2 のご紹介
 
Azure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data LakeAzure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data Lake
 
OSC2014広島 CloudStackの歩き方【完全版】
OSC2014広島 CloudStackの歩き方【完全版】OSC2014広島 CloudStackの歩き方【完全版】
OSC2014広島 CloudStackの歩き方【完全版】
 
Developers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeDevelopers.IO 2019 Effective Datalake
Developers.IO 2019 Effective Datalake
 
今日から始めるDigitalOcean
今日から始めるDigitalOcean今日から始めるDigitalOcean
今日から始めるDigitalOcean
 

Recently uploaded

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 

Recently uploaded (9)

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 

Snowflake architecture and_performance_kansaidb20180421

  • 1. 0 Snowflake Architecture and Performance 本橋 峰明 Mineaki Motohashi 21 Apr. 2018
  • 2. 1 本日の勉強会参加者の方へ • 本日の勉強会に参加される方のために、米カリフォルニア州サンマテオにある Snowflake Computingの本社、2月に新しくできたオーストラリアの拠点からノベル ティを送ってもらいました。 • お一人一点行き渡るよう準備していますので、お好きなものを一点お持ち頂いて結構 です。 • SnowflakeというクラウドDWHサービスですが、アカウント登録後1ヶ月間、400ド ル分まで無償で使うことができますのでぜひ試してみて下さい。秒単位課金ですので、 動作/機能確認だけでなく特定パターンのみ性能検証くらいであれば、無償分だけで まかなえると思います。 • アカウント登録から利用開始までの手順は、以下の資料をご参照下さい。 https://www.slideshare.net/mmotohas/snowflake-elastic-data-warehouse-as-a-service-81459451
  • 3. 2 Agenda 1. 自己紹介 2. Snowflakeとは  最近のデータ処理基盤  従来型DWHの限界とSnowflake  Snowflake Computing  DWHに求められる機能  Snowflakeの特徴  Snowflakeの設計思想 3. Snowflakeアーキテクチャ  アーキテクチャ概要  ステージ  テーブル  ウェアハウス  リザルトキャッシュ  ユーザアクセス  その他情報 4. パフォーマンスを考慮した設計 (Snowflake/BigQuery/Redshift)  性能を引き出すための検討事項 5. まとめ 6. 参考URL Appendix.  エディションの説明
  • 4. 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、SAP HANA • Contents ₋ https://www.slideshare.net/mmotohas/  Snowflake Elastic Data Warehouse as a Service ₋ アカウント登録、データベース作成からデータロード、検索までの手順、およびWebコ ンソール紹介  Snowflake Architecture and Performance(本資料) ₋ 設計/管理/運用する上で必要となるアーキテクチャ、エディションごとの機能/価格紹介 • Residence ₋ 厚木 • Hobby ₋ ボウリング、バドミントン
  • 5. 4 2. Snowflakeとは ~最近の大量データ処理基盤~ • 大量処理にはHadoop/Sparkベースのソリューションが向いていると分類され ることが多いが、本当にそうなのか? • AWS Redshift、Google BigQuery、HPE Vertica、Pivotal Greenplumを始 め、様々な分散データベースが存在するが、良し悪しや向き不向きは? • 様々な大量データ処理基盤が存在するが、性能と使いやすさを両立する基盤は ないのか?
  • 6. 5 2. Snowflakeとは ~従来型DWHの限界とSnowflake ~ • 従来型DWHはダイナミックな弾力性(Elasticity)を提供できる設計がされていない。 • アプライアンス製品は、ベストプラクティスに基づいて決められた構成 • ソフトウェア製品は、かなりの運用作業を伴うため、真に弾力性を持つとは言いがたい • クラウドサービスは、ソフトウェア製品をクラウド環境に移植しただけのものが多い • 共有ディスクアーキテクチャ vs 非共有アーキテクチャ(昔話の再掲) • 共有ディスクアーキテクチャは、ノード数が増えると、ストレージとネットワークがボト ルネックとなりうる • 非共有ディスクアーキテクチャは、複数ノードへの最適なデータ配分や、データ再分散が ボトルネックとなりうる • Snowflakeでは、ストレージとコンピュートリソースを 物理的に分離しつつ、論理的に統合した新しいアーキテ クチャを実現 • 以下の独立したコンポーネントから構成 • Database storage: Snowflake DWHサービス内のデータ永続化ストレージレイヤ • Processing: クエリに必要なデータ処理を実行するコンピュートリソース • Cloud services: メタデータ、インフラ管理、セキュリティ、アクセス制御などを管理す る共通サービス The Data Warehouse Build for the Cloud
  • 7. 6 2. Snowflakeとは ~Snowflake Computing~ • 2012年に創業し翌年から毎年資金調達、直近は1/25に$263M(約290億円)を調達し、 調達総額は$473M(約630億円)で、評価額は$1.5B(約1,650億円) https://www.snowflake.net/disruption-as-stepping-stone/ https://www.snowflake.net/news-items/snowflake-closes-263-million-growth-funding/ • 過去1年で顧客ベースは300%増加し、Snowflakeに保存されている顧客データは4倍 • Looker、Tableau、Informatica、TreasureDataなど様々なツールが次々対応 • CEOは元MicrosoftのAzureも含むServer/Toolsビジネスを牽引していたBob Muglia • CTOは元OracleのRACのLead ArchitectのBenoit Dageville、並列データベースの研 究で博士号を取得、80以上の特許を保有 • Founder Architectは元Oracleでオプティマイザ/並列実行のグループのLeadの Thierry Cruanes、データベースの研究で博士号を取得、40以上の特許を保有 • Co-FounderのMarcin Zukowskiは世界最速といわれるカラムナーデータベース Vectorwise(現Actian Vector)を開発したデータベースアーキテクト • VP of Engeneeringは元MicrosoftのGM、FacebookのデータインフラチームのLead のSameet Agarwalで、世界最大規模のHadoop環境を構築し、Hive、Presto、 Scubaなどのテクノロジーをインキュベート • 数多くの調査会社のレポートで高評価 ₋ ForresterWave「BigDataWarehouse Q2 2017」にてStrong Performerと評価 ₋ Gartner「Critical Capabilities for Data Management Solutions for Analytics(16 March 2017)」のVendors’ Product Scores for the Traditional Data Warehouse Use Caseにて BigQueryより高評価 ₋ Gartner「Magic Quadrant for Data Management Solution for Analytics (13 February 2018)」にてChallengerと評価(昨年はNiche Player) • これまでAWSでのみCloud NativeなDWHサービスを展開していたが、2018/2/2か らAzure BLOB Storageとのインテグレーション機能を提供開始 • 2018/2/21にシドニー、メルボルンにAsia Pacific and Japanオフィスを開設
  • 8. 7 2. Snowflakeとは ~DWHに求められる機能~ • すぐに簡単に始められる(Evaluating Time to Value) • 使用した分だけ支払う(Usage-based pricing) • 標準SQL(Standard SQL) • スケーラビリティ(Scalability)、弾力性(Elasticity)、高性能(High Performance) • データ共有(Data Sharing) • 高可用性(High availability) • バックアップ/リカバリ(Backup/Recovery)、クローン(Clone) • セキュリティ(Security) • 運用管理作業の低減(Self-managing services)
  • 9. 8 2. Snowflakeとは ~Snowflakeの特徴(1/2)~ • すぐに簡単に始められる(Evaluating Time to Value) • ETLなしでも簡単にデータをロード可能 • サーバレスETLツールSnowpipeによりリアルタイムデータ取り込み可能 • 半構造化データも扱えて1つのデータベースに統合可能 • 使用した分だけ支払う(Usage-based pricing) • 秒単位の課金 • 最大ワークロードに合わせたキャパシティ不要 • アクセスがない時は自動でサスペンドさせることができ、その間は費用がかからない • コンピューティング/ストレージリソースを自由に変更可能でき、費用を最適化可能 • 標準SQL(Standard SQL) • SQL-99の大部分、およびSQL-2003の分析拡張部分をサポート • スケーラビリティ(Scalability)、弾力性(Elasticity)、高性能(High Performance) • リアルタイムに処理性能と同時実行性能を変更可能 • 処理量に応じて自動スケールアウト/ダウン • ワークロードを分離することによる競合の回避、ボトルネックが発生しないアーキテクチャ、 制限なしの同時実行性能 • 従来型のDWHと比較して、最大で200倍高速、かつ1/10のコスト
  • 10. 9 2. Snowflakeとは ~Snowflakeの特徴(2/2)~ • データ共有(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. 10 2. Snowflakeとは ~Snowflakeの設計思想~ データベースの在り方を根本的に変える設計思想 • 一般的なDWHに関するデータフローは、 • 複数のソースDBからデータを抽出して、何らかのストレージに転送し、そこ からDWHにデータを取り込む • さらに、DWHから分析用DBなど、組織外含めてさまざまなシステムにデータ を連携(抽出、転送、取込)して、活用することになり、結局同じデータが複数 箇所に散在する • 組織におけるデータプラットフォームの課題は、 • 組織内であればあるデータは本来1箇所にだけあれば良いが、様々なシステム が同一DBにアクセスすると互いの処理が干渉し合って、性能が出なくなるた め、やむを得ずデータベースを分けている • 組織外にデータを連携するケースもデータプロバイダであればかなりの数にな り、抽出バッチのスケジュールにも空きがなくなってくる Single Database Platform of Truth • Data Sharing、Secure Viewという機能を使うことでSingle Database Platform of Truthを実現 • システムごとにコンピュートリソースを用意することで、同一データにアクセスしても 競合は発生しないアーキテクチャ
  • 12. 11 3. Snowflakeアーキテクチャ ~アーキテクチャ概要~ • クラウドをベースに構築されたDWHサービスで、Elastic、ハイパフォーマンス、 低価格、かつストレージおよびコンピュートリソースが分離されていることにより ボトルネックが発生しないのが特徴。 Staging Location(S3バケット) File s File s Files File s File s Files File s File s Files テーブル (Object) S3 EC2 クラスタ1 SSD (パーティ ション キャッシュ ・・・ クラスタn SSD (パーティ ションキャッ シュ) クラスタ SSD (パーティションキャッシュ) リザルトキャッシュ オンライン用 Warehouse バッチ用 Warehouse リザルトキャッシュ クラウド サービス 認証、認可 インフラ 管理 Web管理 ツール オプティマ イザ トランザク ション管理 セキュリ ティ ステージ(Object) メタデータ ウェアハウスウェアハウス
  • 13. 12 3. Snowflakeアーキテクチャ ~ステージ~ • ユーザ・ステージ、テーブル・ステージ、インターナル・ ネームドステージの3種類が存在 – ユーザステージ(@~) ユーザ固有のファイルを格納するために用意されている ステージング領域 – テーブルステージ(@<table_name>) テーブルごとに用意されているステージング領域 – インターナルネームドステージ(@<stage_name>) 最も柔軟性があるステージング領域で、必要に応じて作成する必要があるステージ ング領域で、複数ユーザでロードしたり、複数テーブルにロードする際に使用する • データベースに登録したいファイルをPUTコマンドでステージング領域に格 納した後、COPY INTOコマンドでステージング領域からデータベーステーブ ルにロード • S3に格納されているデータであれば、COPY INTOコマンドでステージング領 域を経由して直接データベーステーブルにロード可能 • ロードファイルは10~100MBに分割しておいた方がパフォーマンスを上げる ことが可能 • データロードだけでなく、ステージ、もしくはS3にアンロード可能 • Snowpipeを使うことで、以下の2パターンの取り込み処理をサーバレスで行 うことが可能 ₋ S3バケットからAmazon SQS通知をトリガとしてのデータロード ₋ REST APIをトリガとしてのデータロード Staging Location(S3バケット) F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s テーブル (Object) S3 EC2 ウェアハウス S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ・ ・ ・ S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ウェアハウス S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ・ ・ ・ S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ・ ・ ・ リザルトキャッシュ オンラ イン用 Wareh ouse バッチ 用 Ware house リザルトキャッシュ クラウド サービス 認証、 認可 イン フラ 管理 Web 管理 ツー ル オプ ティ マイ ザ トラ ンザ ク ショ ン管 理 セ キュ リ ティ ステージ (Object) メタ デー タ
  • 14. 13 3. Snowflakeアーキテクチャ ~テーブル(1/3)~ <マイクロパーティション> • 従来型のデータウェアハウスでは、パフォーマンスと スケーラビリティを実現するために、テーブルを静的 パーティショニングで分割 ₋ 指定する分散キーによっては、データが不均衡になる ₋ メンテナンスに手間がかかる • Snowflakeでは、テーブル内のデータが複数行単位で自動分割され、それぞれマイ クロパーティションにマッピングされる ₋ ユーザが明示的にデータ分割方式を定義する必要がない • 圧縮前で50~500MB(Snowflake内では圧縮される)に 分割されるため、クエリ高速化するためのプルーニング、 DMLの効率化が可能 • マイクロパーティション内で列ごとに個別に格納、 圧縮される Country Product Revenue US Camera 3,000 US TV 1,250 JP Camera 700 US Video 2,000 JP TV 500 UK TV 450 ■テーブルイメージ PRODUCT_REVENUEテーブル Micro Partition1 (row3,5,6) Country JP JP UK Product Camera TV TV Revenue 700 500 450 Micro Partition2 (row1,2,4) Country US US US Product Camera TV Video Revenue 3,000 1,250 2,000 ■マイクロパーティション 物理格納イメージ Staging Location(S3バケット) F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s テーブル (Object) S3 EC2 ウェアハウス S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ・ ・ ・ S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ウェアハウス S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ・ ・ ・ S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ・ ・ ・ リザルトキャッシュ オンラ イン用 Wareh ouse バッチ 用 Ware house リザルトキャッシュ クラウド サービス 認証、 認可 イン フラ 管理 Web 管理 ツー ル オプ ティ マイ ザ トラ ンザ ク ショ ン管 理 セ キュ リ ティ ステージ (Object) メタ デー タ
  • 15. 14 3. Snowflakeアーキテクチャ ~テーブル(2/3)~ <クラスタリングキー> • データ格納時に、日付などの列は自動的にソートされて格納 されるが、クラスタリングキーを定義することで、マイクロ パーティション内のデータの並び順を明示的に制御することが可能 ₋ カーディナリティが高いWHERE句で指定される列や結合列を指定することで、クエリの スキャン効率や列圧縮率を高めることが可能 ₋ 明示的にRECLUSTER句を指定したALTER TABLEコマンドを実行することで、テーブル を再クラスタリング可能 <永続テーブル/トランジエントテーブル/テンポラリテーブル> • 永続テーブルは、ユーザが明示的に削除するまでデータが保持され、タイムトラ ベル&リカバリが可能 • トランジエントテーブルは、ユーザが明示的に削除するまでデータが保持され、 タイムトラベルは可能だが、リカバリできない • テンポラリテーブルは、セッション単位でデータを保持するため他のユーザは参 照できず、タイムトラベルは可能だが、リカバリはできない Table Type Persistence Time Travel Retention Period (Days) Failsafe Period (Days) 永続(EE以上) 明示的に削除されるまで 0~90 7 永続(PE以下) 明示的に削除されるまで 0 or 1 7 トランジエント 明示的に削除されるまで 0 or 1 0 テンポラリ セッションの間 0 or 1 0 Staging Location(S3バケット) F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s テーブル (Object) S3 EC2 ウェアハウス S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ・ ・ ・ S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ウェアハウス S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ・ ・ ・ S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ・ ・ ・ リザルトキャッシュ オンラ イン用 Wareh ouse バッチ 用 Ware house リザルトキャッシュ クラウド サービス 認証、 認可 イン フラ 管理 Web 管理 ツー ル オプ ティ マイ ザ トラ ンザ ク ショ ン管 理 セ キュ リ ティ ステージ (Object) メタ デー タ
  • 16. 15 3. Snowflakeアーキテクチャ ~テーブル(3/3)~ <Secure View> • Secure Viewを使用することで、ビュー定義、およびビュー を構成するテーブルへのアクセスを隠蔽した状態であっても、 ユーザが必要なデータにアクセスすることが可能 ₋ CURRENT_ACCOUNT、CURRENT_ROLE、CURRENT_USERファンクションを活用する ことで、セキュアにデータシェアリング(後述)を行うことが可能 Staging Location(S3バケット) F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s テーブル (Object) S3 EC2 ウェアハウス S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ・ ・ ・ S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ウェアハウス S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ・ ・ ・ S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ・ ・ ・ リザルトキャッシュ オンラ イン用 Wareh ouse バッチ 用 Ware house リザルトキャッシュ クラウド サービス 認証、 認可 イン フラ 管理 Web 管理 ツー ル オプ ティ マイ ザ トラ ンザ ク ショ ン管 理 セ キュ リ ティ ステージ (Object) メタ デー タ
  • 17. 16 3. Snowflakeアーキテクチャ ~ウェアハウス(1/2)~ • ウェアハウスは、ストレージと分離されたコンピュート リソースで、クエリやDMLを実行する際に必ず必要 • ウェアハウスが起動している間、エディション、ウェアハウスサ イズ、クラスタ数に応じてクレジットが消費され、費用がかかる <エディション> • エディションには、Standard Edition、Premier Edition、Enterprise Edition、 Enterprise Edition for Sensitive Data、Virtual Private Snowflakeがあり、 エディションごとにコンピュートリソースの単価が決められている ₋ 詳細は「4. 参考情報」のエディションごとの機能、サポートレベル、価格を参照 <ウェアハウスサイズ> • ウェアハウスサイズは、クラスタ内のサーバ数を示していて、1サーバのスペックは 「Amazon C3.2XLarge 8 cores, 15 gigs of ram, 160 SSD」 ₋ リニアな性能向上を実現 (ウェアハウスサイズを倍にすると、処理時間は1/2) Warehouse Size Servers/ Cluster Credits/ Hour Credits/ Seconds Additional Details X-Small 1 1 0.0003 CREATE WAREHOUSEコマンド実行時のデフォルトサイズ Small 2 2 0.0006 Medium 4 4 0.0012 Large 8 8 0.0024 X-Large 16 16 0.0048 Webインタフェースでウェアハウス作成時のデフォルトサイズ 2X-Large 32 32 0.0096 3X-Large 64 64 0.0192 4X-Large 128 128 0.0384 Staging Location(S3バケット) F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s テーブル (Object) S3 EC2 ウェアハウス S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ・ ・ ・ S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ウェアハウス S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ・ ・ ・ S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ・ ・ ・ リザルトキャッシュ オンラ イン用 Wareh ouse バッチ 用 Ware house リザルトキャッシュ クラウド サービス 認証、 認可 イン フラ 管理 Web 管理 ツー ル オプ ティ マイ ザ トラ ンザ ク ショ ン管 理 セ キュ リ ティ ステージ (Object) メタ デー タ
  • 18. 17 3. Snowflakeアーキテクチャ ~ウェアハウス(2/2)~ <クラスタ数> • ウェアハウス内でクラスタを複数作成可能(EE以上) ₋ クラスタ数は1~10を指定可能 ₋ オートサスペンド(ユーザアクセスがなくなった後何秒でサスペンド するか設定可能)/オートレジューム可能 ₋ 4X-Largeで10クラスタ起動すると、1時間で1,280クレジット(EEの場合3,840ドル)かか るため、クラスタ数を増やす場合は慎重に! • ALTER WAREHOUSEコマンドにて、ウェアハウスのサスペンド/レジューム可能 ₋ サスペンドしている間は課金されない ₋ ウェアハウスが起動している間のみ秒単位で課金される • 例えばオンライン/夜間バッチのようにユースケースが異なる処理については、 ウェアハウスを複数作成することでウェアハウス間の競合なく処理を行うことが 可能 • ウェアハウスサイズによって単一処理時間、クラスタ数によって同時実行数を調 整することが可能 • パーティションキャッシュはマイクロパーティションのキャッシュで、ウェアハ ウス起動後にクエリを実行することで、スキャン対象データがウェアハウスの実 体であるEC2のSSDにキャッシュされる ₋ ウェアハウスの起動/レジューム直後はデータがキャッシュされていないため、初回アク セスから性能を出したい場合は、ウォームアップも検討する必要あり ₋ 検索対象データが大量な場合は、全てのデータがSSDに載るかも確認が必要 Staging Location(S3バケット) F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s テーブル (Object) S3 EC2 ウェアハウス S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ・ ・ ・ S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ウェアハウス S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ・ ・ ・ S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ・ ・ ・ リザルトキャッシュ オンラ イン用 Wareh ouse バッチ 用 Ware house リザルトキャッシュ クラウド サービス 認証、 認可 イン フラ 管理 Web 管理 ツー ル オプ ティ マイ ザ トラ ンザ ク ショ ン管 理 セ キュ リ ティ ステージ (Object) メタ デー タ
  • 19. 18 3. Snowflakeアーキテクチャ ~リザルトキャッシュ~ • クエリの実行結果のキャッシュでS3に24時間格納されている • クライアントはクラウドサービス経由か直接S3からダウンロード ₋ サイズの上限はない ₋ 性能検証を行う場合はUSE_CACHED_RESULTをFALSEにすることで リザルトキャッシュを無効化することも検討 Staging Location(S3バケット) F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s テーブル (Object) S3 EC2 ウェアハウス S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ・ ・ ・ S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ウェアハウス S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ・ ・ ・ S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ・ ・ ・ リザルトキャッシュ オンラ イン用 Wareh ouse バッチ 用 Ware house リザルトキャッシュ クラウド サービス 認証、 認可 イン フラ 管理 Web 管理 ツー ル オプ ティ マイ ザ トラ ンザ ク ショ ン管 理 セ キュ リ ティ ステージ (Object) メタ デー タ
  • 20. 19 3. Snowflakeアーキテクチャ ~ユーザアクセス~ • 標準SQL https://docs.snowflake.net/manuals/sql-reference/intro-summary- sql.html ₋ SQL-99の大部分、およびSQL-2003の分析拡張部分をサポート ₋ データ型、SQL構文、事前定義関数 • ユーザ定義関数 https://docs.snowflake.net/manuals/sql-reference/user-defined- functions.html • トランザクションサポート https://docs.snowflake.net/manuals/sql-reference/transactions.html ₋ S3に格納されているデータの整合性担保は、メタデータを管理している FoundationDBで実現 ₋ サポートしている分離レベルはRead Commitedのみ Staging Location(S3バケット) F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s テーブル (Object) S3 EC2 ウェアハウス S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ・ ・ ・ S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ウェアハウス S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ・ ・ ・ S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ・ ・ ・ リザルトキャッシュ オンラ イン用 Wareh ouse バッチ 用 Ware house リザルトキャッシュ クラウド サービス 認証、 認可 イン フラ 管理 Web 管理 ツー ル オプ ティ マイ ザ トラ ンザ ク ショ ン管 理 セ キュ リ ティ ステージ (Object) メタ デー タ
  • 21. 20 3. Snowflakeアーキテクチャ ~その他情報~ <Data Sharing> • 従来のデータ連携では、ファイル出力/連携/取り込み、もしくは APIによる連携が必要だった • Snowflakeが以下のアーキテクチャを持っていることで、自社DB と他社DBの一部をセキュリティを担保しつつ、最も効率的に連携することが可能 ₋ コンピュートとストレージの疎結合 ₋ 強固なメタデータ管理によるアクセス制御 ₋ 無制限な同時実行 <クローン> • テーブル、スキーマ、データベース単位でクローニング可能 • クローンは数秒で完了し、かつ追加のストレージコストは発生しない • タイムトラベル機能と合わせて使用することで、EE以上であれば 最大90日前のクローンも作成可能 <バックアップ&リカバリ> • 従来型のデータベースでは、多くの場合完全バックアップと増分バックアップを 取得 ₋ データストレージの増大 ₋ データ再ロード、リカバリ時のビジネスダウンタイム ₋ (場合によって)最後のバックアップ以降のデータ損失 • マルチデータセンタや冗長化アーキテクチャは従来のバックアップの必要性を大 幅に軽減する • データ破損や紛失の可能性はあるため、効率的で費用対効果の高いバックアップ の代替手段として、7日間分の回復可能な履歴データ(Failsafe)を自動取得 Staging Location(S3バケット) F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s F i l e s テーブル (Object) S3 EC2 ウェアハウス S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ・ ・ ・ S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ウェアハウス S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ・ ・ ・ S S D ( パ ー テ ィ シ ョ ン キ ャ ッ シ ュ ) ・ ・ ・ リザルトキャッシュ オンラ イン用 Wareh ouse バッチ 用 Ware house リザルトキャッシュ クラウド サービス 認証、 認可 イン フラ 管理 Web 管理 ツー ル オプ ティ マイ ザ トラ ンザ ク ショ ン管 理 セ キュ リ ティ ステージ (Object) メタ デー タ
  • 22. 21 4. パフォーマンスを考慮した設計 ~性能を引き出すための検討事項(1/4)~ <Snowflake> 〇設計のキーとなる項目 • マイクロパーティション ₋ テーブル内のデータが行単位でマイクロパーティションに自動分割される ₋ マイクロパーティション内で列ごとに個別に格納、圧縮される • クラスタリングキー ₋ 指定しなかった場合も、日付などの列は自動的にソートされて格納されるが、 明示的にカーディナリティが高いWHERE句で指定される列や結合列を指定す ることで、クエリのスキャン効率や列圧縮率を高めることが可能 ₋ 検索効率の高い順番に複数列を指定することで、Oracle Databaseの索引構 成表のようにデータが格納される • パーティションキャッシュ ₋ クラスタ起動時にはパーティションキャッシュにはデータがロードされず、 クエリ実行によって初めてロードされるため、ウォームアップの仕組みを用 意しておくことが望ましい • リザルトキャッシュ ₋ 特に何も設定しなくても、リザルトキャッシュは24h有効 ₋ サイズの制限はなし ₋ 性能検証を実施する際には同じSQLを複数回実行するため、無効化しておく 必要あり • その他 ₋ クラスタごとの同時実行数(デフォルト:8)はMAX_CONCURRENCY_LEVEL で変更可能
  • 23. 22 4. パフォーマンスを考慮した設計 ~性能を引き出すための検討事項(2/4)~ 〇設計のポイント • 1処理の目標時間を達成できるまでウェアハウスサイズを大きくし、同時に実行 したい処理数に合わせてクラスタ数を変更していくことで、性能要件(単一処理 性能、同時実行数)を満たすことができる。 • ピーク時にウェアハウスサイズ、およびクラスタ数をElasticに変更することが 可能。データベース内でパターンの異なる処理(軽い処理/重い処理、オンライ ン/バッチ)がある場合は、ウェアハウスを分けることで、競合なく処理を共存 することが可能。これらを組み合わせることで、性能要件(単一処理性能、同時 実行数)に応じてシステム構成を柔軟に変更することができる。
  • 24. 23 4. パフォーマンスを考慮した設計 ~性能を引き出すための検討事項(3/4)~ <BigQuery> 〇設計のキーとなる項目 • パーティション分割 ₋ コストに影響のあるスキャン対象データ量を減らすため、ファイル分割や— time-partitioning_typeによってパーティション分割することが可能 〇設計のポイント • 2,000スロット未満であれば自動で必要なリソース(スロット)を確保して使用し てくれるが、調整可能なパラメータがなく同時実行性能を出すことが難しい。 軽い処理でも一定時間かかるため、マスタをDataStoreに入れるなどの工夫が必 要。大量データ集計を同時実行する場合には、スロット数が足りるかの検証も 必要。 <Redshift> 〇設計のキーとなる項目 • 分散キー ₋ ノード間でのデータ格納方法(EVEN分散、キー分散、ALL分散)を定義 ₋ 再分散を避けるようなデータの持ち方を検討しておくことが重要で、実行計画 で再分散の状況を確認できるが、一番つらいのはDS_BCAST_INNER(全ノー ドにデータをコピー)
  • 25. 24 4. パフォーマンスを考慮した設計 ~性能を引き出すための検討事項(4/4)~ 〇設計のキーとなる項目 • ソートキー ₋ ノード内のデータ格納方法(ソート順)を定義し、複数列を指定する場合は順番 が重要 ₋ インターリーブドソートキーは複数列を指定する場合に、どの列を検索条件に してもそれなりの検索性能を出すためのデータ格納方法を定義する (データの変動に応じてVACUUM REINDXが必要となるため、多くの場合使用 する必然性はない) • 列圧縮方式 ₋ ANALYZE COMPRESSIONを実行するも、ほとんどの列でZSTDが推奨される • ワークロード管理 ₋ concurrency(デフォルト:5)にて同時実行数、wlm_query_slot_count(デ フォルト:1)でクエリに割り当てるメモリリソースを制御 〇設計のポイント • テーブルごとに検索条件に指定する列が限られていればよいが、様々な列を指 定する場合にはテーブルを非正規化していると再分散の影響が大きくなる。 • 性能を出すには各種パラメータの最適値を導き出すための試行錯誤が必要。 • クラスタに対する同時実行数の最大が50で、ベストプラクティスとしては15以 下とも言われているため、同時実行には強くない。 • 拡張時のダウンタイムがつらい。 • 2017/10/18に追加されたdc2.8xlargeはdc1.8xlargeと比べ、価格据え置きで 性能2倍ということなので試してみるべき。
  • 26. 25 5. まとめ データベースの在り方を根本的に変える設計思想 • これまで、1つのデータベースに対して異なるワークロードを実行していたため、ワーク ロード管理が難しく性能を出すことが難しかった。 • コンピュートリソースとストレージが分離されたことで、1つのデータベースで競合しない 複数のコンピュートリソースを割り当てることができるようになった。 • 検索対象のデータはS3ではなく、コンピュートリソースのSSDにキャッシュとして保持さ れるため、データも競合しない。Unlimited Concurrency • 競合が発生していたために、用途ごとにデータベースを用意し、データを重複保持してい たが、開発環境以外は1つのデータベースのみの運用とすることが可能。 • 他の組織へのデータ連携も不要となり、ライブデータをセキュアに組織を跨いで共有可能。 ぜひ試してみて下さい! • これまでにないアーキテクチャで、性能要件に合わせて柔軟に環境を用意することができ るのと、データベースを用途ごとに複数用意する必要がありません。また、AWS上で動作 するクラウドデータウェアハウスなので、AWSの1サービスとして他のサービスと組み合 わせて使うことが可能です。 • 私自身これまで20年間データベースに関わってきましたが、実際に使ってみて、機能、性 能、価格全てにおいてすごく良いと感じました。 • ベンダとしては、日本への進出は手探り状態のようですが、皆さんに使ってもらえれば日 本市場をより強く意識するようになると思いますので、まずこれをきっかけに使って見て もらえればと思っています。 • 実際に使ってみて感想などを共有頂ければ、ベンダにもフィードバックしたいと思います。
  • 27. 26 6. 参考URL • ドキュメント https://docs.snowflake.net • Snowflakeアーキテクチャ詳細 https://www.snowflake.net/resource/sigmod-2016-paper-snowflake- elastic-data-warehouse/ • ブログ 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