第5章. ストリーミング・データベース入門
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
スプレッドシートでは、1つのセルに数式(たとえば、別の列のセルの合計)を入力すると、その数式への入力が変更されるたびに、数式の結果が自動的に再計算される。データベースのレコードが変更されると、そのレコードのインデックスが自動的に更新され、そのレコードに依存するキャッシュビューや集計が自動的に更新される。このリフレッシュがどのように行われるかという技術的な詳細について心配する必要はなく、単にそれが正しく機能することを信頼すればよい。
マーティン・クレップマン『データ集約型アプリケーションの設計
前章では、マーティン・クレップマン(Martin Kleppmann)の造語にあるように、「データベースを裏返しにする」方法を学んだ。これは、データベースのWALを入力チェンジストリームに外部出力し、その上にマテリアライズド・ビューを作成し、処理されたデータを出力チェンジストリームに書き戻すというものである。OracleやPostgresのような古典的なデータベースのマテリアライズド・ビューでは、更新間隔は数分から数時間だが、Flink、Kafka Streams、ksqlDB、Samzaのようなストリーム処理プラットフォームのマテリアライズド・ビューでは、新しい変更が入るたびに、継続的に更新することができる。
データベースを裏返しにする」というアイデアは、これまで以上に新鮮なデータを提供するマテリアライズド・ビューを構築する力を与えてくれた。Flink、Kafka Streams、ksqlDB、またはSamzaによって作成された継続的に更新されるマテリアライズド・ビューを実際に理解するためには、出力された変更ストリームを追加の外部データベース(例えば、Druid、Pinot、ClickHouse、またはRocksetのようなRTOLAPデータベース)に取り込む必要があった。つまり、システムアーキテクチャ上、「データベースを裏返しにする」ことで、単純に1つの古典的なデータベースを持つのではなく、3つのシステム(ストリーミング・プラットフォーム、ストリーム演算子、外部データベース)を立ち上げ、運用することを余儀なくされたのだ。1さらに複雑なことに、これを実装できるのは、ありふれたデータベースの専門家ではなく、高価で発見が難しいストリーム処理の専門家だけだった。その結果、グローバルな視点から見ると、「データベースを裏返しにする」というアイデアは傍観者になり、低遅延が本当に最重要視される不正検知のようなユースケースにのみ適用されてきた。
データベースを裏返しにする」というアイデアは、ストリーミングとデータベースの世界の架け橋となる重要な第一歩であり、ストリーム処理の大きな進歩への道を開いたと我々は信じている。しかし、それがすべてだったわけではない。
本書の中心となるこの章では、ステートフルなストリーム処理、ストリームベースのマテリアライズド・ビュー、ステート・ストアから、データベースの世界からマテリアライズド・ビューの原型を再構築した新しい概念へと向かう旅に飛び乗ることができる。ksqlDB、Materialize、RisingWave、Timeplusのような新しいストリーミング・データベースが、ストリーミングとデータベースの間の橋に最終的なレンガを載せ始め、データベースを「裏返し」にした次の論理的ステップ、つまりデータベースを再び「裏返し」にする方法を紹介する。始めるにあたって、ここまでの多くの図でお馴染みのコンポーネントをおさらいしておこう。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access