ScalarDB Analytics の設計
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
ScalarDB Analytics は ScalarDB の分析コンポーネントです。ScalarDB と同様に、PostgreSQL や MySQL などの RDBMS から Cassandra や DynamoDB などの NoSQL データベースまで、多様なデータソースを単一の論理データベースに統合します。これにより、複数のデータベースにわたってシームレスに分析クエリを実行することができます。
ScalarDB Analytics は主にユニバーサルデータカタログとクエリエンジンの2つのコンポーネントから構成されています。
- ユニバーサルデータカタログは、複数のカタログを処理する柔軟なメタデータ管理システムです。カタログはデータソースとビューの独立した論理的なグループ化を提供し、多様なデータ環境の体系的な管理を可能にします。
- クエリエンジンはユニバーサルデータカタログに対してクエリを実行します。ScalarDB Analyticsは基盤となるデータソースとのインターフェースを行うための適切なデータコネクタを提供します。
ScalarDB Analyticsはデータカタログとクエリエンジンが分離されたデカップルドアーキテクチャを採用しています。この設計により、拡張可能なアーキテクチャを通じて様々な既存のクエリエンジンとの統合が可能になります。その結果、特定の要件に基づいて異なるクエリエンジンを選択し、同じデータカタログに対してクエリを実行することができます。
ユニバーサルデータカタログ
ユニバーサルデータカタログはいくつかのレベルで設定され、以下のように構造化されています:
これらのレベルの定義は以下の通りです:
- Catalog (カタログ) はすべてのデータソース情報を含むフォルダです。例えば、分析データ用の
analytics_catalogと日常業務用のoperational_catalogという2つのカタログを持つことができます。 - Data source (データソース) は接続する各データソースを表します。各データソースについて、以下のような重要な情報を保存します:
- データソースの種類 (PostgreSQL、Cassandra など)
- 接続方法 (接続詳細とパスワード)
- データソースがサポートする特別な機能 (トランザクションなど)
- Namespace (名前空間) はデータソース内の関連するテーブルをグループ化するサブフォルダのようなものです。PostgreSQL ではスキーマ、Cassandra ではキースペースと呼ばれます。フォルダ内のフォルダのように、複数レベルの名前空間を持つことができます。
- Table (テーブル) は実際のデータが存在する場所です。各テーブルについて、以下を追跡します:
- どのような列があるか
- 各列がどのタイプのデータを格納できるか
- 列が空 (null) になれるかどうか
- View namespace (ビュー名前空間) はビュー用の特別なフォルダです。1つのデータソースに紐づく通常の名前空間とは異なり、ビュー名前空間は複数のデータソースと同時に連携できます。
- View (ビュー) は以下のことができる仮想テーブルのようなものです:
- デ ータをよりシンプルな方法で表示する (ScalarDB テーブルの技術的な列を隠すなど)
- SQLクエリを使用して異なるソースからデータを結合する
- 各ビューはテーブルと同様に、特定のタイプと空の値に関するルールを持つ独自の列を持っています。
サポートされているデータ型
ScalarDB Analytics は様々なデータソースにわたって幅広いデータ型をサポートしています。ユニバーサルデータカタログはこれらのデータ型を共通のタイプセットにマッピングし、ソース間の互換性と一貫性を確保します。以下のリストは ScalarDB Analytics でサポートされているデータ型を示しています:
BYTESMALLINTINTBIGINTFLOATDOUBLEDECIMALTEXTBLOBBOOLEANDATETIMETIMESTAMPTIMESTAMPTZDURATIONINTERVAL
これらのデータ型はすべてのデータソースで使用され、異種データベースのクエリに統一された型システムを提供します。
データソース統合
データソースを ScalarDB Analytics に登録する際、2種類のマッピングが行われます:
- カタログ構造マッピング: データソースのカタログ情報 (名前空間、テーブル、列) が解決され、ユニバーサルデータカタログ構造にマッピングされます
- データ型マッピング: 各データソースのネイティブデータ型が、上記のユニバーサルデータ型にマッピングされます
これらのマッピングにより、異なるデータベースシステム間での互換性と一貫性が確保されます。特定のデータベースがどのようにマッピングされるかの詳細については、データソース別のカタログ構造マッピングを参照してください。
クエリエンジン
クエリエンジンはユニバーサルデータカタログとともに独立したコンポーネントであり、ユニバーサルデータカタログに登録されているデータソースに対してクエリを実行し、結果をユーザーに返す責任を持ちます。ScalarDB Analytics は現在、組み込みのクエリエンジンを提供していません。代わりに、通常は クエリエンジンのプラグインとして提供される既存のクエリエンジンと統合されるように設計されています。
クエリを実行するとき、ScalarDB Analytics クエリエンジンプラグインは以下のように動作します。
- ユニバーサルデータカタログ API を呼び出してカタログメタデータを取得します (データソースの場所、テーブルオブジェクト識別子、テーブルスキーマなど)。
- カタログメタデータを使用してデータソースコネクタをセットアップします。
- カタログメタデータに基づいてクエリ最適化情報をクエリエンジンに提供します。
- データソースコネクタを使用してデータソースからデータを読み取ります。
ScalarDB Analytics はこれらのプロセスを内部的に管理します。通常のクエリ実行と同じ方法で、クエリエンジン API を使用してユニバーサルデータカタログに対してクエリを実行するだけで済みます。
ScalarDB Analytics は現在、クエリエンジンとして Apache Spark をサポートしています。ScalarDB Analytics を Spark で使用する方法の詳細については、ScalarDB Analytics を通じた分析クエリの実行を参照してください。