クラウドベースの
データウェアハウスアーキテクチャ
Snowflakeアーキテクチャの違い
Snowflake独自のデータウェアハウスアーキテクチャは、構造化データ(CSVファイルやテーブルなど)のほか、半構造化データ(JSON、Avro、Parquetなど)にも完全リレーショナルデータベースサポートを提供し、すべてを論理的に統合されたシングルソリューションで処理します。Snowflakeは、管理不要で、コンピュート、ストレージ、クラウドサービスを切り離し、個別にスケーリングや変更を可能にすることを特徴としたData Warehouse-as-a-Service(サービスとしてのデータウェアハウス)です。
メタデータも自動化されています。さらに、Snowflake内でのメタデータ処理は、クエリ実行中のコンピュートリソースと競合することはありません。つまり、Snowflakeは、コンピュートリソースのスケールアウトにほぼ比例したスケーリングができます。
Snowflakeは、セキュア設計で、よく使用されるETLやBIツールとも互換性があるため、データウェアハウスマネージャーはほぼ無制限の同時実行機能により企業全体のデータウェアハウス要件に対応します。また、Snowflakeは、最新のデータ主導型アプリケーション開発に取り組む開発者向けの強力なクエリ処理バックエンドプラットフォームとしても機能します。
このような特性のほか、Snowflakeはどのような点で他社製品と一線を画していますか?
ビデオ
統合アーキテクチャ
Snowflakeは、データアナリティクスとデータハウジングに革命を起こすためにクラウド向けに設計された、特許取得済みのマルチクラスタ共有データアーキテクチャウェアをベースとしています。
Snowflakeは、コンピュート、ストレージ、サービスをすべて個別にスケーリング可能な統合システムです。
コンピュートとストレージを統合する共有ストレージアーキテクチャとは異なり、Snowflakeを利用すると、任意のジョブ用のストレージ、アナリティクス、ワークグループリソースの自動スケーリングを瞬時に、しかも容易に行うことができます。
ストレージ
拡張可能なクラウドブロブストレージをベースとするストレージレイヤーは、多種多様なデータ、テーブル、クエリ結果をすべてSnowflakeに保存します。ストレージレイヤーは、コンピュートリソースから完全に独立してスケーリングするよう設計されているため、データウェアハウジングおよびアナリティクス用に最大限の拡張性、柔軟性、パフォーマンスキャパシティが確保されます。その結果、Snowflakeは、実行中のクエリやワークロードに影響を及ぼすことなくデータのロード/アンロードを処理する機能など、独自の機能を提供します。
ストレージレイヤーの下で、Snowflakeはマイクロパーティションを活用し、安全かつ効率的に顧客データを格納します。Snowflakeにロードされると、データは自動的に適度なサイズのマイクロパーティションに分割され、効率的なクエリ処理を可能にするためのメタデータが抽出されます。マイクロパーティションは列指向型で圧縮され、セキュアキー階層を使用して完全に暗号化されます。
Snowflakeデータウェアハウスアーキテクチャの利点
-
トランザクション型SQLデータウェアハウス
- サービスをストレージとコンピュートから切り離すことで、複数の仮想ウェアハウス(コンピュートクラスタ)が同一データを同時に処理できます。マルチクラスタウェアハウスでは、同時実行がほぼ無制限に可能で、瞬時にスケーリングされます。
- 1つの仮想ウェアハウスでのアクティビティが、他のすべての仮想ウェアハウスに影響を与えることはありません。例えば、ある仮想ウェアハウスでデータをロードする場合、他の仮想ウェアハウスで実行中のクエリが同じデータにアクセス中であっても、そのパフォーマンスに影響を与えることはありません。
- 各仮想ウェアハウス全体で、ACIDトランザクションの整合性が完全に維持されます。クエリは常にデータの統一ビューを参照し、トランザクションのコミットは、すべてのデータウェアハウスで実行中の新しいクエリに即座に反映されます。
- テラバイトクラスのデータベースまたはテーブルのゼロコピークローンがわずか数秒で作成され、追加ストレージコストは発生しません。クローンとは、元のオブジェクトの完全ロジカルレプリカですが、ライフサイクルは独立しているものを指します。
- タイムトラベル機能を使用すると、SELECTステートメントやセロコピークローンは、最長90日前の「当時」の状態が完全に保持されたデータベースを表示できます。デフォルトの保持期間は24時間です。
-
パフォーマンスとスループット
- Snowflakeは、従来のデータアナリティクス方法を上回るパフォーマンスを発揮します。コンピュートリソースがサイズに合わせてスケーリングされる一方、効率的なクエリの最適化により、従来のクラウドやオンプレミスシステムの数分の1の時間で応答を返します。
- パフォーマンスに関する課題は秒単位の速度で対処できます。最初に必要とするパフォーマンスに基づき、仮想ウェアハウスのサイズを指定できます。ただし、サイズの調整はウェアハウスの実行中を含め、随時行えます。
- 課金は、コンピュートリソースの使用時間のみに対して秒単位で行われます。また、随時、仮想ウェアハウスを一時停止できます。
- マルチクラスタウェアハウスが、無制限の同時実行ユーザーに対して一貫したSLAを提供します。自動クラスタリングにより、新しいデータをテーブルにロードする際に手動でデータを再クラスタリングする必要はありません。マテリアライズドビューを採用したユーザーエクスペリエンスにより、よく使用される反復クエリパターンで構成されるワークロードのクエリパフォーマンスが向上しました。同時実行ワークロードが増加すると、Snowflakeは自動的にクラスタを仮想ウェアハウスに追加し、クエリを全体に分散させることで、データを手動で再クラスタリングする手間を省きます。ワークロードが減少すると、クラスタは一時停止します。料金が発生するのはアクティブクラスタのみであるため、利用した量にのみ課金されます。
-
全データのストレージとサポート
- ストレージは低価格で、実質無制限にスケーリングできます。Snowflakeは、データウェアハウジングに最適なプラットフォームです。ペタバイトクラスのデータベースにも、費用対効果に優れた高パフォーマンスのサポートを提供します。ストレージコストは、すべて圧縮データの実際の使用量に基づき、毎月格納されるTB単位で測定されます。
- 構造化データのクエリを実行する場合と同等のパフォーマンス特性を備えたリレーショナルSQL演算子を使用して、構造化データのほか、自動生成された半構造化データ(JSON、Avro、XML、Parquetなど)にもクエリを実行できます。半構造化データのロード作業は容易です。ロード中に動的スキーマが自動的に検出されます。このような動的スキーマのサポートにより、SQLへの自然な流れで効率的なクエリ実行が可能になります。
- Snowflakeを利用すると、構造化データと半構造化データを処理するために別々のシステムを実装する必要がありません。複雑なHadoopやデータウェアハウスパイプラインを排除できます。Snowflakeは、両方の役割をはるかに効率化し、低コストでより優れたビジネス成果を上げます。
-
可用性とセキュリティ
- Snowflakeのスケールアウトアーキテクチャは、複数のAmazonおよびAzureアベイラビリティーゾーンに満遍なく分散されるため、高可用性を実現します。Snowflakeは処理を継続し、ハードウェア障害による可用性の損失にも耐えられます。障害を許容し、顧客に与える影響を最小限に抑えるよう設計されています。
- Snowflakeは、Secure by Designを基に設計されております。インターネットや直接リンクによる転送時もディスク保管時も、全データが暗号化されます。Snowflakegは、シングルサインオンと連携した2要素フェデレーション認証に対応しています。認証はロールに基づいて行われます。予め定義されたクライアントアドレスにアクセスを制限するポリシーを作成することができます。
- Snowflakeは、AWSおよびAzureの両方でSOC 2 Type 2認証を取得しており、HIPAAのお客様には、ビジネスアソシエート契約を交わした上でPHIデータのサポートも提供します。すべてのネットワーク通信および仮想プライベートネットワークまたは指定分離ネットワークの暗号化などの追加レベルのセキュリティも利用できます。
-
シームレスなデータ共有
- Snowflake独自のクラウド専用アーキテクチャを利用すると、アカウント内で他のSnowflakeユーザーとデータを共有できます。
- Snowflake Data Sharingでは、プロバイダーのアカウントからコンシューマーのアカウントへデータをコピーしたり転送したりする必要はありません。代わりに、データの読み取り専用コピーにセキュアで選別されたアクセス権を付与します。
- 共有データを受信するアカウントについては、データ消費に使用するコンピュートリソースのみに課金されます。Snowflakeデータプロバイダーから共有されるデータは、多大な労力をかけたり、サードパーティのツールを使用したりすることなく、Snowflakeデータコンシューマーのアカウントからのデータと簡単に組み合わせることができます。
- 一昔前の電子メール、FTP、EDIなどのテクノロジーを使用する場合の負荷や複雑性を回避します。データコンシューマーと何を共有したいかを決め、使いやすいSQL機能を使用してデータを共有するだけです。