[レポート] Streams, SQL, action! Real-time analytics with Materialize #reinvent

AWSでもMaterialize
2021.12.14

大阪オフィスの玉井です。

AWSが開催した大規模カンファレンス「re:Invent」ですが、データ分析関連のサービスを展開しているベンダーも、パートナー枠で色々とセッションを実施しました。

本記事では、ニアリアルタイムなデータ分析を実現できるMaterialize社のレポートをお届けします。

Materializeについては、下記もどうぞ。

セッション概要

登壇者

Arjun Narayan, CEO & co-founder at Materialize

概要

Materialize is building a high-throughput, low-latency streaming database designed to maintain relational queries over continually changing data. When you write some SQL against your streams, Materialize gives you back the answers fast. You ask the queries again and get updated answers in milliseconds. This system design is fundamentally different from both Spark-like and relational database systems—instead, it is based on timely and differential dataflow. Join this session to learn about the architectural highlights that distinguish Materialize from existing systems, hear how it enables interactive queries over streaming data, and discover from customer stories where it fits in the real-time analytics stack. This presentation is brought to you by Materialize, an AWS Partner.

セッションレポート

※レポート文のみ、一人称が登壇者を指します。

前段

皆さん、こんにちは。私はArjunです。私はMaterialize社のCEO及び共同設立者です。

このセッションで覚えて帰ってほしいことが1つあります。それは、Materializeは、リアルタイムに変化するデータを使ってアプリケーションや分析を行う最も簡単な方法だということです。

マテビューの話

マテリアライズド・ビューの概念はご存知でしょうか。トランザクション分析用のデータベースを使ったことがあれば、マテリアライズド・ビューを使ったことがあるかもしれません。しかし、マテビューには問題点がいくつかあります。

  • 更新速度がそれほど速くない
  • 更新には多くのコスト(時間など)がかかる

今日におけるリアルタイムデータ分析を行うにあたっての課題

従来のビューは、リアルタイムのデータにはあまり適していません。もし、あなたがリアルタイムで、ミリ秒単位のレイテンシーの速さを求めているとしたら、今日の状況では、かなり厳しい妥協が必要です。

今日では、スピードを重視または機能を犠牲にして、本当にシンプルなものを作るか、開発時間とインフラコストに多額の費用を払うかの2択を迫られています。

スピードの部分をもう少し掘り下げてみましょう。

例えば、データウェアハウスやクラウド上でバッチプロセスを実行しているとします。複雑なビジネスロジックを定義するという点では、非常に複雑なシーケンスをたくさん書き、数時間ごとにバッチジョブを実行します、もう少しお金をかければ、1時間に何度も実行することもできるかもしれません。しかし、これでは本当の意味でのリアルタイムには近づけないでしょう。

もう一つの方法は、すべてのデータを非正規化し、JOINなどの複雑なSQLロジックを犠牲にして、KinesisやKafkaのようなストリームの上に直接、比較的単純な計算やフィルタを構築することです。しかし、データウェアハウスから得られる興味深いビジネスロジックを諦めることになります。

機能を犠牲にしたくない場合、また、本当に完全な複雑さを求めるのであれば、複雑なマイクロサービスのセットを構築し、管理することになります。しかし、そもそもこれらを構築するには、多くの時間と開発コストがかかります。そして、それらを維持し、稼働させ続けるには多くの時間がかかります。

Materializeについて

Materializeの目標は、このような妥協をする必要がないようにすることであり、標準SQLの形で、スピーディで複雑な機能を低コストで実現することです。

ストリーミングソフトウェアのストリーミングデータベース(Materialize)は、データウェアハウスやプロダクションデータベースの隣に設置することができます。また、Kafkaトピックの中間に設置することもできます。分析データベースのパワーを、ストリーミングのスピードで実現しています。

考えてみてください。12個のテーブルを結合するようなSQLを書いて、基礎となるデータのストリームが変化したときに、すぐにそれを本当に更新したいなら、Materializeはおそらく最高のソリューションです。

ここではもう少し技術的な話をして、その仕組みを掘り下げてみたいと思います。

Materializeは、Kinesis、Kafka、OLTPデータベースへの直接接続、あるいはS3からのファイルの取り出しなど、ストリーミングデータのソースに直接接続します。

次に、標準的なSQLを実行します。世の中にはSQLと称するソリューションがたくさんありますが、実際にはそうではありません。相関サブクエリや大量のJOINを書こうとすると、それらは破綻してしまいます。

Materializeは、アナリティクスのユースケースやデータウェアハウスでおなじみのSQLをサポートするものです。これにより、SQLデータを扱ったことがある人なら誰でも、多くの人が利用できるようになります。

3段階目として、Materializeは、基礎となるデータの変更に合わせてビューを最新の状態に保ちます。手作業でリフレッシュする必要はありません。複雑なcronジョブもありません。ビューは常に最新の状態に保たれ、SELECTクエリを実行するだけです。

最後に、Materializeは、Postgresデータベースとの互換性があります。これは、アプリケーションの構築や他の分析ツールとの接続が非常に簡単であることを意味します。ほとんどのフレームワークやアプリケーションがPostgresと対話できるので、Materializeと連携し、簡単にビジュアライゼーションを構築し、アプリケーションの開発を簡素化することができます。

本当に重要なのは、ストリーミングデータを扱うことであり、もしあなたの組織がストリーミングに移行するのが少し難しいようであれば、バッチの方が本当に簡単なソリューションであるということです。私が皆さんにお伝えしたいのは、ストリーミングへの移行は、標準的なSQLを数行書くだけで簡単にできるということです。

Materializeは、バッチからストリーミングへの移行を支援します。また、より多くのマイクロサービスを迅速に導入することもできます。開発コストを大幅に削減しながら、すでにストリーミングへの移行を進めているのであれば、その使用例は非常に幅広いものになるでしょう。分析やダッシュボードを作成することもできますし、当社のユーザー様の多くはそのような方法で始めています。

洗練されたリアルタイム・サービスを構築することもできます。通知、アラート、不正行為の検知、さらには本格的なマイクロサービスやデータパイプラインの構築にも利用できます。Drizly社のようなお客様のケーススタディは、弊社のブース(確か114番ブース)でご覧いただけます。ぜひご覧になってください。そして、そこで語り合いたいと思います。

また、Materializeはクラウド上で利用できるので、無料で始めることができます。また、Materializeはソースからダウンロード可能な製品であり、あなたのラップトップPCで試すことができます。私たちはSlackで成長している活発なコミュニティを持っています。また、ぜひ私たちのブースにも遊びに来てください。私たちのブースでは、無料デモと、Materializeグッズをご用意しています。ありがとうございました。

感想

時間がめちゃくちゃコンパクトなセッションで、Materializeの概要を知るには丁度よかったと思います。ただ、AWSとの深い連携の部分とかはほとんど触れられてないので、詳しく知りたい方は、セッションの最後で案内のあったリソースを頼りに、自分で試してみるのがベストだと思いました。