5年ほど前、ビッグデータとアナリティクスをめぐる誇大広告はたくさんありましたが、今日では、この業界は現実的に誇大広告に応え、ビジネスを前進させる根本的な力へと変貌を遂げています。この数年間で、毎秒生成されるデータの量は飛躍的に増加しました。このため、分析ワークロードを効率的に処理するエンタープライズ向けクラウドデータウェアハウス技術が登場することになったのです。
データウェアハウスは、データを効率的に活用し、深い洞察を得るのに欠かせないものとなっています。となると、どのデータウェアハウスが自分のビジネスに最適なのかが大きな問題になってきます。Amazon Redshift、Google BigQuery、そしてSnowflakeの三大データウェアハウスを検討してみましょう。強力なリレーショナルDBMS(データベース管理システム)のデータベースモデルであるRedshiftとSnowflakeを見てみると、相違点よりも類似点の方が多いのですが、相違点はかなり大きいです。
Redshift と Snowflake の主な違い
- Snowflakeでは、コンピュートをストレージとは別に、使った分だけ払うシステムを採用している
- Snowflakeは、RedshiftよりもJSONベースの関数やクエリのサポートが充実している
- Snowflakeは即時スケーリングが可能、一方Redshiftはノードの追加に数分かかる
- Snowflakeは、Redshiftよりもメンテナンスの自動化が進んでいる
- Redshiftは、Amazonの豊富なクラウドサービスとビルトインセキュリティをよりよく統合している
- Redshift Spectrumは、S3データレイクにまたがるRedshiftの検索を拡張する
Amazon RedshiftとGoogle BigQuery、Google BigQueryとSnowflakeの比較は過去に既にしたので、今回はAmazon RedshiftとSnowflakeの比較をしようと思います。Integrate.ioは、 3つのデータウェアハウスをすべてをサポートしており、ユーザーが選択したクラウドデータウェアハウスに強力なデータ統合パイプラインを構築できるようになっています。
Redshift とは
Redshiftは、BI(ビジネスインテリジェンス)ツールとシームレスに統合できる、フルマネージドでクラウド対応のペタバイト級データウェアハウスサービスと言えます。Redshiftを利用すれば、ETL(抽出、変換、格納)を行うだけで、よりスマートなビジネス上の意思決定を行うことができます。
Amazonでは、数百ギガバイトのデータからスタートし、即時の需要に応じてシームレスにスケールの拡大又は縮小が非常に簡単になっています。これにより、企業はデータを活用し、自社や顧客に関する貴重なビジネスインサイトを得ることができます。
クラウドデータウェアハウスを立ち上げるには、Redshiftクラスターと呼ばれるノードの集合の立ち上げが必要です。クラスター内の各ノードは、「スライス」と呼ばれるものにパーティション化され、各スライスには、ノードのメモリとディスク領域の一部が割り当てられています。これにより、ノードに割り当てられたワークロードのバランスが取れ、クエリパフォーマンスが最適化されます。クラスターのプロビジョニングが完了すると、データセットをアップロードしてデータ分析クエリの実行ができるようになります。
データセットのサイズに関係なく、同じSQLベースのツールやBIアプリケーションを使用することで、高速なクエリパフォーマンスを活用することができます。
Amazon Redshiftは、内部のネットワーク・コンポーネントを活用することで優れたパフォーマンスが発揮され、高帯域幅の接続、近接配置、カスタム通信プロトコルを活用することで、ノード間の高速通信が実現されます。
Snowflake とは
Redshiftと同様に、Snowflakeも強力なリレーショナルデータベース管理システムです。構造化データと半構造化データの両方に対応した分析用データウェアハウスとして、SaaS(Software-as-a-Service)モデルで提供されています。
つまり、既存のデータベースやHadoopのようなビッグデータソフトウェアプラットフォームの上に構築されているわけではなく、その代わり、Snowflakeはクラウド用に特別にデザインされた独自のアーキテクチャを持つSQLデータベースエンジンを使用しています。
Snowflakeのアーキテクチャは、従来の「シェアードディスクモデル」と「シェアードナッシングモデル」のハイブリッドであるというユニークな特徴を持っています。シェアードディスクでは、システムが中央のデータストアを使用し、各計算ノードがそれにアクセスします。シェアードナッシングでは、クラスターの各ノードがデータセット全体の一部をローカルに保存します。
また、Snowflakeは3層構造で構成されています。
- データベースストレージ:ファイルサイズ、構造、メタデータなど、情報をデータベースに保存する方法を管理します。
- クエリ処理:「仮想ウェアハウス」 と呼ばれるものを使ってクエリを処理します。各ウェアハウスは、他から独立したクラスターノードを表し、仮想ウェアハウス間でコンピュートリソースが共有されることはありません。
- クラウドサービス:この層は、認証、インフラ管理、クエリ解析、アクセス制御など、このシステムのさまざまなコンポーネントを結びつけるサービスを表になります。また、このデータおよび分析ソリューションは、従来のデータウェアハウスよりも高速で使い勝手が良く、柔軟性に富んでいますが、それはなぜでしょうか。Snowflakeは、価格設定において、コンピュートとストレージの機能を分離していることにより、必要な機能のみに料金を支払うことができ、このアプローチにより、コストを削減しながらも必要に応じて柔軟に拡張することができるからです。
Redshift ETLとSnowflake ETLの両方を使ったことがある方なら、この2つのソリューションに多くの類似点があることをすでにご存知でしょう。しかし、それぞれのプラットフォームには、さらに独自の機能やその他の機能があります。
例えば、データ分析ワークロードの完全なクラウド上での実行を検討している場合、この2つの強力なクラウドデータウェアハウスソリューションの共通点は、その相違点よりもはるかに大きいものです。
Snowflakeは、Snowflake Elastic Data Warehouseという形で、クラウドベースのデータストレージとアナリティクスを提供しています。このシナリオでは、ユーザーはクラウドベースのハードウェアとソフトウェアを使用してデータの分析・保存ができます。
次に、データはAmazon S3に保存されます。Snowflake ETLを使用する場合、Hadoopのような技術を使用せずに、パブリッククラウドのエコシステムを活用することができます。
この2つのクラウドウェアハウスシステムはどちらも強力で、データ管理に関してユニークな機能を備えていますが、明確な相違点があります。
自身の会社に適したソリューションを選ぶには、統合機能、データベース機能、メンテナンス、セキュリティ、そして(もちろん)コストも比較検討の必要があります。
Snowflake と Redshift の比較
統合とパフォーマンス
もしあなたの会社がすでにAWSに取り組んでいるなら、Redshiftは自然な選択に思えるかもしれませんが、オンデマンド機能を持つSnowflakeもAWS Marketplaceで見つけることができます。
Athena、DMS(Database Migration Service)、DynamoDB、CloudWatch、Kinesis Data FirehoseなどのAWSサービスをすでに活用している場合、いい点としては、Redshiftをシームレスに統合できる点です。
また、データがAmazon S3、DynamoDB、Amazon EMRにある場合、RedshiftはMPP(Massively Parallel Processing)を利用してデータを高速にロードすることができます。
Redshift は、【ソート】と【分散】のキーが適切に計画されていない場合、パフォーマンス上の問題が発生することもあります。このキーは、システム内で情報がどのように保存されアクセスされるかを確定しますが、例えば一度テーブルに分散キーを設定したら後で変更はできないというように、設定と維持が複雑になることがあります。したがって、こういった概念を十分に理解した上での実装が必要です。
もう一点考慮すべきは、Redshiftはライブアプリのデータベースには適さないということです。大規模なデータセットに対するクエリや分析の実行には高速ですが、ライブアプリには同じパフォーマンスは提供されないので、このユースケースで必要な場合は、キャッシュレイヤーへの情報の引き込みが必要です。
ただ、Snowflakeを利用する場合、Redshiftのような統合機能がないことに気を付けてください。このことで、AthenaやGlueなどのツールとデータウェアハウスを連携させることが難しくなるのです。
しかし、SnowflakeはApache Spark、IBM Cognos、Qlik、Tableauなど、さまざまな統合オプションでこれを補っており、その結果、両ソリューションはほぼ互角と言えるでしょう。
Redshiftはより確立されたソリューションですが、Snowflakeはここ2、3年で大きく前進しています。
マテリアライズドビューや分散キーなどのデータ最適化オプションにより、ダッシュボードはソース・データベースより最大150%高速に動作する可能性があります。
データベース機能
Snowflakeでは、異なるアカウント間でのデータ共有が非常に簡単に行えるため、例えば顧客とデータを共有したい場合は、データを一切コピーすることなく共有ができます。
これはサードパーティデータを扱う上で非常に効率的なアプローチであり、プラットフォーム全体で規準となる可能性がありますが、現時点ではRedshiftに同じようなサポートの提供はありません。実際、RedshiftにArray、Object、Variantといった半構造化データ型のサポートはありませんが、Snowflakeではそれが可能です。
文字列に関しては、Redshift Varcharではデータ型が65535文字に制限されており、列の長さを先に選択する必要があります。
Snowflakeでは、Stringは16MBに制限されており、デフォルト値はStringサイズの最大値です(そのため、パフォーマンスのオーバーヘッドはありません)。そのため、演習の最初にStringサイズの値を知っておく必要はありません。
メンテナンス
AmazonのRedshiftでは、ユーザーは同じクラスターを見て、利用可能なリソースの奪い合いを余儀なくされます。実際、WLM(ワークロード管理)キューを使った管理が必要であり、理解し管理しなければならない複雑なルールのセットを考えると、これはかなり困難なことでしょう。
この問題は、Snowflakeには存在せず、同じデータをコピーすることなく、(様々なサイズの)異なるデータウェアハウスをシームレスに起動して見ることができるのです。そのため、これらを別々のユーザーやタスクに非常に簡単に割り当てることができます。
テーブルを定期的にバキュームして分析する場合、Snowflakeにはターンキーソリューションがありますが、Redshiftでは、スケールの拡大・縮小が困難なためにこれが問題になることがあります。
また、Redshiftのサイズ変更操作はすぐに非常に高価になり、何時間ものダウンタイムにつながる可能性があります。
Snowflake では計算機とストレージが分離しているため、スケール拡大や縮小のためにデータのコピーは必要なく、データ・コンピュートの容量を自由に切り替えるだけでいいのです。
セキュリティ
ビッグデータ・プロジェクトの成功にはセキュリティがすべてですが、新しいデータソースが増えるたびに新しい脆弱性が生まれる可能性があるため、一貫したセキュリティの維持は困難です。その結果、生成されるデータとセキュリティで保護されるデータの間にギャップが生じる可能性があります。
セキュリティに関しては、両製品とも強化されたセキュリティを持っています。Redshiftには、アクセス管理、クラスターの暗号化、クラスターのセキュリティグループ、転送中のデータ、ロードデータの暗号化、SSL接続、サインイン認証などの機能や管理ツールもあります。Redshiftのアクセスは、テーブル内の特定のデータへのアクセスをユーザーやグループに許可することができるように、粒状化することができます。
Redshiftクラスターは、インフラストラクチャのVPC( 仮想プライベートクラウド)内で起動することができ、これにより、クラスターへのインバウンドまたはアウトバウンドアクセスを制限できます。
Snowflakeにも同様のツールや機能があり、セキュリティや規制機関へのコンプライアンスを確保しますが、セキュリティ機能はすべてのバージョンで利用できるわけではないので、どのエディションで作業しているのかを把握しておかなければいけません。基本バージョンには基本的なセキュリティ・オプションがあり、選択したバージョンによってオプションがより強固になるということで、この方法には利点があります。この方法を用いれば、必要なセキュリティ機能だけを購入するカスタマイズが可能です。
コスト
Snowflake ETLとRedshift ETLは、どちらも価格モデルが大きく異なっており、よく見ると、オンデマンド価格に関してはRedshiftの方が安価であることがわかります。どちらのソリューションも、前払いを選択した企業には30%から70%の割引があります。
1年または3年のRI(予約インスタンス)価格を利用すれば、標準的なオンデマンド価格モデルでは適用されないようなさらなる割引を利用でき、Redshiftは、時間単位、ノード単位でコストを計算します。
つまり、毎月のコミットメントは次のように計算できます:
Redshiftの月額費用=【時間単価】×【クラスターサイズ】×【1ヶ月の時間数】
Snowflakeの料金は、各請求書が各仮想データウェアハウスに対して時間単位で作成されるため、毎月の利用パターン次第で大きく変わり、データストレージのコストも、計算コストとは別に発生します。
例えば、Snowflakeのストレージコストは、1テラバイトあたり23ドルの定額で、平均的な圧縮量から始めることができます。これは毎日発生し、毎月請求されますが、計算コストは、1秒または1クレジットあたり約0.00056ドルになります(Snowflake On Demand Standard Editionの場合)。
しかし、Snowflakeには7段階の計算機ウェアハウスがあり、最小のクラスターは1クレジット又は1時間あたり2ドルで利用できるため、すぐに混乱を招きます。そしてこのコストは、レベルが上がるにつれて倍増します。
Snowflakeのコスト面で重要なのは、Redshiftとは異なり、ETL部分だけのためにデータウェアハウスを立ち上げておく必要がないことです。Snowflakeと統合されたSnowpipeを使えば、ETLはクエリと処理を競合させることがなく、それによってウェアハウスを小さくできるため、コストの削減ができます。
その結果、Snowflakeのオンデマンド価格に比べてRedshiftは安価であると結論付けていいと思われますが、大幅なコストダウンの恩恵を受けるには、同社の1年または3年のRIへの加入が必要になります。
Snowflake と Redshift の長所と短所
Amazon Redshift ProsAmazon Redshiftの長所
- 非常にユーザーフレンドリー
- クラスターの作成、インスタンスの種類の選択、スケーリングの管理だけなど、管理もほとんど必要ない
- AWSの様々なサービス(世界最大のクラウドエコシステムの機能)とのシームレスな統合が可能
- データがAmazon S3に保存されている場合、コンピュートとストレージを独立してスケーリングできるようにするだけで、Spectrumは複雑なクエリを簡単に実行できる
- レポーティング環境でのデータの集計・正規化に最適
- 分析のための軽くて速いクエリで、同時並行的な分析が可能
- JSONを含む複数のデータ出力形式
- SQLのバックグラウンドを持つデベロッパーは、PostgreSQLの構文を活用し、シームレスにデータを扱える
- コンピュートパワーとデータストレージの両方をカバーするオンデマンド予約インスタンス価格を時間単位、ノード単位で提供
- データベースのセキュリティ機能の強化に加え、統合された広範なコンプライアンス・プログラムもある
- 安全、簡単、確実なバックアップ
Amazon Redshift の短所
- トランザクションシステムには不向き
- AWSが新しいパッチをリリースするのを待つ間、Redshiftの古いバージョンにロールバックしなければならない場合がある
- Amazon Redshift Spectrumは、スキャンされたバイト数に応じて追加料金が発生する
- 最新の機能やデータタイプがなく、方言がPostgreSQL 8に類似してる
- 外部テーブルのハングしているクエリに問題がある場合がある
- 変換されたテーブルの整合性の検証には、他の手段にも頼らざるを得ない
- プライマリキーと外部キーは、Redshiftでのみ情報提供される。一意性を強制するものではないため、何か別の処理でのデータの重複排除が必要
Snowflake の長所
- 主にクラウド上で運用する企業に最適
- 非常に使いやすく、他のほとんどのテクノロジーと互換性がある
- 内蔵されているSQLインターフェースも直観性に優れている
- Snowflake自体がクラウドベースのデータウェアハウスであるため統合が簡単
- 簡単なセットアップと実行
- サードパーティーパートナーやテクノロジーとの広範なエコシステムのサポート
- 自動モデル(本物のSaaSは、クラウドサービス、データストレージ、クエリ処理との統合ができる)
- データストレージとコンピューティングの料金は、階層とクラウドプロバイダーに基づいて別々に請求される
- 保護ビューとセキュアなユーザー定義関数が可能
- データベースのテーブルを利用してアカウント間のデータ共有が可能
- Amazon AWSとのシームレスな統合
Snowflake の短所
- クラウドベースのサービスと統合しにくいオンプレミスのテクノロジーを使ってビジネスを展開している場合、Snowflakeはいい選択肢ではない
- Snowflakeのクレジットは、バーチャル倉庫を起動するたびに分単位で使用されますが、それ以降は秒単位で課金される
- オートコンプリート関数を今よりずっとうまく管理するために、SnowflakeのSQLエディタのアップデートも必要
まとめ
RedshiftとSnowflakeのどちらを選ぶかは、リソースと特定のビジネス需要に関連しています。例えば、数百万から数十億に及ぶ巨大なワークロードを管理することを任務とする企業であれば、おそらくRedshiftです。
同社のサービスは費用対効果に優れていますが、企業には毎日稼働するクラスターに対して、より低い価格帯のクエリー速度を選択することで費用を削減するという選択肢もあります。
RedshiftはAmazonの人気製品であるため、詳細なドキュメントやサポートがあり、チームに潜在的なハードルを克服させることができますが、基本的にはデータウェアハウスは、日々の使用パターンと扱うデータの量に基づいた決定が必要です。
どちらのクラウドデータウェアハウスを選択するにしても、Integrate.ioは安全かつセキュアにデータをそこに取り込むことができるようサポートしています。両方のデータウェアハウスの使用を決定した場合、RedshiftとSnowflakeを一緒に統合する方法の詳細については、こちらをご覧ください。
14日間の無料トライアル…または、詳細説明、相談をご希望の場合は、こちらからデモをご予約ください。