注:本記事は(2022年1月21日)に公開された(Expanding the Data Cloud with Apache Iceberg)を翻訳して公開したものです。

Snowflakeデータクラウドは、データサイロの解消、複雑なデータセットの安全な共有、膨大なデータへのクエリなど、データにまつわる難しい業務の容易化を目指した強力なツールとなっています。顧客によるデータクラウドへの移行が進む中、それぞれの移行ジャーニーにおいて、企業ごとに異なるニーズやスケジュールに対応するのが私たちの目標です。

そのため私たちは2019年に、データクラウドの境界を拡大し、特にSnowflakeへの移行に時間がかかるデータや移行が不可能なデータ(法的規制によりデータの保存先が指定されている場合など)についてSnowflakeを利用する上での障害を排除できる外部テーブルをリリースしました。外部テーブルは、要求の多いデータ作業を容易にしてくれるため好評を得ています。当初のリリース以降、主要なクラウドプロバイダーのオブジェクトストアのサポートや、Sparkベースのプラットフォームからの移行を検討している顧客のためのDelta Lake(現在パブリックプレビュー中)のような独自のテーブル形式のサポートなど、外部テーブルを拡張してきました。

Apache Icebergがオブジェクトストアに関連する多くの課題に取り組んでいることを受け、最近、非常に多くの顧客から、この形式で保存されたデータもデータクラウドに接続できるよう外部テーブルを拡張してほしい、という要望をいただいていました。これを受け、本日、外部テーブルのApache Icebergへのサポートがプライベートプレビュー段階に入ることを発表いたします。サポート対象にIcebergが加わることにより、柔軟性と相互運用性が向上するとともに、顧客のデータランドスケープの簡素化も実現されます。

テーブル形式とは何か、なぜ有効なのか

データレイクの構築は、問題が多く時間がかかる場合があります。外部テーブルはデータレイクの構築や使用に必要な多くのステップを簡素化するため、非常に有用となっています。データレイクの構築において、ブロブストアのバケットに個別のファイルを保存する方法が非常に一般的ですが、この方法は、スキーマを持つテーブルでファイルを使用する場合など、一連の課題を抱えています。この課題を解決するために、外部テーブルは、CSV、XML、ORC、Parquet、Avro、JSONといったさまざまなファイル形式を理解します。外部テーブルにファイルがインポートされると、ファイルに関するメタデータが保存され、テーブル上でのクエリ実行時には読み込みにスキーマが適用されるという点で、外部テーブルは便利です。外部テーブルには柔軟性がありますが、ある程度の制限やマイナス点もあります。そこで重要となるのが、テーブル形式です。

テーブル形式は、テーブルとそのメタデータ、さらにテーブルを構成するファイルを明示的に定義します。こうすることにより、データの読み込み時にスキーマを適用するのではなく、クエリの実行前にクライアント側がすでにスキーマを把握している状態となります。さらに、テーブルメタデータは、より精度の高いパーティショニングが可能な方法で保存することができます。このアプローチにより、次のような多くのメリットが得られます。

  • フィルタリングやパーティショニングの向上による性能の高速化
  • スキーマ進化の容易化
  • 任意の時点におけるテーブルでの「タイムトラベル」機能
  • テーブルのACID特性の遵守

Snowflakeは、このような機能を提供するためにゼロから設計されており、顧客は、Snowflakeのテーブルでこれらのメリットをすぐに活用することができます。しかし、データがSnowflake以外のさまざまな場所に存在するため、処理プラットフォームから分離可能なオープン仕様のテーブル形式を望む顧客もいます。具体例を挙げると、法的規制によるハード面での運用上の制約や、ブロブストア内のファイル上でのみ稼働するツールの使用といったゆっくりと変化する技術面での制約などにより、Snowflake外部にデータを保有する顧客がいます。このような顧客にとって、Apache Icebergのようなプロジェクトは特に有効と言えます。

新しいアーキテクチャやパターンをサポートするテーブル形式

Snowflakeは早い段階で内部テーブル形式を革新し、さまざまな新機能を実現しましたが、どのようなケースにも対応可能な汎用的なストレージパターンやアーキテクチャは存在しません。そのため、プラットフォームの評価においては、自社に最適なパターンを選択できる柔軟性を重要な検討材料とすべきです。テーブル形式の中には、データを分散して保存、使用するデータメッシュのような、データ管理における新しいアプローチを促進するものもあります。

テーブル形式を整理して理解するには、テーブル形式の有無にかかわらず、以前に紹介したデータメッシュアーキテクチャの4つの原則に注目するとわかりやすいと思います。

データメッシュアーキテクチャの発展に伴い、テーブル形式の評価が高まっているのは当然のことと言えます。テーブル形式の中には、個々のファイルの集約や解釈の煩わしさを取り除くことで、データの所有権、生成、セルフサービス、ガバナンスを大幅に簡素化するものがあります。すべて、と言い切れないのは、単一のデータアーキテクチャのためだけに明示的にパッケージ化され販売されているテーブル形式もあるからです。私たちは、これは柔軟性に欠けるアプローチだと考えています。そのため私たちは、どのテーブル形式をどのようにサポートするかについて、慎重かつ徹底的に検討しました。

Apache Icebergを選択した理由

Icebergは、Netflix社が開発し、その後有名なApache Software Foundationに無償提供されたオープンソースのテーブル形式です。同時実行、基本的なスキーマサポート、性能の向上など、さまざまなテーブル形式が提供するメリットに加えて、Icebergは、以下の特有のメリットや最先端機能をユーザーに提供しています。

  • 力強いエコシステム – さまざまなファイルタイプ、テクニカルデータのメタストア、処理エンジンをサポートすることにより、データレイクやデータメッシュなどの多くの異なるストレージパターンを実現
  • プロジェクト速度 – 幅広い顧客や商品の迅速な導入と、それらからの寄与
  • 相互運用性 – 明確な目標、コミュニティからのインプット、バージョン管理による拡張性を伴う文書化された仕様、単一のデータセット上で多数のツールの稼働が可能

オープン系によるメリットを追求するのではなくオープン系の使用そのものが目標となってしまうケースが多いため、以前、私たちは「オープン系の賢い選択」の記事で注意を促しました。私たちは、顧客にとって明らかなメリットをもたらすオープン系フォーマットやプロジェクトであれば有効である、と考えています。

「Snowflakeでは、第一原理、望ましい結果、意図した結果や意図していない結果について考察しており、また、最も重要な点として、顧客にとって何がベストなのかを常に重視しています。」

私たちは、複雑さや意図しない結果といった点で妥協する必要なく、顧客に幅広い選択肢やメリットを提供しているという点で、Icebergのオープン形式やプロジェクトに対する姿勢が当社と一致している、と考えています。Icebergプロジェクトは、著名な透明性の高いソフトウェア財団に属しており、その成功が特定のベンダーに依存することはありません。むしろ、Icebergは自身のメリットに基づく有機的な利益を見据えています。同じ考え方の下、Icebergは、特定の処理フレームワークやクエリエンジン、ファイル形式に結合しないことで、複雑さを回避しています。そのため、オープンなファイル形式の使用を必須とする顧客がアドバイスを求めてきた場合、私たちはApache Icebergを試してみることをお勧めしています。多くのテーブル形式がオープン系であることを主張していますが、Icebergは単なる「オープンコード」というより、オープンで包括的なプロジェクトであると考えています。Icebergの急速な成長ともたらすメリットにより、当社のプラットフォームへの導入の要望が寄せられています。私たちが掲げる「オープン系の賢い選択」という目標に合致している点を考慮すると、Icebergを私たちのプラットフォームに取り入れることは自然な流れと言えます。

本日、Icebergテーブルから外部テーブルを作成する機能がプライベートプレビューとしてサポートされることを発表いたします。他の外部テーブルと同様に、Icebergテーブルの構文においても、最新のIcebergスナップショットファイルの保存先をSnowflakeに指示すればIcebergテーブルを簡単に使用することができます。

最終的なリリースでは変更されているかもしれませんが、この例は、現時点でのIcebergの外部テーブル設計を示しています。

外部テーブルとアーキテクチャの適合

外部テーブルは、複雑なデータパターンでの作業を難しくする、次の2つの主なユースケースを可能にする、強力かつ柔軟なツールとなるよう設計されています。

  1. データ移行に向けたインポートデータをより簡単にSnowflakeにインポートし、データクラウドのパワーを最大限に利用できるメカニズム
  2. インプレースクエリ – Snowflakeに移行できない、または移行しないデータをクエリするツール

Apache Icebergなどのテーブル形式を追加することで、外部テーブルのパワーと柔軟性が強化され、またこれらのユースケースの改善されます。これは、テーブル形式は、データレイクやデータメッシュなどのストレージパターンを組織全体に展開する際の重要な構成要素として広く使用されているからです。テーブル形式の外部テーブルへの導入において、私たちはデータレイクを始めとするさまざまなストレージパターンに対し、外部テーブルの有用性を強化しています。

明確にすべき点は以下の通りです。データレイクやメッシュ、その他のストレージパターンをSnowflakeで実現したい場合、外部テーブルの使用は必須ではありません。外部テーブルは、データの使用や管理を簡素化するために当社が提供している数多くのツールの1つです。外部テーブルは、より幅広い選択肢や柔軟性を顧客に提供するものであり、重要な点として、他のプラットフォームやプロバイダーとは異なり、特定のストレージパターンの選択を強制するものではありません。

詳細を確認して、ぜひ始めましょう

当社のストレージ戦略やオープンソースのテーブル形式がいかに重要な役割を果たしているかについて、ぜひ詳細をご確認ください。2021年11月開催のSnowdayセッションは、当社のストレージ戦略の概要をつかんでいただくまたとない機会です。専門家から詳しく話を聞きたい方は、3月16日9:00a.m.PT開催のウェビナーで、Icebergのサポートに関して詳しく説明し、質問も受け付けていますので、ぜひご参加ください。

外部テーブルにおいて、Apache Icebergのようなテーブル形式の使用にご興味がある方は、貴社のアカウントチームにご連絡いただき、ぜひプレビュー版のリリースご参加ください。

将来の見通しに関する記述について

過去の事実についての記述を除き、これらの資料に記載された内容およびこれに伴う口頭のコメント(総称して「マテリアル」とする)はすべて、将来の見通しに関する記述とします。これらの記述には、(i)Snowflakeの事業戦略および計画、(ii)開発中や一般に提供されていないものも含めた、Snowflakeが提供する新たなもしくは改善された製品、サービス、テクノロジー、(iii) 市場成長、トレンド、競争上の配慮、(iv)サードパーティプラットフォームと連携する、もしくは同プラットフォーム上で稼働する製品の統合、相互運用性、および可用性、が含まれます。これらの将来の見通しに関する記述は、さまざまなリスク、不確実性、前提に左右されます。これには、Snowflakeが証券取引委員会に提出したForm 10-K(年次報告書)およびForm 10-Q(四半期レポート)内の「リスク要因」などのセグメントに記載されているリスク、不確実性、前提が含まれます。これらのリスク、不確実性、前提を考慮すると、将来の見通しに関する記述において予想または暗示されている結果と比較して、実際には大きく異なる結果や反対の結果に至る可能性があります。そのため、将来の見通しに関するいかなる記述も、未来の出来事についての予測として利用するべきではありません。

将来の製品またはロードマップ情報(総称して「ロードマップ」とする)は、一般的な製品の方向性を概説することを目的としているため、Snowflakeがいかなる製品、特性、機能性を将来提供する決意表明、確約、法的義務にもならないと同時に、いかなる契約に組み入れられることも、意図されておらず、そのように見なされてはならないものとします。最終的に利用可能になる製品、特性、または機能性の実際のタイミングは、ロードマップに提示のタイミングとは異なる場合があります。購入に関する意思決定に、ロードマップの情報を使用しないでください。マテリアルに記載された内容と公式なSnowflakeドキュメンテーションの内容に矛盾がある場合、公式のSnowflakeドキュメンテーションに記載された内容が優先されるものとします。さらに、最終的に利用可能になる可能性がある将来の製品、特性、および/または機能性に対して個別に料金が請求されるかどうかについて、Snowflakeは意思決定を下していないことにご注意ください。Snowflakeは、その独自の裁量により、最終的に利用可能になる将来の製品、特性、および/または機能性の配布に対し、個別に料金を請求することを選択する可能性があります。

© 2022 Snowflake Inc. All rights reserved. Snowflake、Snowflakeのロゴ、およびマテリアル内に記載されているその他すべてのSnowflakeの製品、機能、サービス名は、米国およびその他の国におけるSnowflake Inc.の登録商標または商標です。マテリアル内で言及または使用されているその他すべてのブランド名またはロゴは、識別目的でのみ使用されており、各所有者の商標である可能性があります。Snowflakeが、必ずしもかかる商標所有者と関連していたり、または出資したり支援を受けていたりしているわけではありません。