データソースリファレンス
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このリファレンスガイドでは、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 に登録する際、データソースのカタログ構造、すなわち名前空間、テーブル、列が解決され、ユニバーサルデータカタログに登録されます。データソースのカタログ構造を解決するために、データソース側の特定のオブジェクトがユニバーサルデータカタログオブジェクトにマッピングされます。