データソースリファレンス
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このリファレンスガイドでは、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}"
}
設定
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 のフィールド名と型と一致する必要があります。
データ型マッピング
以下のセクションでは、各データソースのネイティブ型が ScalarDB Analytics 型にどのようにマッピングされるかを示します:
以下のマッピングテーブルに含まれていないデータ型の列は、データソース登録時に無視されます。これらの列は ScalarDB Analytics カタログに表示されず、クエリすることもできません。無視された列の情報は ScalarDB Analytics サーバーログに記録されます。
- ScalarDB
- PostgreSQL
- MySQL
- Oracle
- SQL Server
- Databricks
- Snowflake
- DynamoDB
| 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 |
| Databricks SQL データ型 | ScalarDB Analytics データ型 |
|---|---|
TINYINT | SMALLINT |
SMALLINT | SMALLINT |
INT / INTEGER | INT |
BIGINT | BIGINT |
FLOAT | FLOAT |
DOUBLE | DOUBLE |
DECIMAL(p,s) if s = 0 | BYTE (p ≤ 2), SMALLINT (p = 3–4), INT (p = 5–9), BIGINT (p = 10–18), DECIMAL(p,0) (p > 18) |
DECIMAL(p,s) if s ≠ 0 | DECIMAL(p,s) |
STRING / VARCHAR | TEXT |
BINARY | BLOB |
BOOLEAN | BOOLEAN |
DATE | DATE |
TIMESTAMP | TIMESTAMPTZ |
TIMESTAMP_NTZ | TIMESTAMP |
DECIMAL型の場合、テーブル作成時に精度とスケールが指定されていない場合、デフォルト値の精度 = 38、スケール = 0 が適用されます。- スケール = 0 で精度が小さい
DECIMAL型の場合、ストレージとパフォーマンスを向上させるために最適化された整数型 (BYTE、SMALLINT、INT、BIGINT) が使用されます。
| Snowflake データ型 | ScalarDB Analytics データ型 |
|---|---|
NUMBER(p,0) / INT / INTEGER / BIGINT / SMALLINT / TINYINT / BYTEINT | BYTE (p ≤ 2), SMALLINT (p = 3–4), INT (p = 5–9), BIGINT (p = 10–18), DECIMAL(p,0) (p > 18) |
NUMBER(p,s) / NUMERIC / DECIMAL if s ≠ 0 | DECIMAL(p,s) |
FLOAT / FLOAT4 / FLOAT8 / DOUBLE / DOUBLE PRECISION / REAL | DOUBLE |
VARCHAR / STRING / TEXT / NVARCHAR / NVARCHAR2 / CHAR VARYING / NCHAR VARYING / CHAR / CHARACTER / NCHAR | TEXT |
BINARY / VARBINARY | BLOB |
BOOLEAN | BOOLEAN |
DATE | DATE |
TIME | TIME |
TIMESTAMP_NTZ / DATETIME | TIMESTAMP |
TIMESTAMP_LTZ | TIMESTAMPTZ |
TIMESTAMP_TZ | TIMESTAMPTZ |
NUMBERおよびDECIMAL型の場合、テーブル作成時に精度とスケールが指定されていない場合、デフォルト値の精度 = 38、スケール = 0 が適用されます。- スケール = 0 で精度が小さい
NUMBERおよびDECIMAL型の場合、ストレージとパフォーマンスを向上させるために最適化された整数型 (BYTE、SMALLINT、INT、BIGINT) が使用されます。
| DynamoDB データ型 | ScalarDB Analytics データ型 |
|---|---|
String | TEXT |
Number | DOUBLE |
Binary | BLOB |
Boolean | BOOLEAN |
Null | NULL |
String Set | TEXT |
Number Set | TEXT |
Binary Set | TEXT |
List | TEXT |
Map | TEXT |
DynamoDB の複合データ型 (String Set、Number Set、Binary Set、List、Map) は互換性のため TEXT にマッピングされます。実際の値は ScalarDB Analytics クエリで JSON 文字列としてシリアル化されます。