diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-analytics/design.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-analytics/design.mdx index efec5d36..f5608580 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-analytics/design.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-analytics/design.mdx @@ -89,16 +89,294 @@ ScalarDB Analytics は様々なデータソースにわたって幅広いデー - `DURATION` - `INTERVAL` -これらのデータ型はすべてのデータソースで使用され、異種データベースのクエリに統一された型システムを提供します。 +### データソース別のカタログ情報マッピング -### データソース統合 +データソースを ScalarDB Analytics に登録する際、データソースのカタログ情報(名前空間、テーブル、列など)が解決され、ユニバーサルデータカタログに登録されます。データソースのカタログ情報を解決するために、データソース側の特定のオブジェクトがユニバーサルデータカタログオブジェクトにマッピングされます。このマッピングはカタログレベルのマッピングとデータ型マッピングの2つの部分で構成されています。以下のセクションでは、ScalarDB Analytics が各データソースからカタログレベルとデータ型をユニバーサルデータカタログにどのようにマッピングするかを説明します。 -データソースを ScalarDB Analytics に登録する際、2種類のマッピングが行われます: +#### カタログレベルのマッピング -1. **カタログ構造マッピング:** データソースのカタログ情報(名前空間、テーブル、列)が解決され、ユニバーサルデータカタログ構造にマッピングされます -2. **データ型マッピング:** 各データソースのネイティブデータ型が、上記のユニバーサルデータ型にマッピングされます +カタログレベルのマッピングは、データソースから名前空間名、テーブル名、および列名をユニバーサルデータカタログへのマッピングです。各データソースでのカタログレベルのマッピングを確認するには、データソースを選択してください。 -これらのマッピングにより、異なるデータベースシステム間での互換性と一貫性が確保されます。特定のデータベースがどのようにマッピングされるかの詳細については、管理ガイドの [カタログメタデータリファレンス](administration.mdx#カタログメタデータリファレンス) を参照してください。 + + + ScalarDB のカタログ情報は ScalarDB Analytics によって自動的に解決されます。カタログレベルのオブジェクトは以下のようにマッピングされます: + + - ScalarDB 名前空間は名前空間にマッピングされます。したがって、ScalarDB データソースの名前空間は常に単一レベルで、名前空間名のみで設定されます。 + - ScalarDB テーブルはテーブルにマッピングされます。 + - ScalarDB 列は列にマッピングされます。 + + + + + PostgreSQL のカタログ情報は ScalarDB Analytics によって自動的に解決されます。カタログレベルのオブジェクトは以下のようにマッピングされます: + + - PostgreSQL スキーマは名前空間にマッピングされます。したがって、PostgreSQL データソースの名前空間は常に単一レベルで、スキーマ名のみで設定されます。 + - ユーザー定義スキーマのみが名前空間にマッピングされます。以下のシステムスキーマは無視されます: + - `information_schema` + - `pg_catalog` + - PostgreSQL テーブルはテーブルにマッピングされます。 + - PostgreSQL 列は列にマッピングされます。 + + + + MySQL のカタログ情報は ScalarDB Analytics によって自動的に解決されます。カタログレベルのオブジェクトは以下のようにマッピングされます: + + - MySQL データベースは名前空間にマッピングされます。したがって、MySQL データソースの名前空間は常に単一レベルで、データベース名のみで設定されます。 + - ユーザー定義データベースのみが名前空間にマッピングされます。以下のシステムデータベースは無視されます: + - `mysql` + - `sys` + - `information_schema` + - `performance_schema` + - MySQL テーブルはテーブルにマッピングされます。 + - MySQL 列は列にマッピングされます。 + + + + Oracle のカタログ情報は ScalarDB Analytics によって自動的に解決されます。カタログレベルのオブジェクトは以下のようにマッピングされます: + + - Oracle スキーマは名前空間にマッピングされます。したがって、Oracle データソースの名前空間は常に単一レベルで、スキーマ名のみで設定されます。 + - ユーザー定義スキーマのみが名前空間にマッピングされます。以下のシステムスキーマは無視されます: + - `ANONYMOUS` + - `APPQOSSYS` + - `AUDSYS` + - `CTXSYS` + - `DBSNMP` + - `DGPDB_INT` + - `DBSFWUSER` + - `DVF` + - `DVSYS` + - `GGSYS` + - `GSMADMIN_INTERNAL` + - `GSMCATUSER` + - `GSMROOTUSER` + - `GSMUSER` + - `LBACSYS` + - `MDSYS` + - `OJVMSYS` + - `ORDDATA` + - `ORDPLUGINS` + - `ORDSYS` + - `OUTLN` + - `REMOTE_SCHEDULER_AGENT` + - `SI_INFORMTN_SCHEMA` + - `SYS` + - `SYS$UMF` + - `SYSBACKUP` + - `SYSDG` + - `SYSKM` + - `SYSRAC` + - `SYSTEM` + - `WMSYS` + - `XDB` + - `DIP` + - `MDDATA` + - `ORACLE_OCM` + - `XS$NULL` + + + + SQL Server のカタログ情報は ScalarDB Analytics によって自動的に解決されます。カタログレベルのオブジェクトは以下のようにマッピングされます: + + - SQL Server データベースとスキーマは共に名前空間にマッピングされます。したがって、SQL Server データソースの名前空間は常に二段階で、データベース名とスキーマ名で構成されます。 + - ユーザー定義データベースのみが名前空間にマッピングされます。以下のシステムデータベースは無視されます: + - `sys` + - `guest` + - `INFORMATION_SCHEMA` + - `db_accessadmin` + - `db_backupoperator` + - `db_datareader` + - `db_datawriter` + - `db_ddladmin` + - `db_denydatareader` + - `db_denydatawriter` + - `db_owner` + - `db_securityadmin` + - ユーザー定義スキーマのみが名前空間にマッピングされます。以下のシステムスキーマは無視されます: + - `master` + - `model` + - `msdb` + - `tempdb` + - SQL Server テーブルはテーブルにマッピングされます。 + - SQL Server 列は列にマッピングされます。 + + + + DynamoDB はスキーマレスであるため、DynamoDB データソースを登録する際に以下のような形式のJSONを使用してカタログ情報を明示的に指定する必要があります: + + ```json + { + "namespaces": [ + { + "name": "", + "tables": [ + { + "name": "", + "columns": [ + { + "name": "", + "type": "" + }, + ... + ] + }, + ... + ] + }, + ... + ] + } + ``` + + 指定した JSON では、任意の名前空間名を使用できますが、テーブル名は DynamoDB のテーブル名と一致する必要があり、列名と型は DynamoDB のフィールド名と型と一致する必要があります。 + + + + +#### データ型マッピング + +基盤となるデータソースのネイティブデータ型は ScalarDB Analytics のデータ型にマッピングされます。各データソースでのデータ型マッピングを確認するには、データソースを選択してください。 + + + + | **ScalarDB データ型** | **ScalarDB Analytics データ型** | + |:------------------------------|:---------------------------------| + | `BOOLEAN` | `BOOLEAN` | + | `INT` | `INT` | + | `BIGINT` | `BIGINT` | + | `FLOAT` | `FLOAT` | + | `DOUBLE` | `DOUBLE` | + | `TEXT` | `TEXT` | + | `BLOB` | `BLOB` | + | `DATE` | `DATE` | + | `TIME` | `TIME` | + | `TIMESTAMP` | `TIMESTAMP` | + | `TIMESTAMPTZ` | `TIMESTAMPTZ` | + + + | **PostgreSQL データ型** | **ScalarDB Analytics データ型** | + |:------------------------------|:---------------------------------| + | `integer` | `INT` | + | `bigint` | `BIGINT` | + | `real` | `FLOAT` | + | `double precision` | `DOUBLE` | + | `smallserial` | `SMALLINT` | + | `serial` | `INT` | + | `bigserial` | `BIGINT` | + | `char` | `TEXT` | + | `varchar` | `TEXT` | + | `text` | `TEXT` | + | `bpchar` | `TEXT` | + | `boolean` | `BOOLEAN` | + | `bytea` | `BLOB` | + | `date` | `DATE` | + | `time` | `TIME` | + | `time with time zone` | `TIME` | + | `time without time zone` | `TIME` | + | `timestamp` | `TIMESTAMP` | + | `timestamp with time zone` | `TIMESTAMPTZ` | + | `timestamp without time zone` | `TIMESTAMP` | + + + | **MySQL データ型** | **ScalarDB Analytics データ型** | + |:-----------------------|:---------------------------------| + | `bit` | `BOOLEAN` | + | `bit(1)` | `BOOLEAN` | + | `bit(x)` if *x >= 2* | `BLOB` | + | `tinyint` | `SMALLINT` | + | `tinyint(1)` | `BOOLEAN` | + | `boolean` | `BOOLEAN` | + | `smallint` | `SMALLINT` | + | `smallint unsigned` | `INT` | + | `mediumint` | `INT` | + | `mediumint unsigned` | `INT` | + | `int` | `INT` | + | `int unsigned` | `BIGINT` | + | `bigint` | `BIGINT` | + | `float` | `FLOAT` | + | `double` | `DOUBLE` | + | `real` | `DOUBLE` | + | `char` | `TEXT` | + | `varchar` | `TEXT` | + | `text` | `TEXT` | + | `binary` | `BLOB` | + | `varbinary` | `BLOB` | + | `blob` | `BLOB` | + | `date` | `DATE` | + | `time` | `TIME` | + | `datetime` | `TIMESTAMP` | + | `timestamp` | `TIMESTAMPTZ` | + + + | **Oracle データ型** | **ScalarDB Analytics データ型** | + |:-----------------------------------|:---------------------------------| + | `NUMBER` if *scale = 0* | `BIGINT` | + | `NUMBER` if *scale > 0* | `DOUBLE` | + | `FLOAT` if *precision ≤ 53* | `DOUBLE` | + | `BINARY_FLOAT` | `FLOAT` | + | `BINARY_DOUBLE` | `DOUBLE` | + | `CHAR` | `TEXT` | + | `NCHAR` | `TEXT` | + | `VARCHAR2` | `TEXT` | + | `NVARCHAR2` | `TEXT` | + | `CLOB` | `TEXT` | + | `NCLOB` | `TEXT` | + | `BLOB` | `BLOB` | + | `BOOLEAN` | `BOOLEAN` | + | `DATE` | `DATE` | + | `TIMESTAMP` | `TIMESTAMPTZ` | + | `TIMESTAMP WITH TIME ZONE` | `TIMESTAMPTZ` | + | `TIMESTAMP WITH LOCAL TIME ZONE` | `TIMESTAMP` | + | `RAW` | `BLOB` | + + + | **SQL Server データ型** | **ScalarDB Analytics データ型** | + |:---------------------------|:---------------------------------| + | `bit` | `BOOLEAN` | + | `tinyint` | `SMALLINT` | + | `smallint` | `SMALLINT` | + | `int` | `INT` | + | `bigint` | `BIGINT` | + | `real` | `FLOAT` | + | `float` | `DOUBLE` | + | `float(n)` if *n ≤ 24* | `FLOAT` | + | `float(n)` if *n ≥ 25* | `DOUBLE` | + | `binary` | `BLOB` | + | `varbinary` | `BLOB` | + | `char` | `TEXT` | + | `varchar` | `TEXT` | + | `nchar` | `TEXT` | + | `nvarchar` | `TEXT` | + | `ntext` | `TEXT` | + | `text` | `TEXT` | + | `date` | `DATE` | + | `time` | `TIME` | + | `datetime` | `TIMESTAMP` | + | `datetime2` | `TIMESTAMP` | + | `smalldatetime` | `TIMESTAMP` | + | `datetimeoffset` | `TIMESTAMPTZ` | + + + | **DynamoDB データ型** | **ScalarDB Analytics データ型** | + |:-------------------------|:---------------------------------| + | `Number` | `BYTE` | + | `Number` | `SMALLINT` | + | `Number` | `INT` | + | `Number` | `BIGINT` | + | `Number` | `FLOAT` | + | `Number` | `DOUBLE` | + | `Number` | `DECIMAL` | + | `String` | `TEXT` | + | `Binary` | `BLOB` | + | `Boolean` | `BOOLEAN` | + +:::warning + +ScalarDB Analytics に指定されたデータ型として `Number` 型のフィールド値が解析可能であることが必要です。例えば、`Number` 型のフィールドに対応する列が `INT` 型として指定されている場合、その値は整数でなければなりません。値が整数でない場合、クエリの実行時にエラーが発生します。 + +::: + + + ## クエリエンジン diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-analytics/run-analytical-queries.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-analytics/run-analytical-queries.mdx index 9d6fc149..08508927 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-analytics/run-analytical-queries.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-analytics/run-analytical-queries.mdx @@ -4,12 +4,12 @@ tags: displayed_sidebar: docsJapanese --- -import Tabs from "@theme/Tabs"; -import TabItem from "@theme/TabItem"; -import TranslationBanner from "/src/components/_translation-ja-jp.mdx"; - # ScalarDB Analytics を通じた分析クエリの実行 +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + このガイドでは、ScalarDB Analytics アプリケーションの開発方法について説明します。アーキテクチャと設計の詳細については、[ScalarDB Analytics の設計](./design.mdx)を参照してください。 @@ -22,8 +22,7 @@ ScalarDB Analytics は現在、実行エンジンとして Spark を使用し、 ### 前提条件 -- **ScalarDB Analytics catalog server**: カタログメタデータを管理し、データソースに接続する実行中のインスタンス。サーバーには少なくとも1つのデータソースが登録されている必要があります。セットアップとデータソース登録の手順については、[ScalarDB Analytics catalog server のセットアップと管理](./administration.mdx)を参照してください。 -- **Apache Spark**: 互換性のあるバージョンの Apache Spark。サポートされているバージョンについては、[バージョン互換性](#バージョン互換性)を参照してください。まだ Spark をインストールしていない場合は、[Apache Spark のウェブサイト](https://spark.apache.org/downloads.html)から Spark ディストリビューションをダウンロードしてください。 +ScalarDB Analytics は Apache Spark 3.4以降で動作します。まだ Spark をインストールしていない場合は、[Apache Spark のウェブサイト](https://spark.apache.org/downloads.html)から Spark ディストリビューションをダウンロードしてください。 :::note @@ -33,63 +32,193 @@ Apache Spark は Scala 2.12 または Scala 2.13 でビルドされています ### ScalarDB Analytics のセットアップのための Spark 設定 -ScalarDB Analytics は catalog server と統合するために特定の Spark 設定が必要です。 +以下のセクションでは、ScalarDB Analytics で利用可能なすべての設定オプションについて説明します。 -#### 必要な Spark 設定 +- ScalarDB Analytics の Spark との統合方法 +- データソースの接続とアクセス方法 +- ライセンス情報の提供方法 -ScalarDB Analytics を Spark で使用するには、以下を設定する必要があります: +実践的なシナリオでの設定例については、[サンプルアプリケーション設定](https://github.com/scalar-labs/scalardb-samples/blob/main/scalardb-analytics-sample/config/scalardb-analytics-server.properties)を参照してください。 -1. **ScalarDB Analytics パッケージ**: Spark と Scala のバージョンに一致する JAR 依存関係を追加 -2. **メータリングリスナー**: 課金のためのリソース使用状況を追跡するリスナーを登録 -3. **カタログ登録**: ScalarDB Analytics サーバーに接続する Spark カタログを登録 +#### Spark プラグインの設定 -Spark を設定する際は、ScalarDB Analytics サーバー上で作成されたカタログと一致するカタログ名を指定する必要があります。これにより、Spark がそのカタログで管理されているデータソースに正しくアクセスできるようになります。 +| 設定キー名 | 必須 | 説明 | +|:-----------------------------------|:------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `spark.jars.packages` | いいえ | 必要な依存関係の Maven 座標をカンマ区切りで指定します。使用する ScalarDB Analytics パッケージを含める必要があります。含めない場合は、Spark アプリケーションの実行時にコマンドライン引数として指定します。ScalarDB Analytics の Maven 座標の詳細については、[ScalarDB Analytics 依存関係の追加](#scalardb-analytics-依存関係の追加)を参照してください。 | +| `spark.sql.extensions` | はい | `com.scalar.db.analytics.spark.extension.ScalarDbAnalyticsExtensions` を設定する必要があります。 | +| `spark.sql.catalog.` | はい | `com.scalar.db.analytics.spark.ScalarDbAnalyticsCatalog` を設定する必要があります。 | -#### 設定例 +`` には任意の名前を指定できます。設定全体で同じカタログ名を使用するようにしてください。 -以下は完全な設定例です: +#### ライセンスの設定 -```conf -# 1. ScalarDB Analytics パッケージ -spark.jars.packages com.scalar-labs:scalardb-analytics-spark-all-_: +| 設定キー名 | 必須 | 説明 | +|:-----------------------------------------------------|:-----|:------------------------------------------------------------------------------------------------------------------------| +| `spark.sql.catalog..license.key` | はい | ScalarDB Analytics のライセンスキーの JSON 文字列 | +| `spark.sql.catalog..license.cert_pem` | はい | ScalarDB Analytics ライセンスの PEM エンコードされた証明書の文字列。`cert_pem` または `cert_path` のいずれかを設定する必要があります。 | +| `spark.sql.catalog..license.cert_path` | はい | ScalarDB Analytics ライセンスの PEM エンコードされた証明書へのパス。`cert_pem` または `cert_path` のいずれかを設定する必要があります。 | -# 2. メータリングリスナー -spark.extraListeners com.scalar.db.analytics.spark.metering.ScalarDbAnalyticsListener +#### データソースの設定 -# 3. カタログ登録 -spark.sql.catalog.myanalytics com.scalar.db.analytics.spark.catalog.ScalarDBAnalyticsCatalog -spark.sql.catalog.myanalytics.server.host analytics-server.example.com -spark.sql.catalog.myanalytics.server.catalog.port 11051 -spark.sql.catalog.myanalytics.server.metering.port 11052 -``` +ScalarDB Analytics は複数のタイプのデータソースをサポートしています。各タイプには特定の設定パラメータが必要です: -プレースホルダーを置き換えてください: + + -- ``: 使用している Spark のバージョン (例: `3.5` または `3.4`) -- ``: 使用している Scala のバージョン (例: `2.13` または `2.12`) -- ``: ScalarDB Analytics のバージョン (例: `3.16.0`) +:::note -この例では: +ScalarDB Analytics は ScalarDB をデータソースとしてサポートしています。この表では、ScalarDB をデータソースとして設定する方法について説明します。 -- カタログ名 `myanalytics` は、ScalarDB Analytics サーバー上に存在するカタログと一致する必要があります -- ScalarDB Analytics サーバーは `analytics-server.example.com` で実行されています -- テーブルには `myanalytics...` の形式でアクセスします +::: -:::important +| 設定キー名 | 必須 | 説明 | +|:------------------------------------------------------------------------------|:-----|:----------------------------| +| `spark.sql.catalog..data_source..type` | はい | 常に `scalardb` を設定します | +| `spark.sql.catalog..data_source..config_path` | はい | ScalarDB の設定ファイルへのパス | -Spark 設定のカタログ名は、CLI を使用して ScalarDB Analytics サーバー上で作成されたカタログの名前と一致させる必要があります。たとえば、サーバー上で `production` という名前のカタログを作成した場合、Spark 設定プロパティでカタログ名として `production` を使用する必要があります(例:`spark.sql.catalog.production`、`spark.sql.catalog.production.server.host` など)。 +:::tip + +`` には任意の名前を使用できます。 ::: -:::note + + + +| 設定キー名 | 必須 | 説明 | +|:---------------------------------------------------------------------------|:------|:-----------------------| +| `spark.sql.catalog..data_source..type` | はい | 常に `mysql` を設定します | +| `spark.sql.catalog..data_source..host` | はい | MySQL サーバーのホスト名 | +| `spark.sql.catalog..data_source..port` | はい | MySQL サーバーのポート番号 | +| `spark.sql.catalog..data_source..username` | はい | MySQL サーバーのユーザー名 | +| `spark.sql.catalog..data_source..password` | はい | MySQL サーバーのパスワード | +| `spark.sql.catalog..data_source..database` | いいえ | 接続するデータベースの名前 | + +:::tip + +`` には任意の名前を使用できます。 + +::: + + + + +| 設定キー名 | 必須 | 説明 | +|:---------------------------------------------------------------------------|:-----|:---------------------------------------------| +| `spark.sql.catalog..data_source..type` | はい | 常に `postgresql` または `postgres` を設定します | +| `spark.sql.catalog..data_source..host` | はい | PostgreSQL サーバーのホスト名 | +| `spark.sql.catalog..data_source..port` | はい | PostgreSQL サーバーのポート番号 | +| `spark.sql.catalog..data_source..username` | はい | PostgreSQL サーバーのユーザー名 | +| `spark.sql.catalog..data_source..password` | はい | PostgreSQL サーバーのパスワード | +| `spark.sql.catalog..data_source..database` | はい | 接続するデータベースの名前 | + +:::tip + +`` には任意の名前を使用できます。 + +::: + + + + +| 設定キー名 | 必須 | 説明 | +|:-------------------------------------------------------------------------------|:-----|:------------------------| +| `spark.sql.catalog..data_source..type` | はい | 常に `oracle` を設定します | +| `spark.sql.catalog..data_source..host` | はい | Oracle サーバーのホスト名 | +| `spark.sql.catalog..data_source..port` | はい | Oracle サーバーのポート番号 | +| `spark.sql.catalog..data_source..username` | はい | Oracle サーバーのユーザー名 | +| `spark.sql.catalog..data_source..password` | はい | Oracle サーバーのパスワード | +| `spark.sql.catalog..data_source..service_name` | はい | Oracle サーバーのサービス名 | + +:::tip + +`` には任意の名前を使用できます。 + +::: + + + + +| 設定キー名 | 必須 | 説明 | +|:---------------------------------------------------------------------------|:-------|:--------------------------------------------------------------------------------------------| +| `spark.sql.catalog..data_source..type` | はい | 常に `sqlserver` または `mssql` を設定します | +| `spark.sql.catalog..data_source..host` | はい | SQL Server のホスト名 | +| `spark.sql.catalog..data_source..port` | はい | SQL Server のポート番号 | +| `spark.sql.catalog..data_source..username` | はい | SQL Server のユーザー名 | +| `spark.sql.catalog..data_source..password` | はい | SQL Server のパスワード | +| `spark.sql.catalog..data_source..database` | いいえ | 接続するデータベースの名前 | +| `spark.sql.catalog..data_source..secure` | いいえ | SQL Server への接続にセキュアな接続を使用するかどうか。セキュアな接続を使用する場合は `true` を設定します。 | + +:::tip + +`` には任意の名前を使用できます。 + +::: + + + -データソース設定は catalog server で管理されます。catalog server でのデータソースの設定方法については、[ScalarDB Analytics catalog server のセットアップと管理](./administration.mdx#configure-data-sources)を参照してください。 +| 設定キー名 | 必須 | 説明 | +|:---------------------------------------------------------------------------|:--------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------| +| `spark.sql.catalog..data_source..type` | はい | 常に `dynamodb` を設定します | +| `spark.sql.catalog..data_source..region` | `region` または `endpoint` のいずれかを設定する必要があります | DynamoDB インスタンスの AWS リージョン | +| `spark.sql.catalog..data_source..endpoint` | `region` または `endpoint` のいずれかを設定する必要があります | DynamoDB インスタンスの AWS エンドポイント | +| `spark.sql.catalog..data_source..schema` | はい | カタログのスキーマを表す JSON オブジェクト。形式の詳細については、[カタログレベルのマッピング](./design.mdx#カタログレベルのマッピング)を参照してください。 | + +:::tip + +`` には任意の名前を使用できます。 ::: -### Spark アプリケーションのビルド設定 + + + +#### 設定例 + +以下は、複数のデータソースを持つ `scalardb` という名前のカタログを設定する ScalarDB Analytics の設定例です: + +```conf +# Sparkプラグインの設定 +spark.jars.packages com.scalar-labs:scalardb-analytics-spark-all-_: +spark.sql.extensions com.scalar.db.analytics.spark.extension.ScalarDbAnalyticsExtensions +spark.sql.catalog.scalardb com.scalar.db.analytics.spark.ScalarDbAnalyticsCatalog + +# ライセンスの設定 +spark.sql.catalog.scalardb.license.key +spark.sql.catalog.scalardb.license.cert_pem + +# データソースの設定 +spark.sql.catalog.scalardb.data_source.scalardb.type scalardb +spark.sql.catalog.scalardb.data_source.scalardb.config_path /path/to/scalardb.properties + +spark.sql.catalog.scalardb.data_source.mysql_source.type mysql +spark.sql.catalog.scalardb.data_source.mysql_source.host localhost +spark.sql.catalog.scalardb.data_source.mysql_source.port 3306 +spark.sql.catalog.scalardb.data_source.mysql_source.username root +spark.sql.catalog.scalardb.data_source.mysql_source.password password +spark.sql.catalog.scalardb.data_source.mysql_source.database mydb +``` + +括弧内の内容は以下のように変更する必要があります: + +- ``: ScalarDB Analytics のライセンスキー +- ``: ScalarDB Analytics ライセンスの PEM エンコードされた証明書 +- ``: 使用している Spark のメジャーおよびマイナーバージョン (例: 3.4) +- ``: Spark インストールに対応する Scala のメジャーおよびマイナーバージョン (例: 2.12 または 2.13) +- ``: ScalarDB Analytics のバージョン + +### ScalarDB Analytics 依存関係の追加 + +ScalarDB Analytics は Maven Central Repository でホストされています。パッケージ名は `scalardb-analytics-spark-all-_:` で、以下の通りです: + +- ``: 使用している Spark のメジャーおよびマイナーバージョン (例: 3.4) +- ``: Spark インストールに対応する Scala のメジャーおよびマイナーバージョン (例: 2.12 または 2.13) +- ``: ScalarDB Analytics のバージョン -ScalarDB Analytics を使用する Spark アプリケーションを開発する際は、ビルド設定に依存関係を追加できます。たとえば Gradle の場合: +バージョンの互換性の詳細については、[バージョン互換性](#バージョン互換性)を参照してください。 + +プロジェクトのビルド設定を設定することで、この依存関係をプロジェクトに追加できます。例えば、Gradle を使用している場合は、`build.gradle` ファイルに以下を追加できます: ```groovy dependencies { @@ -99,7 +228,7 @@ dependencies { :::note -Gradle Shadow や Maven Shade などのプラグインを使用してアプリケーションを fat JAR にバンドルする場合は、`provided` や `shadow` などの設定を使用して fat JAR から ScalarDB Analytics を除外してください。 +Gradle の Shadow プラグインや Maven の Shade プラグインなどを使用して、アプリケーションを単一の fat JAR ファイルにバンドルする場合は、使用しているプラグインに応じて `provided` や `shadow` などの適切な configuration を選択して、fat JAR ファイルから ScalarDB Analytics を除外する必要があります。 ::: @@ -119,7 +248,7 @@ ScalarDB Analytics を使用した Spark アプリケーションの開発には ::: -これらのすべての方法で、同じテーブル識別子形式を使用して ScalarDB Analytics のテーブルを参照できます。ScalarDB Analytics がデータソースからカタログ情報をマッピングする方法の詳細については、[カタログメタデータリファレンス](./administration.mdx#catalog-metadata-reference)を参照してください。 +これらのすべての方法で、同じテーブル識別子形式を使用して ScalarDB Analytics のテーブルを参照できます。ScalarDB Analytics がデータソースからカタログ情報をマッピングする方法の詳細については、[データソース別のカタログ情報マッピング](./design.mdx#データソース別のカタログ情報マッピング)を参照してください。 @@ -240,9 +369,13 @@ ScalarDB Analytics は、データソース、名前空間、テーブル、列 データソース内の情報が ScalarDB Analytics カタログにマッピングされる方法の詳細については、[データソース別のカタログ情報マッピング](./design.mdx#データソース別のカタログ情報マッピング)を参照してください。 -### カタログ構造のマッピング +### カタログレベルのマッピング + +ScalarDB Analytics カタログの各カタログレベルオブジェクトは、Spark カタログにマッピングされます。以下の表は、カタログレベルがどのようにマッピングされるかを示しています: + +#### データソーステーブル -ScalarDB Analytics は、データソースからのカタログ構造を Spark カタログにマッピングします。ScalarDB Analytics カタログのデータソースのテーブルは、Spark テーブルにマッピングされ、以下の形式で識別されます: +ScalarDB Analytics カタログのデータソースのテーブルは、Spark テーブルにマッピングされます。ScalarDB Analytics テーブルに対応する Spark テーブルの識別子には以下の形式が使用されます: ```console ... @@ -257,28 +390,56 @@ ScalarDB Analytics は、データソースからのカタログ構造を Spark 例えば、`my_catalog` という名前の ScalarDB カタログに、`my_data_source` という名前のデータソースと `my_schema` という名前のスキーマがある場合、そのスキーマ内の `my_table` という名前のテーブルを `my_catalog.my_data_source.my_schema.my_table` として参照できます。 +#### ビュー + +ScalarDB Analytics のビューは、ビューではなく Spark カタログのテーブルとして提供されます。ScalarDB Analytics ビューに対応する Spark テーブルの識別子には以下の形式が使用されます: + +```console +.view.. +``` + +括弧内の内容は以下の通りです: + +- ``: カタログの名前 +- ``: ビュー名前空間の名前。ビュー名前空間が複数レベルある場合は、ドット (`.`) で区切って連結されます +- ``: ビューの名前 + +例えば、`my_catalog` という名前の ScalarDB カタログと `my_view_namespace` という名前のビュー名前空間がある場合、その名前空間内の `my_view` という名前のビューを `my_catalog.view.my_view_namespace.my_view` として参照できます。 + +:::note + +データソーステーブル識別子との競合を避けるため、`view` が接頭辞として付けられます。 + +::: + +##### WAL 解釈ビュー + +[ScalarDB Analytics の設計](./design.mdx)で説明されているように、ScalarDB Analytics は WAL 解釈ビューと呼ばれる特別なタイプのビューを提供します。これらのビューは、ScalarDB データソースのテーブルに対して自動的に作成され、テーブル内の WAL メタデータを解釈することでユーザーフレンドリーなビューを提供します。 + +元の ScalarDB テーブルのデータソース名と名前空間の名前が WAL 解釈ビューのビュー名前空間の名前として使用されるため、`my_data_source` という名前のデータソースの `my_namespace` という名前の名前空間にある `my_table` という名前の ScalarDB テーブルがある場合、そのテーブルの WAL 解釈ビューを `my_catalog.view.my_data_source.my_namespace.my_table` として参照できます。 + ### データ型マッピング ScalarDB Analytics は、カタログ内のデータ型を Spark データ型にマッピングします。以下の表は、データ型がどのようにマッピングされるかを示しています: -| ScalarDB データ型 | Spark データ型 | -| :---------------- | :----------------- | -| `BYTE` | `Byte` | -| `SMALLINT` | `Short` | -| `INT` | `Integer` | -| `BIGINT` | `Long` | -| `FLOAT` | `Float` | -| `DOUBLE` | `Double` | -| `DECIMAL` | `Decimal` | -| `TEXT` | `String` | -| `BLOB` | `Binary` | -| `BOOLEAN` | `Boolean` | -| `DATE` | `Date` | -| `TIME` | `TimestampNTZ` | -| `TIMESTAMP` | `TimestampNTZ` | -| `TIMESTAMPTZ` | `Timestamp` | -| `DURATION` | `CalendarInterval` | -| `INTERVAL` | `CalendarInterval` | +| ScalarDB データ型 | Spark データ型 | +|:----------------|:-------------------| +| `BYTE` | `Byte` | +| `SMALLINT` | `Short` | +| `INT` | `Integer` | +| `BIGINT` | `Long` | +| `FLOAT` | `Float` | +| `DOUBLE` | `Double` | +| `DECIMAL` | `Decimal` | +| `TEXT` | `String` | +| `BLOB` | `Binary` | +| `BOOLEAN` | `Boolean` | +| `DATE` | `Date` | +| `TIME` | `TimestampNTZ` | +| `TIMESTAMP` | `TimestampNTZ` | +| `TIMESTAMPTZ` | `Timestamp` | +| `DURATION` | `CalendarInterval` | +| `INTERVAL` | `CalendarInterval` | ## バージョン互換性 @@ -289,6 +450,6 @@ Java バージョンに関しては、ScalarDB Analytics は Java 8以降をサ 以下は、ScalarDB Analytics の各バージョンでサポートされている Spark と Scalar のバージョンのリストです。 | ScalarDB Analytics バージョン | ScalarDB バージョン | サポートされている Spark バージョン | サポートされている Scala バージョン | 最小 Java バージョン | -| :---------------------------- | :------------------ | :---------------------------------- | :---------------------------------- | :------------------- | -| 3.16 | 3.16 | 3.5, 3.4 | 2.13, 2.12 | 8 | -| 3.15 | 3.15 | 3.5, 3.4 | 2.13, 2.12 | 8 | +|:----------------------------|:------------------|:-------------------------------|:-------------------------------|:-------------------| +| 3.16 | 3.16 | 3.5, 3.4 | 2.13, 2.12 | 8 | +| 3.15 | 3.15 | 3.5, 3.4 | 2.13, 2.12 | 8 |