データソースリファレンス
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このリファレンスガイドでは、ScalarDB Analytics のデータソース設定形式、プロバイダー固有の設定、およびデータ型マッピングに関する詳細情報を提供します。
ScalarDB Analytics を使用するには、ライセンスキー (試用ライセンスまたは商用ライセンス) が必要です。ライセンスキーをお持ちでない場合は、お問い合わせください。
データソース登録ファイル形式
データソースは、プロバイダー設定ファイルを使用して CLI でカタログに登録されます。これらのファイルは各データソースタイプの接続設定を定義し ます。CLI コマンドの詳細については、CLI コマンドリファレンスを参照してください。
プロバイダー設定ファイルは以下の構造を持ちます:
{
"type": "<database-type>", // データベースタイプ: postgresql, mysql, scalardb, sqlserver, oracle, dynamodb, databricks, snowflake
// タイプ固有の接続設定
// 設定はデータベースタイプによって異なります
}
カタログ名とデータソース名はCLIオプションで指定されます。(--catalog および --data-source)
外部ファイルから設定値を読み込むために ${file:path} 構文を使用できます。これは既存の設定ファイルを再利用したり、機密情報を分離したりするのに便利です。
サポートされているファイル形式:
.propertiesファイル: 読み込まれて文字列値を持つ JSON オブジェクトに変換されます.jsonファイル: そのまま読み込まれます (有効な JSON 構造)
例:
{
"type": "scalardb",
"configs": "${file:/path/to/scalardb.properties}"
}
タイプ別のプロバイダー設定
以下のセクションでは、サポートされている各データベースタイプのプロバイダー設定を示します:
- ScalarDB
- PostgreSQL
- MySQL
- Oracle
- SQL Server
- Databricks
- Snowflake
- DynamoDB
設定
ScalarDBの設定は以下の通りです。
configs
- フィールド:
configs - 説明: ScalarDB 設定プロパティのマップ。これらは ScalarDB 設定ファイルで指定されるのと同じプロパティです。設定を JSON オブジェクトとしてインラインで指定するか、
${file:path}構文でファイル参照を使用できます。
例
インライン設定:
{
"type": "scalardb",
"configs": {
"scalar.db.contact_points": "localhost",
"scalar.db.username": "admin",
"scalar.db.password": "admin",
"scalar.db.storage": "jdbc"
}
}
propertiesファイルでのファイル参照の使用:
{
"type": "scalardb",
"configs": "${file:/path/to/scalardb.properties}"
}
データアクセス方法
ScalarDB Analytics は ScalarDB Cluster を経由せず、ScalarDB Core ライブラリを直接 使用して ScalarDB からデータを読み取ります。そのため、ScalarDB Cluster でのみ利用可能な機能 (暗号化など) は ScalarDB データソースでは使用できません。
スキャン動作
ScalarDB データソースは、内部的に Scan オペレーションの all() を使用してデータを読み取ります。このオペレーションには クロスパーティションスキャン設定を有効にする必要があります。フィルタリングとオーダリングは ScalarDB レベルでは適用されません。関連する設定は以下のとおりです:
scalar.db.cross_partition_scan.enabledはtrueである必要があります (デフォルトはtrue)。scalar.db.cross_partition_scan.filtering.enabledは効果がありません。scalar.db.cross_partition_scan.ordering.enabledは効果がありません。
フィルタープッシュダウンなどの最適化は、将来のリリースでサポートされる可能性があります。
ScalarDB Core 設定のオーバーライド
ScalarDB Core の設定プロパティは、ScalarDB データソースとして使用する場合にも基本的に反映されます。ただし、以下のプロパティは ScalarDB Analytics によってオーバーライドされます:
scalar.db.scan_fetch_size: ユーザーが明示的に設定していない場合、ScalarDB Core のデフォルト値10の代わりに4096が設定されます。scalar.db.consensus_commit.isolation_level: ユーザーが指定した値にかかわらず、常にREAD_COMMITTEDでオーバーライドされます。
設定
PostgreSQL の設定は以下の通りです。
host
- フィールド:
host - 説明: PostgreSQL サーバーのホスト名。
port
- フィールド:
port - 説明: ポート番号。
username
- フィールド:
username - 説明: データベースユーザー。
password
- フィールド:
password - 説明: データベースパスワード。
database
- フィールド:
database - 説明: 接続するデータベース名。
例
{
"type": "postgresql",
"host": "postgres.example.com",
"port": 5432,
"username": "analytics_user",
"password": "secure_password",
"database": "customers"
}
設定
MySQL の設定は以下の通りです。
host
- フィールド:
host - 説明: MySQL サーバーのホスト名。
port
- フィールド:
port - 説明: ポート番号。
username
- フィールド:
username - 説明: データベースユーザー。
password
- フィールド:
password - 説明: データベースパスワード。
database
- フィールド:
database - 説明: インポートする特定のデータベース。省略した場合、すべてのデータベースがインポートされます。
- デフォルト値: なし (すべてのデータベースをインポート)
例
{
"type": "mysql",
"host": "mysql.example.com",
"port": 3306,
"username": "analytics_user",
"password": "secure_password",
"database": "orders" // オプション - 省略した場合、すべてのデータベースがインポートされます
}
設定
Oracle の設定は以下の通りです。
host
- フィールド:
host - 説明: Oracle サーバーのホスト名。
port
- フィールド:
port - 説明: ポート番号。
username
- フィールド:
username - 説明: データベースユーザー。
password
- フィールド:
password - 説明: データベースパスワード。
serviceName
- フィールド:
serviceName - 説明: Oracle サービス名。
例
{
"type": "oracle",
"host": "oracle.example.com",
"port": 1521,
"username": "analytics_user",
"password": "secure_password",
"serviceName": "ORCL"
}
設定
SQL Server の設定は以下の通りです。
host
- フィールド:
host - 説明: SQL Server のホスト名。
port
- フィールド:
port - 説明: ポート番号。
username
- フィールド:
username - 説明: データベースユーザー。
password
- フィールド:
password - 説明: データベースパスワード。
database
- フィールド:
database - 説明: 接続する特定のデータベース。
- デフォルト値: なし (デフォルトデータベースに接続)
secure
- フィールド:
secure - 説明: 暗号化を有効化。
- デフォルト値:
false
例
{
"type": "sqlserver",
"host": "sqlserver.example.com",
"port": 1433,
"username": "sa",
"password": "secure_password",
"database": "analytics", // オプション - 指定した場合、このデータベースのみがインポートされます
"secure": true // オプション - 暗号化を有効化
}
設定
Databricks (Databricks SQL/JDBC) の設定は以下の通りです。
host
- フィールド:
host - 説明: Databricks ワークスペースのホスト名 (例:
adb-1234567890123.4.azuredatabricks.net)。
port
- フィールド:
port - 説明: ポート番号。
- デフォルト値: ドライバーのデフォルト。 (オプション)
httpPath
- フィールド:
httpPath - 説明: SQL ウェアハウスまたはクラスターの HTTP パス (例:
/sql/1.0/warehouses/xxxxxxxxxxxxxx)。
oAuthClientId
- フィールド:
oAuthClientId - 説明: Databricks SQL/JDBC 認証用の OAuth Machine-to-Machine (M2M) サービスプリンシパルの UUID または Application ID。
oAuthSecret
- フィールド:
oAuthSecret - 説明: Databricks SQL/JDBC 認証用の OAuth M2M サービスプリンシパルのシークレット。
catalog
- フィールド:
catalog - 説明: 使用するデフォルトのカタログ。(オプション)
例
{
"type": "databricks",
"host": "adb-1234567890123.4.azuredatabricks.net",
"port": 443,
"httpPath": "/sql/1.0/warehouses/xxxxxxxxxxxxxx",
"oAuthClientId": "YOUR_CLIENT_ID",
"oAuthSecret": "YOUR_CLIENT_SECRET",
"catalog": "main"
}
設定
Snowflake の設定は以下の通りです。
account
- フィールド:
account - 説明: Snowflake アカウント識別子 (例:
xy12345.ap-northeast-1)。
username
- フィールド:
username - 説明: Snowflake ユーザー。
password
- フィールド:
password - 説明: Snowflake ユーザーのプログラマティックアクセストークン。
database
- フィールド:
database - 説明: 解決/インポートするデフォルトのデータベース。(オプション)
例
{
"type": "snowflake",
"account": "YOUR-ACCOUNT",
"username": "analytics_user",
"password": "secure_password",
"database": "ANALYTICS"
}
設定
DynamoDB の設定は以下の通りです。
DynamoDB 認証は標準の AWS SDK 認証情報プロバイダーチェーンを使用します。認証情報は以下の方法で設定できます:
- 環境変数 (
AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY) - AWS 認証情報ファイル (
~/.aws/credentials) - IAM ロール (EC2、ECS、または Lambda で実行している場合)
- AWS SSO または AWS SDK がサポートするその他の認証情報プロバイダー
詳細については、AWS SDK の認証情報プロバイダーに関するドキュメントを参照してください。
region
- フィールド:
region - 説明: AWS リージョン (例:
us-east-1)。regionまたはendpointのいずれかを指定する必要があります (両方は指定できません)。
endpoint
- フィールド:
endpoint - 説明: カスタムエンドポイント URL。
regionまたはendpointのいずれかを指定する必要があります (両方は指定できません)。
スキーマ定義
DynamoDB はスキーマレスなので、--schema-json または --schema-file CLI オプションを使用してスキーマ定義を別途提供する必要があります。スキーマは自動的に解決することはできません。
スキーマ構造
スキーマファイルには以下の構造が必要です:
namespaces[]
- フィールド:
namespaces[] - 説明: 名前空間定義の配列。
namespaces[].names[]
- フィールド:
namespaces[].names[] - 説明: 名前空間名コンポーネントの配列 (文字列)。単一レベルの名前空間には、単一要素の配列を使用します。
namespaces[].tables[]
- フィールド:
namespaces[].tables[] - 説明: テーブル定義の配列。
namespaces[].tables[].name
- フィールド:
namespaces[].tables[].name - 説明: テーブル名。DynamoDB のテーブル名と一致する必要があります。
namespaces[].tables[].columns[]
- フィールド:
namespaces[].tables[].columns[] - 説明: 列定義の配列。
namespaces[].tables[].columns[].name
- フィールド:
namespaces[].tables[].columns[].name - 説明: 列名。DynamoDB 属性名と一致する必要があります。
namespaces[].tables[].columns[].type
- フィールド:
namespaces[].tables[].columns[].type - 説明: データ型。
namespaces[].tables[].columns[].nullable
- フィールド:
namespaces[].tables[].columns[].nullable - 説明: 列が null 値を含むことができるかどうか。
- デフォルト値:
true
例
プロバイダー設定ファイル (provider.json):
{
"type": "dynamodb",
"region": "us-east-1"
}
スキーマ定義ファイル (schema.json):
{
"namespaces": [
{
"names": ["production"],
"tables": [
{
"name": "user_events",
"columns": [
{ "name": "user_id", "type": "TEXT", "nullable": false },
{ "name": "event_time", "type": "TIMESTAMP", "nullable": false },
{ "name": "event_type", "type": "TEXT" },
{ "name": "event_data", "type": "TEXT" }
]
}
]
}
]
}
CLI コマンド:
scalardb-analytics datasource register \
--catalog production \
--data-source dynamodb_events \
--provider-file provider.json \
--schema-file schema.json
カタログ情報リファレンス
このセクションでは、データソース別のカタログ構造マッピングとデータ型マッピングについて説明します。
データソース別のカタログ構造マッピング
データソースを ScalarDB Analytics に登録する際、データソースのカタログ構造、すなわち名前空間、テーブル、列が解決され、ユニバーサルデータカタログに登録されます。データソースのカタログ構造を解決するために、データソース側の特定のオブジェクトがユニバーサルデータカタログオブジェクトにマッピングされます。
カタログレベルのマッピング
カタログレベルのマッピングは、データソースからユニバーサルデータカタログへの名前空間名、テーブル名、列名のマッピングです。各データソースでのカタログレベルのマッピングを確認するには、データソースを選択してください。
- ScalarDB
- PostgreSQL
- MySQL
- Oracle
- SQL Server
- Databricks
- Snowflake
- DynamoDB
ScalarDB のカタログ構造は ScalarDB Analytics によって自動的に解決されます。カタログレベルのオブジェクトは以下のようにマッピングされます:
- ScalarDB 名前空間は名前空間にマッピングされます。したがって、ScalarDB データソースの名前空間は常に単一レベルで、名前空間名のみで構成されます。
- ScalarDB テーブルはテーブルにマッピングされます。
- ScalarDB 列は列にマッピングされます。
PostgreSQL のカタログ構造は ScalarDB Analytics によって自動的に解決されます。カタログレベルのオブジェクトは以下のようにマッピングされます:
- PostgreSQL スキーマは名前空間にマッピングされます。したがって、PostgreSQL データソースの名前空間は常に単一レベルで、スキーマ名のみで構成されます。
- ユーザー定義スキーマのみが名前空間にマッピングされます。以下のシステムスキーマは無視されます:
information_schemapg_catalog
- ユーザー定義スキーマのみが名前空間にマッピングされます。以下のシステムスキーマは無視されます:
- PostgreSQL テーブルはテーブルにマッピングされます。
- PostgreSQL 列は列にマッピングされます。
MySQL のカタログ構造は ScalarDB Analytics によって自動的に解決されます。カタログレベルのオブジェクトは以下のようにマッピングされます:
- MySQL データベースは名前空間にマッピングされます。したがって、MySQL データソースの名前空間は常に単一レベルで、データベース名のみで構成されます。
- ユーザー定義データベースのみが名前空間にマッピングされます。以下のシステムデータベースは無視されます:
mysqlsysinformation_schemaperformance_schema
- ユーザー定義データベースのみが名前空間にマッピングされます。以下のシステムデータベースは無視されます:
- MySQL テーブルはテーブルにマッピングされます。
- MySQL 列は列にマッピングされます。
Oracle のカタログ構造は ScalarDB Analytics によって自動的に解決されます。カタログレベルのオブジェクトは以下のようにマッピングされます:
- Oracle スキーマは名前空間 にマッピングされます。したがって、Oracle データソースの名前空間は常に単一レベルで、スキーマ名のみで構成されます。
- ユーザー定義スキーマのみが名前空間にマッピングされます。以下のシステムスキーマは無視されます:
ANONYMOUSAPPQOSSYSAUDSYSCTXSYSDBSNMPDGPDB_INTDBSFWUSERDVFDVSYSGGSYSGSMADMIN_INTERNALGSMCATUSERGSMROOTUSERGSMUSERLBACSYSMDSYSOJVMSYSORDDATAORDPLUGINSORDSYSOUTLNREMOTE_SCHEDULER_AGENTSI_INFORMTN_SCHEMASYSSYS$UMFSYSBACKUPSYSDGSYSKMSYSRACSYSTEMWMSYSXDBDIPMDDATAORACLE_OCMXS$NULL
- ユーザー定義スキーマのみが名前空間にマッピングされます。以下のシステムスキーマは無視されます:
SQL Server のカタログ構造は ScalarDB Analytics によって自動的に解決されます。カタログレベルのオブジェクトは以下のようにマッピングされ ます:
- 各 SQL Server データベース-スキーマペアは ScalarDB Analytics の名前空間にマッピングされます。したがって、SQL Server データソースの名前空間は常に2レベルで、データベース名とスキーマ名で構成されます。
- ユーザー定義データベースのみが名前空間にマッピングされます。以下のシステムデータベースは無視されます:
mastermodelmsdbtempdb
- ユーザー定義スキーマのみが名前空間にマッピングされます。以下のシステムスキーマは無視されます:
sysguestINFORMATION_SCHEMAdb_accessadmindb_backupoperatordb_datareaderdb_datawriterdb_ddladmindb_denydatareaderdb_denydatawriterdb_ownerdb_securityadmin
- ユーザー定義データベースのみが名前空間にマッピングされます。以下のシステムデータベースは無視されます:
- SQL Server テーブルはテーブルにマッピングされます。
- SQL Server 列は列にマッピングされます。
Databricks のカタログ構造は ScalarDB Analytics によって自動的に解決されます。カタログレベルのオブジェクトは以下のようにマッピングされます:
- 各 Databricks カタログ-スキーマペアは ScalarDB Analytics の名前空間にマッピングされます。したがって、Databricks データソースの名前空間は常に2レベルで、カタログ名とス キーマ名で構成されます。
- 以下のシステムカタログ/スキーマは無視されます:
- カタログ:
system - スキーマ:
information_schema、global_temp、sys、routines
- カタログ:
- 以下のシステムカタログ/スキーマは無視されます:
- Databricks テーブルはテーブルにマッピングされます。
- Databricks 列は列にマッピングされます。
Snowflake のカタログ構造は ScalarDB Analytics によって自動的に解決されます。カタログレベルのオブジェクトは以下のようにマッピングされます:
- 各 Snowflake データベース-スキーマペアは ScalarDB Analytics の名前空間にマッピングされます。したがって、Snowflake データソースの名前空間は常に2レベルで、データベース名とスキーマ名で構成されます。
- 以下のシステムデータベース/スキーマは無視されます:
- データベース:
SNOWFLAKE - スキーマ:
INFORMATION_SCHEMA
- データベース:
- 以下のシステムデータベース/スキーマは無視されます:
- Snowflake テーブルはテーブルにマッピングされます。
- Snowflake 列は列にマッピングされます。
DynamoDB はスキーマレスなので、以下の形式の JSON を使用して DynamoDB データソースを登録する際にカタログ構造を明示的に指定する必要があります:
{
"namespaces": [
{
"name": "<NAMESPACE_NAME>",
"tables": [
{
"name": "<TABLE_NAME>",
"columns": [
{
"name": "<COLUMN_NAME>",
"type": "<COLUMN_TYPE>"
},
...
]
},
...
]
},
...
]
}
指定された JSON では、任意の名前空間名を使用できますが、テーブル名は DynamoDB のテーブル名と一致する必要があり、列名と型は DynamoDB のフィールド名と型と一致する必要があります。