ScalarDB Analytics データソースリファレンス
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このリファレンスガイドでは、ScalarDB Analytics のデータソース設定形式、プロバイダー固有の設定、およびデータ型マッピングに関する詳細情報を提供します。
ScalarDB Analytics を使用するには、ライセンスキー (試用ライセンスまたは商用ライセンス) が必要です。ライセンスキーをお持ちでない場合は、お問い合わせください。
データソース登録ファイル形式
データソースは、データソース登録ファイルを使用してCLIでカタログに登録されます。これらのファイルは以下の構造を持ちます。CLIコマンドの詳細については、CLIコマンドリファレンスを参照してください。
{
"catalog": "<catalog-name>", // データソースを登録するカタログ
"name": "<data-source-name>", // このデータソースの一意の名前
"type": "<database-type>", // データベースタイプ: postgres, mysql, scalardb, sqlserver, oracle, dynamodb, databricks, snowflake
"provider": {
// タイプ固有の接続設定
// 設定はデータベースタイプによって異なります
}
}
provider セクションには、type フィールドに基づいたデータソース固有の接続設定が含まれます。
タイプ別のプロバイダー設定
以下のセクションでは、サポートされている各データベースタイプのプロバイダー設定を示します:
- ScalarDB
- PostgreSQL
- MySQL
- Oracle
- SQL Server
- Databricks
- Snowflake
- DynamoDB
設定
ScalarDB の設定は以下の通りです。
configPath
- フィールド:
configPath - 説明: ScalarDB 設定ファイルへのパス。
例
{
"catalog": "production",
"name": "scalardb_source",
"type": "scalardb",
"provider": {
"configPath": "/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 - 説明: 接続するデータベース名。
例
{
"catalog": "production",
"name": "postgres_customers",
"type": "postgres",
"provider": {
"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 - 説明: インポートする特定のデータベース。省略した場合、すべてのデータベースがインポートされます。
- デフォルト値: なし (すべてのデータベースをインポート)
例
{
"catalog": "production",
"name": "mysql_orders",
"type": "mysql",
"provider": {
"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 サービス名。
例
{
"catalog": "production",
"name": "oracle_warehouse",
"type": "oracle",
"provider": {
"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
例
{
"catalog": "production",
"name": "sqlserver_analytics",
"type": "sqlserver",
"provider": {
"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 マシン間 (M2M) サービスプリンシパルの UUID またはアプリケーション ID。
oAuthSecret
- フィールド:
oAuthSecret - 説明: Databricks SQL/JDBC 認証用の OAuth マシン間 (M2M) サービスプリンシパルのシークレット。
catalog
- フィールド:
catalog - 説明: 既定で使用するカタログ。(任意)
例
{
"catalog": "production",
"name": "databricks_analytics",
"type": "databricks",
"provider": {
"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 - 説明: 解決/インポート対象とする既定のデータベース。(任意)
例
{
"catalog": "production",
"name": "snowflake_dwh",
"type": "snowflake",
"provider": {
"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のいずれかを指定する必要があります (両方は指定できません)。
schema
- フィールド:
schema - 説明: 完全なスキーマ定義。DynamoDB はスキーマレスなので、完全なスキーマ定義を提供する必要があります。
スキーマ構造
schema フィールドには以下の構造が必要です:
.schema.namespaces[]
- フィールド:
.schema.namespaces[] - 説明: 名前空間定義の配列。
.schema.namespaces[].names[]
- フィールド:
.schema.namespaces[].names[] - 説明: 名前空間名の配列 (文字列)。
.schema.namespaces[].tables[]
- フィールド:
.schema.namespaces[].tables[] - 説明: テーブル定義の配列。
.schema.namespaces[].tables[].name
- フィールド:
.schema.namespaces[].tables[].name - 説明: テーブル名。
.schema.namespaces[].tables[].columns[]
- フィールド:
.schema.namespaces[].tables[].columns[] - 説明: カラム定義の配列。
.schema.namespaces[].tables[].columns[].name
- フィールド:
.schema.namespaces[].tables[].columns[].name - 説明: カラム名。
.schema.namespaces[].tables[].columns[].type
- フィールド:
.schema.namespaces[].tables[].columns[].type - 説明: データ型。
.schema.namespaces[].tables[].columns[].nullable
- フィールド:
.schema.namespaces[].tables[].columns[].nullable - 説明: カラムがnull値を含むことができるかどうか。
- デフォルト値:
true
例
{
"catalog": "production",
"name": "dynamodb_events",
"type": "dynamodb",
"provider": {
"region": "us-east-1",
"schema": {
"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" }
]
}
]
}
]
}
}
}
カタログ情報リファレンス
このセクションでは、データソース別のカタログ構造マッピングとデータ型マッピングについて説明します。
データソース別のカタログ構造マッピング
データソースを 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 データベースとスキーマは共に名前空間にマッピングされます。したがって、SQL Server データソースの名前空間は常に2レベルで、データベース名とスキーマ名で構成されます。
- ユーザー定義データベースのみが名前空間にマッピングされます。以下のシステムデータベースは無視されます:
sysguestINFORMATION_SCHEMAdb_accessadmindb_backupoperatordb_datareaderdb_datawriterdb_ddladmindb_denydatareaderdb_denydatawriterdb_ownerdb_securityadmin
- ユーザー定義スキーマのみが名前空間にマッピングされます。以下のシステムスキーマは無視されます:
mastermodelmsdbtempdb
- ユーザー定義データベースのみが名前空間にマッピングされます。以下のシステムデータベースは無視されます:
- 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 はスキーマレスであるため、DynamoDB データソースを登録する際に以下のような形式の JSON を使用してカタログ構造を明示的に指定する必要があります:
{
"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,0) | BYTE (p ≤ 2), SMALLINT (3–4), INT (5–9), BIGINT (10–18), DECIMAL (p > 18) |
STRING / VARCHAR | TEXT |
BINARY | BLOB |
BOOLEAN | BOOLEAN |
DATE | DATE |
TIMESTAMP | TIMESTAMPTZ |
TIMESTAMP_NTZ | TIMESTAMP |
| Snowflake データ型 | ScalarDB Analytics データ型 |
|---|---|
NUMBER(p,0) | BYTE (p ≤ 2), SMALLINT (3–4), INT (5–9), BIGINT (10–18), DECIMAL (p > 18) |
NUMBER / NUMERIC | DECIMAL |
INT / INTEGER / BIGINT / SMALLINT / TINYINT / BYTEINT | DECIMAL |
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 |
| 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 文字列としてシリアル化されます。