Oracle NoSQL Database Migrator Reference
参数
公共配置参数
以下是常见的配置参数。有关示例,请参见各个配置模板部分。
存储桶
-
用途:指定 OCI 对象存储存储桶的名称,该存储桶包含源/接收器对象。
确保所需的存储桶已存在于 OCI 对象存储实例中,并且具有读/写权限。
- 数据类型:字符串
- 必需 (Y/N): Y
chunkSize
-
用途:指定要在接收器中存储的
chunk
表数据的最大大小。该值为 MB。在迁移期间,表将拆分为 chunkSize 块,每个块将作为单独的文件写入到池中。当要迁移的源数据超过 chunkSize 值时,将创建新文件。如果未指定,则默认为 32MB。有效值为 1 到 1024 之间的整数。
- 数据类型:整数
- 必需 (Y/N): N
Credential (身份证明)
-
用途:指定包含 OCI 身份证明的文件的绝对路径。NoSQL 数据库迁移程序使用此文件连接到 OCI 服务,例如 Oracle NoSQL Database Cloud Service 、OCI 对象存储等。
默认值为
$HOME/.oci/config
有关凭证文件的示例,请参见 Example Configuration 。
- 数据类型:字符串
- 必需 (Y/N): N
credentialsProfile
-
用途:指定用于连接到 OCI 服务的配置文件的名称,例如 Oracle NoSQL Database Cloud Service 、OCI Object Storage 等。用户帐户凭证称为配置文件。
如果未指定此值,NoSQL Database Migrator 将使用
DEFAULT
配置文件。注意:
仅当指定了 credentials 参数时,此参数才有效。 - 数据类型:字符串
- 必需 (Y/N): N
endpoint
- 用途:指定以下几项之一:
- OCI 对象存储服务的服务端点 URL 或区域 ID。
有关 OCI 对象存储服务端点的列表,请参阅对象存储端点。
- Oracle NoSQL Database Cloud Service 的服务端点 URL 或区域 ID。
可以单独指定完整 URL 或区域 ID。有关 Oracle NoSQL Database Cloud Service 支持的数据区域列表,请参阅 Oracle NoSQL Database Cloud Service 文档中的数据区域和关联服务 URL 。
- OCI 对象存储服务的服务端点 URL 或区域 ID。
- 数据类型:字符串
- 必需 (Y/N): Y
format
- 用途:指定源/接收器格式。
- 数据类型:字符串
- 必需 (Y/N): Y
名称空间
-
用途:指定 OCI 对象存储服务的名称空间。这是一个可选参数。如果未指定此参数,将使用租户的默认名称空间。
- 数据类型:字符串
- 必需 (Y/N): N
前缀
-
用途:前缀充当逻辑容器或目录,用于将数据存储在 OCI 对象存储桶中。
- 源配置模板:如果指定的
prefix
参数,将迁移prefix
参数中指定的目录中的所有对象。否则,将迁移存储桶中存在的所有对象。 - Sink 配置模板:如果指定了
prefix
参数,将在存储桶中创建具有给定前缀的目录,并将对象迁移到此目录中。否则,源中的表名将用作前缀。如果存储桶中已存在同名对象,则会覆盖该对象。
有关前缀的详细信息,请参见 Object Naming Using Prefixes and Hierarchies 。
- 源配置模板:如果指定的
- 数据类型:字符串
- 必需 (Y/N): N
requestTimeoutMs
-
用途:指定等待从存储到存储的每个读/写操作完成的时间。以毫秒为单位提供。默认值为 5000。值可以是任何正整数。
- 数据类型:整数
- 必需 (Y/N): N
security
-
用途:如果存储是安全存储,则指定包含存储身份证明的安全登录文件的绝对路径。有关安全登录文件的更多信息,请参见 Administrator's Guide 中的 Configuring Security with Remote Access 。
可以使用基于密码文件的验证或基于 wallet 的验证。但是,仅 Oracle NoSQL Database 的 Enterprise Edition (EE) 支持基于 wallet 的验证。有关基于 wallet 的验证的详细信息,请参阅源和接收安全。
Community Edition (CE) 版本仅支持基于密码文件的验证。
- 数据类型:字符串
- 强制 (Y/N): Y,用于安全存储
类型
- 用途:标识源/接收器类型。
- 数据类型:字符串
- 必需 (Y/N): Y
useDelegationToken
-
用途:指定 NoSQL 数据库迁移程序工具是否使用委派令牌验证连接到 OCI 服务。必须使用委派令牌验证从 Cloud Shell 运行迁移程序实用程序。调用 Cloud Shell 时,会自动为用户创建委派令牌。
默认值为
false
。 - 数据类型:布尔型
- 必需 (Y/N): N
注意:
- 仅当从 Cloud Shell 运行 NoSQL Database Migrator 工具时,才支持使用委派令牌进行验证。
- 验证参数 credentials 、useInstancePrincipal 和 useDelegationToken 是互斥的。在配置模板中仅指定其中一个参数。
- Cloud Shell 仅支持在以下源和源之间迁移:
类型 有效源 有效接收器 Oracle NoSQL Database Cloud Service
(
nosqldb_cloud
)Y Y 文件(主目录中的 JSON 文件) Y Y OCI 对象存储(JSON 文件)
(
object_storage_oci
)Y Y OCI 对象存储(参数文件)
(
object_storage_oci
)N Y
useInstancePrincipal
-
用途:指定 NoSQL 数据库迁移程序工具是否使用实例主体验证连接到 OCI 服务,例如 Oracle NoSQL Database Cloud Service 、OCI 对象存储等。有关实例主用户验证方法的详细信息,请参阅源和接收安全性。
默认值为
false
。注意:
- 只有在 OCI 计算实例中运行 NoSQL Database Migrator 工具(例如在 OCI 上托管的 VM 中运行的 NoSQL Database Migrator 工具)时,才支持使用实例主体的验证。
- 验证参数 credentials 、useInstancePrincipal 和 useDelegationToken 是互斥的。在配置模板中仅指定其中一个参数。
- 数据类型:布尔型
- 必需 (Y/N): N
源配置模板
了解每个有效源的源配置文件格式以及每个配置参数的用途。
有关配置文件模板,请参见 Configuration File in Terminology used with NoSQL Data Migrator 。
有关每个源的有效 sink 格式的详细信息,请参见 Sink Configuration Templates 。
主题
以下主题介绍了 Oracle NoSQL Database Migrator 引用的源配置模板,用于将数据从给定源复制到有效接收器。
- JSON 文件源
包含 JSON 数据的指定文件或目录。
- OCI 对象存储桶中的 JSON 文件
OCI 对象存储桶中指定的 JSON 文件。
- MongoDB 格式的 JSON 文件
包含 MongoDB 格式化 JSON 数据的指定文件或目录。
- MongoDB - OCI 对象存储存储桶中的格式化 JSON 文件
指定的 MongoDB 导出了存储在 OCI 对象存储桶中的 JSON 文件。
- DynamoDB - 格式化的 JSON 文件存储在 AWS S3 中
指定的 DynamoDB 已导出存储在 AWS S3 存储中的 JSON 文件。
- DynamoDB 格式的 JSON 文件
指定的 DynamoDB 已从文件系统导出 JSON 文件。
- Oracle NoSQL Database
Oracle NoSQL Database 中的指定表。
- Oracle NoSQL Database Cloud Service
Oracle NoSQL Database Cloud Service 中的指定表。
- CSV 文件来源
包含 CSV 数据的指定文件或目录。
- OCI 对象存储桶中的 CSV 文件
OCI 对象存储桶中指定的 CSV 文件。
JSON 文件源
下面显示了 JSON 文件作为 NoSQL Database Migrator 源的配置文件格式。
可以通过在源配置模板中指定文件路径或目录来迁移 JSON 源文件。
{"id":6,"val_json":{"array":["q","r","s"],"date":"2023-02-04T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-03-04T02:38:57.520Z","numfield":30,"strfield":"foo54"},{"datefield":"2023-02-04T02:38:57.520Z","numfield":56,"strfield":"bar23"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}
{"id":3,"val_json":{"array":["g","h","i"],"date":"2023-02-02T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-02-02T02:38:57.520Z","numfield":28,"strfield":"foo3"},{"datefield":"2023-02-02T02:38:57.520Z","numfield":38,"strfield":"bar"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}
源配置模板
"source": {
"type": "file",
"format": "json",
"dataPath": "<path/to/JSON/[file|dir]>",
"schemaInfo": {
"schemaPath": "<path/to/schema/file>"
}
},
源参数
公共配置参数
唯一配置参数
dataPath
-
用途:指定包含要迁移的 JSON 数据的文件或目录的绝对路径。
您必须确保此数据与接收器中定义的 NoSQL 表方案匹配。如果指定目录,NoSQL Database Migrator 将标识该目录中具有
.json
扩展名的所有文件以进行迁移。不支持子目录。 - 数据类型:字符串
- 必需 (Y/N): Y
-
示例:
-
指定 JSON 文件
"dataPath" : "/home/user/sample.json"
-
指定目录
"dataPath" : "/home/user"
-
schemaInfo
-
用途:指定要迁移的源数据的方案。此方案传递到 NoSQL 池。
- 数据类型:对象
- 必需 (Y/N): N
schemaInfo.schemaPath
-
用途:指定包含要迁移的 NoSQL 表的 DDL 语句的方案定义文件的绝对路径。
- 数据类型:字符串
- 必需 (Y/N): Y
-
示例:
"schemaInfo": { "schemaPath": "<path to the schema file>" }
OCI 对象存储桶中的 JSON 文件
下面显示了作为 NoSQL 数据库迁移程序源的 OCI 对象存储存储桶中 JSON 文件的配置文件格式。
您可以通过在源配置模板中指定存储桶的名称来迁移 OCI 对象存储存储桶中的 JSON 文件。
{"id":6,"val_json":{"array":["q","r","s"],"date":"2023-02-04T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-03-04T02:38:57.520Z","numfield":30,"strfield":"foo54"},{"datefield":"2023-02-04T02:38:57.520Z","numfield":56,"strfield":"bar23"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}
{"id":3,"val_json":{"array":["g","h","i"],"date":"2023-02-02T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-02-02T02:38:57.520Z","numfield":28,"strfield":"foo3"},{"datefield":"2023-02-02T02:38:57.520Z","numfield":38,"strfield":"bar"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}
注意:
OCI 对象存储源类型的有效接收器类型为nosqldb
和 nosqldb_cloud
。
源配置模板
"source" : {
"type" : "object_storage_oci",
"format" : "json",
"endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
"namespace" : "<OCI Object Storage namespace>",
"bucket" : "<bucket name>",
"prefix" : "<object prefix>",
"schemaInfo" : {
"schemaObject" : "<object name>"
},
"credentials" : "</path/to/oci/config/file>",
"credentialsProfile" : "<profile name in oci config file>",
"useInstancePrincipal" : <true|false>,
"useDelegationToken" : <true|false>
}
源参数
公共配置参数
- 类型
使用
"type" : "object_storage_oci"
- 格式
使用
"format" : "json"
- endpoint示例:
-
区域 ID:
"endpoint" : "us-ashburn-1"
-
URL 格式:
"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"
-
- 名称空间
示例:
"namespace" : "my-namespace"
- 存储桶
示例:
"bucket" : "my-bucket"
- 前缀示例:
"prefix" : "my_table/Data/000000.json"
(仅迁移000000.json
)"prefix" : "my_table/Data"
(使用前缀my_table/Data
迁移所有对象)
- 身份证明示例:
"credentials" : "/home/user/.oci/config"
"credentials" : "/home/user/security/config"
- credentialsProfile示例:
"credentialsProfile" : "DEFAULT"
"credentialsProfile" : "ADMIN_USER"
- useInstancePrincipal
示例:
"useInstancePrincipal" : true
- useDelegationToken
示例:
"useDelegationToken" : true
注意:
仅当从 Cloud Shell 运行 NoSQL Database Migrator 时,才支持使用委派令牌进行验证。
唯一配置参数
schemaInfo
-
用途:指定要迁移的源数据的方案。此方案传递到 NoSQL 池。
- 数据类型:对象
- 必需 (Y/N): N
schemaInfo.schemaObject
-
用途:指定存储桶中存储要迁移数据的 NoSQL 表方案定义的目标文件的名称。
- 数据类型:字符串
- 必需 (Y/N): Y
-
示例:
"schemaInfo": { "schemaObject": "mytable/Schema/schema.ddl" },
MongoDB 格式的 JSON 文件
下面显示了作为 NoSQL Database Migrator 源的 MongoDB 格式 JSON 文件的配置文件格式。
您可以通过在源配置模板中指定文件或目录来迁移 MongoDB 导出的 JSON 数据。
MongoDB 支持两种类型的文件 JSON 格式扩展: Canonical mode 和 Relaxed mode 。您可以在 Canonical 或 Relaxed 模式下提供使用 mongoexport 工具生成的 MongoDB 格式的 JSON 文件。NoSQL 数据库迁移程序支持两种模式进行迁移。
有关 MongoDB 扩展 JSON (v2) 文件的更多信息,请参见 mongoexport_formats 。
有关生成 MongoDB 格式的 JSON 文件的详细信息,请参阅 mongoexport 以了解更多信息。
{"_id":0,"name":"Aimee Zank","scores":[{"score":1.463179736705023,"type":"exam"},{"score":11.78273309957772,"type":"quiz"},{"score":35.8740349954354,"type":"homework"}]}
{"_id":1,"name":"Aurelia Menendez","scores":[{"score":60.06045071030959,"type":"exam"},{"score":52.79790691903873,"type":"quiz"},{"score":71.76133439165544,"type":"homework"}]}
{"_id":2,"name":"Corliss Zuk","scores":[{"score":67.03077096065002,"type":"exam"},{"score":6.301851677835235,"type":"quiz"},{"score":66.28344683278382,"type":"homework"}]}
{"_id":3,"name":"Bao Ziglar","scores":[{"score":71.64343899778332,"type":"exam"},{"score":24.80221293650313,"type":"quiz"},{"score":42.26147058804812,"type":"homework"}]}
{"_id":4,"name":"Zachary Langlais","scores":[{"score":78.68385091304332,"type":"exam"},{"score":90.2963101368042,"type":"quiz"},{"score":34.41620148042529,"type":"homework"}]}
源配置模板
"source": {
"type": "file",
"format": "mongodb_json",
"dataPath": "</path/to/json/[file|dir]>",
"schemaInfo": {
"schemaPath": "</path/to/schema/file>"
}
}
源参数
公共配置参数
唯一配置参数
dataPath
-
用途:指定包含要迁移的 MongoDB 导出的 JSON 数据的文件或目录的绝对路径。
您可以提供使用 mongoexport 工具生成的 MongoDB 格式的 JSON 文件。
如果指定目录,NoSQL Database Migrator 将标识该目录中具有
.json
扩展名的所有文件以进行迁移。不支持子目录。您必须确保此数据与接收器中定义的 NoSQL 表方案匹配。 - 数据类型:字符串
- 必需 (Y/N): Y
-
示例:
-
指定 MongoDB 格式的 JSON 文件
"dataPath" : "/home/user/sample.json"
-
指定目录
"dataPath" : "/home/user"
-
schemaInfo
-
用途:指定要迁移的源数据的方案。此方案传递到 NoSQL 池。
- 数据类型:对象
- 必需 (Y/N): N
schemaInfo.schemaPath
-
用途:指定包含要迁移的 NoSQL 表的 DDL 语句的方案定义文件的绝对路径。
- 数据类型:字符串
- 必需 (Y/N): Y
-
示例:
"schemaInfo" : { "schemaPath" : "/home/user/mytable/Schema/schema.ddl" }
MongoDB - OCI 对象存储存储桶中的格式化 JSON 文件
下面显示了作为 NoSQL Database Migrator 源的 OCI 对象存储存储桶中 MongoDB 格式 JSON 文件的配置文件格式。
您可以通过在源配置模板中指定存储桶的名称,迁移 OCI 对象存储存储桶中的 MongoDB 导出的 JSON 数据。
使用 mongoexport 实用程序提取 MongoDB 中的数据,并将其上载到 OCI 对象存储桶。有关更多信息,请参见 mongoexport 。MongoDB 支持两种类型的文件 JSON 格式扩展: Canonical mode 和 Relaxed mode 。OCI Object Storage 存储桶支持两种格式。
{"_id":0,"name":"Aimee Zank","scores":[{"score":1.463179736705023,"type":"exam"},{"score":11.78273309957772,"type":"quiz"},{"score":35.8740349954354,"type":"homework"}]}
{"_id":1,"name":"Aurelia Menendez","scores":[{"score":60.06045071030959,"type":"exam"},{"score":52.79790691903873,"type":"quiz"},{"score":71.76133439165544,"type":"homework"}]}
{"_id":2,"name":"Corliss Zuk","scores":[{"score":67.03077096065002,"type":"exam"},{"score":6.301851677835235,"type":"quiz"},{"score":66.28344683278382,"type":"homework"}]}
{"_id":3,"name":"Bao Ziglar","scores":[{"score":71.64343899778332,"type":"exam"},{"score":24.80221293650313,"type":"quiz"},{"score":42.26147058804812,"type":"homework"}]}
{"_id":4,"name":"Zachary Langlais","scores":[{"score":78.68385091304332,"type":"exam"},{"score":90.2963101368042,"type":"quiz"},{"score":34.41620148042529,"type":"homework"}]}
注意:
OCI 对象存储源类型的有效接收器类型为nosqldb
和 nosqldb_cloud
。
源配置模板
"source" : {
"type" : "object_storage_oci",
"format" : "mongodb_json",
"endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
"namespace" : "<OCI Object Storage namespace>",
"bucket" : "<bucket name>",
"prefix" : "<object prefix>",
"schemaInfo" : {
"schemaObject" : "<object name>"
},
"credentials" : "</path/to/oci/config/file>",
"credentialsProfile" : "<profile name in oci config file>",
"useInstancePrincipal" : <true|false>
}
源参数
公共配置参数
- 类型
使用
"type" : "object_storage_oci"
- 格式
使用
"format" : "mongodb_json"
- endpoint示例:
-
区域 ID:
"endpoint" : "us-ashburn-1"
-
URL 格式:
"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"
-
- 名称空间
示例:
"namespace" : "my-namespace"
- 倾盆大雨
示例:
"bucket" : "my-bucket"
- 前缀示例:
"prefix" : "mongo_export/Data/table.json"
(仅迁移table.json
)"prefix" : "mongo_export/Data"
(使用前缀mongo_export/Data
迁移所有对象)
注意:
如果未提供任何值,则会迁移存储桶中存在的所有对象。 - 身份证明示例:
"credentials" : "/home/user/.oci/config"
"credentials" : "/home/user/security/config"
- credentialsProfile示例:
"credentialsProfile" : "DEFAULT"
"credentialsProfile" : "ADMIN_USER"
- useInstancePrincipal
示例:
"useInstancePrincipal" : true
唯一配置参数
schemaInfo
-
用途:指定要迁移的源数据的方案。此方案传递到 NoSQL 池。
- 数据类型:对象
- 必需 (Y/N): N
schemaInfo.schemaObject
-
用途:指定存储桶中存储要迁移数据的 NoSQL 表方案定义的目标文件的名称。
- 数据类型:字符串
- 必需 (Y/N): Y
-
示例:
"schemaInfo": { "schemaObject": "mytable/Schema/schema.ddl" }
DynamoDB - 格式化的 JSON 文件存储在 AWS S3 中
下面显示了作为 NoSQL Database Migrator 源的 AWS S3 中 DynamoDB 格式 JSON 文件的配置文件格式。
您可以通过在源配置模板中指定路径,从 AWS S3 存储迁移包含 DynamoDB 导出的 JSON 数据的文件。
{"Item":{"Id":{"N":"101"},"Phones":{"L":[{"L":[{"S":"555-222"},{"S":"123-567"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"570004"},"Street":{"S":"21 main"},"DoorNum":{"N":"201"},"City":{"S":"London"}}},"FirstName":{"S":"Fred"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"Smith"},"FavColors":{"SS":["Red","Green"]},"Age":{"N":"22"}}}
{"Item":{"Id":{"N":"102"},"Phones":{"L":[{"L":[{"S":"222-222"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"560014"},"Street":{"S":"32 main"},"DoorNum":{"N":"1024"},"City":{"S":"Wales"}}},"FirstName":{"S":"John"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"White"},"FavColors":{"SS":["Blue"]},"Age":{"N":"48"}}}
必须将 DynamoDB 表导出到 AWS S3 存储,如将 DynamoDB 表数据导出到 Amazon S3 中指定的那样。
AWS S3 中存储的 DynamoDB 格式 JSON 的有效 sink 类型为 nosqldb
和 nosqldb_cloud
。
"source" : {
"type" : "aws_s3",
"format" : "dynamodb_json",
"s3URL" : "<S3 object url>",
"credentials" : "</path/to/aws/credentials/file>",
"credentialsProfile" : <"profile name in aws credentials file">
}
源参数
公共配置参数
- 类型
使用
"type" : "aws_s3"
- 格式
使用
"format" : "dynamodb_json"
注意:
如果 type 参数的值为aws_s3
,则格式必须为dynamodb_json
。
唯一配置参数
s3URL
- 用途:指定存储在 AWS S3 中的导出 DynamoDB 表的 URL。您可以从 AWS S3 控制台获取此 URL。有效的 URL 格式为
https://<bucket-name>.<s3_endpoint>/<prefix>
。NoSQL 数据库迁移程序将在导入期间在前缀中查找json.gz
文件。注意:
必须按 Exporting DynamoDB table data to Amazon S3 中指定的方式导出 DynamoDB 表。 - 数据类型:字符串
- 必需 (Y/N): Y
- 示例:
https://my-bucket.s3.ap-south-1.amazonaws.com/AWSDynamoDB/01649660790057-14f642be
Credential (身份证明)
- 用途:指定包含 AWS 身份证明的文件的绝对路径。如果未指定,则默认为
$HOME/.aws/credentials
。有关凭证文件的更多详细信息,请参见 Configuration and credential file settings 。 - 数据类型:字符串
- 必需 (Y/N): N
- 示例:
"credentials" : "/home/user/.aws/credentials" "credentials" : "/home/user/security/credentials
注意:
NoSQL 数据库迁移程序不记录任何凭证信息。必须正确保护凭证文件免受未经授权的访问。
credentialsProfile
- 用途:用于连接到 AWS S3 的 AWS 身份证明文件中的概要信息的名称。用户帐户凭证称为配置文件。如果未指定此值,NoSQL Database Migrator 将使用
default
配置文件。有关凭证文件的更多详细信息,请参见 Configuration and credential file settings 。 - 数据类型:字符串
- 必需 (Y/N): N
- 示例:
"credentialsProfile" : "default" "credentialsProfile" : "test"
DynamoDB 格式的 JSON 文件
下面显示了作为 NoSQL Database Migrator 源的 DynamoDB 格式 JSON 文件的配置文件格式。
通过在源配置模板中指定路径,可以从文件系统迁移包含 DynamoDB 导出的 JSON 数据的文件或目录。
{"Item":{"Id":{"N":"101"},"Phones":{"L":[{"L":[{"S":"555-222"},{"S":"123-567"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"570004"},"Street":{"S":"21 main"},"DoorNum":{"N":"201"},"City":{"S":"London"}}},"FirstName":{"S":"Fred"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"Smith"},"FavColors":{"SS":["Red","Green"]},"Age":{"N":"22"}}}
{"Item":{"Id":{"N":"102"},"Phones":{"L":[{"L":[{"S":"222-222"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"560014"},"Street":{"S":"32 main"},"DoorNum":{"N":"1024"},"City":{"S":"Wales"}}},"FirstName":{"S":"John"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"White"},"FavColors":{"SS":["Blue"]},"Age":{"N":"48"}}}
必须将导出的 DynamoDB 表数据从 AWS S3 存储复制到本地挂载的文件系统。
DynamoDB JSON 文件的有效 sink 类型为 nosqldb
和 nosqldb_cloud
。
"source" : {
"type" : "file",
"format" : "dynamodb_json",
"dataPath" : "<path/to/[file|dir]/containing/exported/DDB/tabledata>"
}
dataPath
- 用途:指定包含导出的 DynamoDB 表数据的文件或目录的绝对路径。必须将导出的 DynamoDB 表数据从 AWS S3 复制到本地挂载的文件系统。您必须确保此数据与接收器中定义的 NoSQL 表方案匹配。如果指定目录,NoSQL Database Migrator 将标识该目录中扩展名为
.json.gz
的所有文件以及data
子目录。 - 数据类型:字符串
- 必需 (Y/N): Y
- 示例:
-
指定文件
"dataPath" : "/home/user/AWSDynamoDB/01639372501551-bb4dd8c3/data/zclclwucjy6v5mkefvckxzhfvq.json.gz"
- 指定目录
"dataPath" : "/home/user/AWSDynamoDB/01639372501551-bb4dd8c3"
-
Oracle NoSQL Database
下面显示了 Oracle NoSQL Database 作为 NoSQL Database Migrator 源的配置文件格式。
通过在源配置模板中指定表名,可以从 Oracle NoSQL Database 迁移表。
{"id":20,"firstName":"Jane","lastName":"Smith","otherNames":[{"first":"Jane","last":"teacher"}],"age":25,"income":55000,"address":{"city":"San Jose","number":201,"phones":[{"area":608,"kind":"work","number":6538955},{"area":931,"kind":"home","number":9533341},{"area":931,"kind":"mobile","number":9533382}],"state":"CA","street":"Atlantic Ave","zip":95005},"connections":[40,75,63],"expenses":null}
{"id":10,"firstName":"John","lastName":"Smith","otherNames":[{"first":"Johny","last":"chef"}],"age":22,"income":45000,"address":{"city":"Santa Cruz","number":101,"phones":[{"area":408,"kind":"work","number":4538955},{"area":831,"kind":"home","number":7533341},{"area":831,"kind":"mobile","number":7533382}],"state":"CA","street":"Pacific Ave","zip":95008},"connections":[30,55,43],"expenses":null}
{"id":30,"firstName":"Adam","lastName":"Smith","otherNames":[{"first":"Adam","last":"handyman"}],"age":45,"income":75000,"address":{"city":"Houston","number":301,"phones":[{"area":618,"kind":"work","number":6618955},{"area":951,"kind":"home","number":9613341},{"area":981,"kind":"mobile","number":9613382}],"state":"TX","street":"Indian Ave","zip":95075},"connections":[60,45,73],"expenses":null}
源配置模板
"source" : {
"type": "nosqldb",
"storeName" : "<store name>",
"helperHosts" : ["hostname1:port1","hostname2:port2,..."],
"table" : "<fully qualified table name>",
"includeTTL": <true|false>,
"security" : "</path/to/store/security/file>",
"requestTimeoutMs" : 5000
}
源参数
公共配置参数
- 类型
使用
"type" : "nosqldb"
- 安全
示例:
"security" : "/home/user/client.credentials"
基于口令文件的验证的安全文件内容示例:
oracle.kv.password.noPrompt=true oracle.kv.auth.username=admin oracle.kv.auth.pwdfile.file=/home/nosql/login.passwd oracle.kv.transport=ssl oracle.kv.ssl.trustStore=/home/nosql/client.trust oracle.kv.ssl.protocols=TLSv1.2 oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL)
基于 wallet 的验证的安全文件内容示例:
oracle.kv.password.noPrompt=true oracle.kv.auth.username=admin oracle.kv.auth.wallet.dir=/home/nosql/login.wallet oracle.kv.transport=ssl oracle.kv.ssl.trustStore=/home/nosql/client.trust oracle.kv.ssl.protocols=TLSv1.2 oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL)
- requestTimeoutMs
示例:
"requestTimeoutMs" : 5000
唯一配置参数
storeName
-
用途:Oracle NoSQL Database 存储的名称。
- 数据类型:字符串
- 必需 (Y/N): Y
- 示例:
"storeName" : "kvstore"
helperHosts
-
用途:以
hostname:port
格式列出的主机和注册表端口对。使用逗号分隔列表中的每个项。必须指定至少一个辅助主机。 - 数据类型:字符串数组
- 必需 (Y/N): Y
- 示例:
"helperHosts" : ["localhost:5000","localhost:6000"]
table (表)
-
用途:要从中迁移数据的全限定表名。
格式:
[namespace_name:]<table_name>
如果表位于 DEFAULT 名称空间中,则可以省略
namespace_name
。该表必须存在于门店中。 - 数据类型:字符串
- 必需 (Y/N): Y
- 示例:
-
使用 DEFAULT 名称空间
"table" :"mytable"
-
使用非缺省名称空间
"table" : "mynamespace:mytable"
-
指定子表
"table" : "mytable.child"
-
includeTTL
-
用途:指定在导出 Oracle NoSQL Database 表时是否包括表行的 TTL 元数据。如果设置为 true,则行的 TTL 数据也会包括在来源提供的数据中。TTL 存在于与每一行关联的
_metadata
JSON 对象中。每行的失效时间将导出为自 UNIX 时代 (Jan 1st,1970) 以来的毫秒数。如果未指定此参数,则默认为
false
。仅将 TTL 的到期值为正的行作为导出行的一部分包括在内。如果某行未过期(即 TTL=0),则不会显式包括其 TTL 元数据。例如,如果 ROW1 在 2021-10-19 00:00:00 到期,而 ROW2 未过期,则导出的数据如下所示://ROW1 { "id" : 1, "name" : "abc", "_metadata" : { "expiration" : 1634601600000 } } //ROW2 { "id" : 2, "name" : "xyz" }
- 数据类型:布尔型
- 必需 (Y/N): N
- 示例:
"includeTTL" : true
Oracle NoSQL Database Cloud Service
下面显示了 Oracle NoSQL Database Cloud Service 作为 NoSQL Database Migrator 源的配置文件格式。
可以通过指定表驻留在源配置模板中的区间的名称或 OCID,从 Oracle NoSQL Database Cloud Service 迁移表。
{"id":20,"firstName":"Jane","lastName":"Smith","otherNames":[{"first":"Jane","last":"teacher"}],"age":25,"income":55000,"address":{"city":"San Jose","number":201,"phones":[{"area":608,"kind":"work","number":6538955},{"area":931,"kind":"home","number":9533341},{"area":931,"kind":"mobile","number":9533382}],"state":"CA","street":"Atlantic Ave","zip":95005},"connections":[40,75,63],"expenses":null}
{"id":10,"firstName":"John","lastName":"Smith","otherNames":[{"first":"Johny","last":"chef"}],"age":22,"income":45000,"address":{"city":"Santa Cruz","number":101,"phones":[{"area":408,"kind":"work","number":4538955},{"area":831,"kind":"home","number":7533341},{"area":831,"kind":"mobile","number":7533382}],"state":"CA","street":"Pacific Ave","zip":95008},"connections":[30,55,43],"expenses":null}
{"id":30,"firstName":"Adam","lastName":"Smith","otherNames":[{"first":"Adam","last":"handyman"}],"age":45,"income":75000,"address":{"city":"Houston","number":301,"phones":[{"area":618,"kind":"work","number":6618955},{"area":951,"kind":"home","number":9613341},{"area":981,"kind":"mobile","number":9613382}],"state":"TX","street":"Indian Ave","zip":95075},"connections":[60,45,73],"expenses":null}
源配置模板
"source" : {
"type" : "nosqldb_cloud",
"endpoint" : "<Oracle NoSQL Cloud Service endpoint URL or region ID>",
"table" : "<table name>",
"compartment" : "<OCI compartment name or id>",
"credentials" : "<path/to/oci/credential/file>",
"credentialsProfile" : "<profile name in oci config file>",
"useInstancePrincipal" : <true|false>,
"useDelegationToken" : <true|false>,
"readUnitsPercent" : <table readunits percent>,
"includeTTL": <true|false>,
"requestTimeoutMs" : <timeout in milli seconds>
}
源参数
公共配置参数
- 类型
使用
"type" : "nosqldb_cloud"
- endpoint示例:
-
区域 ID:
"endpoint" : "us-ashburn-1"
-
URL 格式:
"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"
-
- 身份证明示例:
"credentials" : "/home/user/.oci/config"
"credentials" : "/home/user/security/config"
- credentialsProfile示例:
"credentialsProfile" : "DEFAULT"
"credentialsProfile" : "ADMIN_USER"
- useInstancePrincipal
示例:
"useInstancePrincipal" : true
- useDelegationToken
示例:
"useDelegationToken" : true
注意:
仅当从 Cloud Shell 运行 NoSQL Database Migrator 时,才支持使用委派令牌进行验证。 - requestTimeoutMs
示例:
"requestTimeoutMs" : 5000
唯一配置参数
table (表)
-
用途:要从中迁移数据的表的名称。
- 数据类型:字符串
- 必需 (Y/N): Y
- 示例:
- 指定表
"table" : "myTable"
- 指定子表
"table" : "mytable.child"
- 指定表
区间
-
用途:指定表所在区间的名称或 OCID。
如果未提供任何值,则缺省为 root 区间。
您可以在 OCI 云控制台的“监管”下的“区间浏览器”窗口中找到区间的 OCID。
- 数据类型:字符串
- 必需 (Y/N): Y(如果表不在租户的根区间中)或者 useInstancePrincipal 参数设置为 true 时。
注意:
如果 useInstancePrincipal 参数设置为 true,则区间必须指定区间 OCID,而不是名称。 - 示例:
-
划分名称
"compartment" : "mycompartment"
-
符合其父区间的限定区间名称
"compartment" : "parent.childcompartment"
-
未提供值。默认为根区间。
"compartment": ""
-
区间 OCID
"compartment" : "ocid1.tenancy.oc1...4ksd"
-
readUnitsPercent
-
用途:迁移 NoSQL 表时要使用的表读取单位百分比。
默认值为 90。有效范围是介于 1 到 100 之间的任意整数。迁移数据所需的时间量与此属性直接成正比。最好为迁移活动增加表的读取吞吐量。迁移过程完成后,您可以降低读取吞吐量。
要了解每日吞吐量更改限制,请参阅 Oracle NoSQL Database Cloud Service 文档中的云限制。
请参阅Oracle NoSQL Database Migrator 故障排除,了解如何使用此属性来提高数据迁移速度。
- 数据类型:整数
- 必需 (Y/N): N
- 示例:
"readUnitsPercent" : 90
includeTTL
-
用途:指定在导出 Oracle NoSQL Database Cloud Service 表时是否包括表行的 TTL 元数据。如果设置为 true,则行的 TTL 数据也会包括在来源提供的数据中。TTL 存在于与每一行关联的
_metadata
JSON 对象中。每行的失效时间将导出为自 UNIX 时代 (Jan 1st,1970) 以来的毫秒数。如果未指定此参数,则默认为
false
。仅将 TTL 的到期值为正的行作为导出行的一部分包括在内。如果某行未过期(即 TTL=0),则不会显式包括其 TTL 元数据。例如,如果 ROW1 在 2021-10-19 00:00:00 到期,而 ROW2 未过期,则导出的数据如下所示://ROW1 { "id" : 1, "name" : "abc", "_metadata" : { "expiration" : 1634601600000 } } //ROW2 { "id" : 2, "name" : "xyz" }
- 数据类型:布尔型
- 必需 (Y/N): N
- 示例:
"includeTTL" : true
CSV 文件来源
CSV 文件作为 NoSQL Database Migrator 源的配置文件格式如下所示。CSV 文件必须符合 RFC4180
格式。
您可以通过在源配置模板中指定文件名或目录来迁移 CSV 文件或包含 CSV 数据的目录。
1,"Computer Science","San Francisco","2500"
2,"Bio-Technology","Los Angeles","1200"
3,"Journalism","Las Vegas","1500"
4,"Telecommunication","San Francisco","2500"
源配置模板
"source" : {
"type" : "file",
"format" : "csv",
"dataPath": "</path/to/a/csv/[file|dir]>",
"hasHeader" : <true | false>,
"columns" : ["column1", "column2", ....],
"csvOptions": {
"encoding": "<character set encoding>",
"trim": "<true | false>"
}
}
源参数
公共配置参数
唯一配置参数
datapath
-
用途:指定包含要迁移的 CSV 数据的文件或目录的绝对路径。如果指定目录,NoSQL Database Migrator 将导入该目录中扩展名为
.csv
或.CSV
的所有文件。所有 CSV 文件都复制到单个表中,但不会按任何特定顺序复制。CSV 文件必须符合
RFC4180
标准。您必须确保每个 CSV 文件中的数据与 sink 表中定义的 NoSQL 数据库表方案匹配。不支持子目录。 - 数据类型:字符串
- 必需 (Y/N): Y
-
示例:
-
指定 CSV 文件
"dataPath" : "/home/user/sample.csv"
-
指定目录
"dataPath" : "/home/user"
-
注意:
CSV 文件只能包含标量值。不支持导入包含复杂类型(如 MAP、RECORD、ARRAY 和 JSON)的 CSV 文件。NoSQL Database Migrator 工具不会检查输入 CSV 文件中数据的正确性。NoSQL 数据库迁移程序工具支持导入符合 RFC4180
格式的 CSV 数据。包含不符合 RFC4180
标准的数据的 CSV 文件可能无法正确复制,也可能导致错误。如果输入数据损坏,则 NoSQL Database Migrator 工具不会对 CSV 记录进行语法分析。如果在迁移过程中遇到任何错误,NoSQL Database Migrator 工具会记录有关失败的输入记录的信息,以便进行调试和提供信息。有关更多详细信息,请参阅 Using Oracle NoSQL Data Migrator 中的 Logging Migrator Progress 。
hasHeader
-
用途:指定 CSV 文件是否具有标题。如果将此项设置为
true
,则忽略第一行。如果将其设置为false
,则第一行被视为 CSV 记录。默认值为false
。 - 数据类型:布尔型
- 必需 (Y/N): N
-
示例:
"hasHeader" : "false"
列
-
用途:指定 NoSQL 数据库表列名的列表。列名的顺序指示 CSV 文件字段与对应的 NoSQL 数据库表列的映射。如果输入 CSV 文件列的顺序与现有或新创建的 NoSQL 数据库表列不匹配,则可以使用此参数映射排序。此外,导入到具有身份列的表时,可以在
columns
参数中跳过身份列名。注意:
- 如果 NoSQL Database 表包含 CSV 文件中不可用的附加列,则使用 NoSQL Database 表中定义的默认值更新缺少的列的值。如果未提供默认值,则在迁移期间插入 NULL 值。有关默认值的详细信息,请参阅 SQL 参考指南中的数据类型定义部分。
- 如果 CSV 文件具有 NoSQL 数据库表中未定义的附加列,则将忽略附加列信息。
- 如果 CSV 记录中的任何值为空,则将其设置为 NoSQL 数据库表中相应列的默认值。如果未提供默认值,则在迁移期间插入 NULL 值。
- 数据类型:字符串数组
- 必需 (Y/N): N
-
示例:
"columns" : ["table_column_1", "table_column_2"]
csvOptions
-
用途:指定 CSV 文件的格式设置选项。提供 CSV 文件的字符集编码格式,并选择是否截去空格。
- 数据类型:对象
- 必需 (Y/N): N
csvOptions.encoding
-
用途:指定用于对 CSV 文件进行解码的字符集。默认值为
UTF-8
。支持的字符集为US-ASCII, ISO-8859-1, UTF-8,
和UTF-16
。 - 数据类型:字符串
- 必需 (Y/N): N
-
示例:
"encoding" : "UTF-8"
csvOptions.trim
-
用途:指定是否必须截去 CSV 字段值的前导和尾随空白。默认值为
false
。 - 数据类型:布尔型
- 必需 (Y/N): N
-
示例:
"trim" : "true"
OCI 对象存储桶中的 CSV 文件
下面显示了作为 NoSQL 数据库迁移程序源的 OCI 对象存储存储桶中 CSV 文件的配置文件格式。CSV 文件必须符合 RFC4180
格式。
您可以通过在源配置模板中指定存储桶的名称来迁移 OCI 对象存储存储桶中的 CSV 文件。
1,"Computer Science","San Francisco","2500"
2,"Bio-Technology","Los Angeles","1200"
3,"Journalism","Las Vegas","1500"
4,"Telecommunication","San Francisco","2500"
注意:
OCI 对象存储源类型的有效接收器类型为nosqldb
和 nosqldb_cloud
。
源配置模板
"source" : {
"type" : "object_storage_oci",
"format" : "csv",
"endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
"namespace" : "<OCI Object Storage namespace>",
"bucket" : "<bucket name>",
"prefix" : "<object prefix>",
"credentials" : "</path/to/oci/config/file>",
"credentialsProfile" : "<profile name in oci config file>",
"useInstancePrincipal" : <true|false>,
"hasHeader" : <true | false>,
"columns" : ["column1", "column2", ....],
"csvOptions" : {
"encoding" : "<character set encoding>",
"trim" : <true | false>
}
}
源参数
公共配置参数
- 类型
使用
"type" : "object_storage_oci"
- 格式
使用
"format" : "csv"
- endpoint示例:
-
区域 ID:
"endpoint" : "us-ashburn-1"
-
URL 格式:
"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"
-
- 名称空间
示例:
"namespace" : "my-namespace"
- 倾盆大雨
示例:
"bucket" : "my-bucket"
注意:
- NoSQL Database Migrator 将导入具有 .
csv
或.CSV
扩展名对象中的所有文件,并按相同顺序将其复制到单个表中。 -
CSV 文件只能包含标量值。不支持导入包含复杂类型(如 MAP、RECORD、ARRAY 和 JSON)的 CSV 文件。NoSQL Database Migrator 工具不会检查输入 CSV 文件中数据的正确性。NoSQL 数据库迁移程序工具支持导入符合
RFC4180
格式的 CSV 数据。包含不符合RFC4180
标准的数据的 CSV 文件可能无法正确复制,也可能导致错误。如果输入数据损坏,则 NoSQL Database Migrator 工具不会对 CSV 记录进行语法分析。如果在迁移过程中遇到任何错误,NoSQL Database Migrator 工具会记录有关失败的输入记录的信息,以便进行调试和提供信息。有关更多详细信息,请参阅 Using Oracle NoSQL Data Migrator 中的 Logging Migrator Progress 。
- NoSQL Database Migrator 将导入具有 .
- 前缀示例:
"prefix" : "my_table/Data/000000.csv"
(仅迁移000000.csv
)"prefix" : "my_table/Data"
(使用前缀my_table/Data
迁移所有对象)
- 身份证明示例:
"credentials" : "/home/user/.oci/config"
"credentials" : "/home/user/security/config"
- credentialsProfile示例:
"credentialsProfile" : "DEFAULT"
"credentialsProfile" : "ADMIN_USER"
- useInstancePrincipal
示例:
"useInstancePrincipal" : true
唯一配置参数
hasHeader
-
用途:指定 CSV 文件是否具有标题。如果将此项设置为
true
,则忽略第一行。如果将其设置为false
,则第一行被视为 CSV 记录。默认值为false
。 - 数据类型:布尔型
- 必需 (Y/N): N
-
示例:
"hasHeader" : "false"
列
-
用途:指定 NoSQL 数据库表列名的列表。列名的顺序指示 CSV 文件字段与对应的 NoSQL 数据库表列的映射。如果输入 CSV 文件列的顺序与现有或新创建的 NoSQL 数据库表列不匹配,则可以使用此参数映射排序。此外,导入到具有身份列的表时,可以在
columns
参数中跳过身份列名。注意:
- 如果 NoSQL Database 表包含 CSV 文件中不可用的附加列,则使用 NoSQL Database 表中定义的默认值更新缺少的列的值。如果未提供默认值,则在迁移期间插入 NULL 值。有关默认值的详细信息,请参阅 SQL 参考指南中的数据类型定义部分。
- 如果 CSV 文件具有 NoSQL 数据库表中未定义的附加列,则将忽略附加列信息。
- 如果 CSV 记录中的任何值为空,则将其设置为 NoSQL 数据库表中相应列的默认值。如果未提供默认值,则在迁移期间插入 NULL 值。
- 数据类型:字符串数组
- 必需 (Y/N): N
-
示例:
"columns" : ["table_column_1", "table_column_2"]
csvOptions
-
用途:指定 CSV 文件的格式设置选项。提供 CSV 文件的字符集编码格式,并选择是否截去空格。
- 数据类型:对象
- 必需 (Y/N): N
csvOptions.encoding
-
用途:指定用于对 CSV 文件进行解码的字符集。默认值为
UTF-8
。支持的字符集为US-ASCII, ISO-8859-1, UTF-8,
和UTF-16
。 - 数据类型:字符串
- 必需 (Y/N): N
-
示例:
"encoding" : "UTF-8"
csvOptions.trim
-
用途:指定是否必须截去 CSV 字段值的前导和尾随空白。默认值为
false
。 - 数据类型:布尔型
- 必需 (Y/N): N
-
示例:
"trim" : "true"
Sink 配置模板
了解每个有效接收器的接收器配置文件格式以及每个配置参数的用途。
主题
以下主题介绍了 Oracle NoSQL Database Migrator 引用的接收器配置模板,用于将数据从有效源复制到给定接收器。
- JSON 文件接收器
指定的 JSON 文件。
- Parquet 文件
指定目录中的语法分析文件。
- OCI 对象存储桶中的 JSON 文件
指定 OCI 对象存储桶中的 JSON 文件。
- OCI 对象存储桶中的语法分析文件
指定 OCI 对象存储桶中的语法分析文件。
- Oracle NoSQL Database
Oracle NoSQL Database 中的指定表。
- Oracle NoSQL Database Cloud Service
Oracle NoSQL Database Cloud Service 中的指定表。
JSON 文件接收器
下面显示了作为 NoSQL Database Migrator 汇的 JSON 文件的配置文件格式。
Sink 配置模板
"sink" : {
"type" : "file",
"format" : "json",
"dataPath": "</path/to/a/file>",
"schemaPath" : "<path/to/a/file>",
"pretty" : <true|false>,
"useMultiFiles" : <true|false>,
"chunkSize" : <size in MB>
}
Sink 参数
公共配置参数
- 类型
使用
"type" : "file"
- 格式
使用
"format" : "json"
- chunkSize
示例:
"chunkSize" : 40
注意:
仅当 useMultiFiles 参数设置为 true 时,此参数才适用。
唯一配置参数
dataPath
-
用途:指定将以 JSON 格式复制源数据的文件的绝对路径。
如果指定的数据路径中不存在该文件,则 NoSQL Database Migrator 会创建该文件。如果存在,NoSQL 数据库迁移程序将使用源数据覆盖其内容。
您必须确保数据路径中的父目录对指定文件有效。
注意:
如果 useMultiFiles 参数设置为 true,则指定目录的路径,否则指定文件的路径。 - 数据类型:字符串
- 必需 (Y/N): Y
-
示例:
- useMultiFiles 参数设置为 true
"dataPath" :"
/home/user/data
" - 未指定 useMultiFiles 参数或将其设置为 false
"dataPath" :"
/home/user/sample.json
"
- useMultiFiles 参数设置为 true
schemaPath
-
用途:指定文件的绝对路径以写入源提供的表方案信息。
如果未定义此值,则不会将源方案信息迁移到接收器。如果指定了此值,迁移程序实用程序会将源表的方案写入此处指定的文件中。
方案信息将写入此文件中每行一个 DDL 命令。如果指定的数据路径中不存在该文件,则 NoSQL Database Migrator 会创建该文件。如果已存在,NoSQL Database Migrator 将使用源数据覆盖其内容。您必须确保数据路径中的父目录对指定文件有效。
- 数据类型:字符串
- 必需 (Y/N): N
-
示例:
"schemaPath" : "/home/user/schema_file"
美丽
-
用途:指定是否美化 JSON 输出以提高可读性。
如果未指定,则默认为 false。
- 数据类型:布尔型
- 必需 (Y/N): N
-
示例:
"pretty" : true
useMultiFiles
-
用途:指定在将源数据迁移到文件时是否将 NoSQL 表数据拆分成多个文件。
如果未指定,则默认为 false。
如果设置为 true,则在将源数据迁移到文件时,NoSQL 表数据会拆分为多个较小的文件。例如,
<chunk>.json
,其中 chunk=000000、000001、000002 等。dataPath |--000000.json |--000001.json
- 数据类型:布尔型
- 必需 (Y/N): N
-
示例:
"useMultiFiles" : true
参数文件
下面显示了作为 NoSQL Database Migrator 汇的 Parquet 文件的配置文件格式。
Sink 配置模板
"sink" : {
"type" : "file",
"format" : "parquet",
"dataPath": "</path/to/a/dir>",
"chunkSize" : <size in MB>,
"compression": "<SNAPPY|GZIP|NONE>",
"parquetOptions": {
"useLogicalJson": <true|false>,
"useLogicalEnum": <true|false>,
"useLogicalUUID": <true|false>,
"truncateDoubleSpecials": <true|false>
}
}
Sink 参数
公共配置参数
唯一配置参数
dataPath
-
用途:指定用于存储迁移的 NoSQL 表数据的目录的路径。确保目录已存在并且具有读写权限。
- 数据类型:字符串
- 必需 (Y/N): Y
-
示例:
"dataPath" : "/home/user/migrator/my_table"
压缩
-
用途:指定用于压缩 Parquet 数据的压缩类型。有效值为 SNAPPY 、 GZIP 和 NONE 。
如果未指定,它缺省为 SNAPPY 。
- 数据类型:字符串
- 必需 (Y/N): N
-
示例:
"compression" : "GZIP"
parquetOptions
-
用途:指定用于为 NoSQL ENUM、JSON 和 UUID 列选择 Parquet 逻辑类型的选项。
如果未指定此参数,则 NoSQL Database Migrator 会将 ENUM、JSON 和 UUID 列的数据写入字符串。
- 数据类型:对象
- 必需 (Y/N): N
parquetOptions.useLogicalJson
-
用途:指定是否将 NoSQL JSON 列数据写入 Parquet 逻辑 JSON 类型。有关更多信息,请参见 Parquet Logical Type Definitions 。
如果未指定或设置为 false,则 NoSQL Database Migrator 会将 NoSQL JSON 列数据写入字符串。
- 数据类型:布尔型
- 必需 (Y/N): N
-
示例:
"useLogicalJson" : true
parquetOptions.useLogicalEnum
-
用途:指定是否将 NoSQL ENUM 列数据写入 Parquet 逻辑 ENUM 类型。有关更多信息,请参见 Parquet Logical Type Definitions 。
如果未指定或设置为 false,则 NoSQL Database Migrator 会将 NoSQL ENUM 列数据写入字符串。
- 数据类型:布尔型
- 必需 (Y/N): N
-
示例:
"useLogicalEnum" : true
parquetOptions.useLogicalUUID
-
用途:指定是否将 NoSQL UUID 列数据写入 Parquet 逻辑 UUID 类型。有关更多信息,请参见 Parquet Logical Type Definitions 。
如果未指定或设置为 false,则 NoSQL Database Migrator 会将 NoSQL UUID 列数据写入字符串。
- 数据类型:布尔型
- 必需 (Y/N): N
-
示例:
"useLogicalUUID" : true
parquetOptions.truncateDoubleSpecials
-
用途:指定是否截断双 +Infinity、-Infinity 和 NaN 值。
默认情况下,它设置为false
。如果设置为true
,- Positive_Infinity 被截断为 Double.MAX_VALUE。
- NEGATIVE_INFINITY 被截断为 -Double.MAX_VALUE。
- NaN 被截断为 9.9999999999999990E307。
- 数据类型:布尔型
- 必需 (Y/N): N
-
示例:
"truncateDoubleSpecials" : true
OCI 对象存储桶中的 JSON 文件
如下所示,OCI 对象存储存储桶中 JSON 文件的配置文件格式为 NoSQL Database Migrator 汇。
注意:
OCI 对象存储作为接收器的有效源类型为nosqldb
和 nosqldb_cloud
。
Sink 配置模板
"sink" : {
"type" : "object_storage_oci",
"format" : "json",
"endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
"namespace" : "<OCI Object Storage namespace>",
"bucket" : "<bucket name>",
"prefix" : "<object prefix>",
"chunkSize" : <size in MB>,
"pretty" : <true|false>,
"credentials" : "</path/to/oci/config/file>",
"credentialsProfile" : "<profile name in oci config file>",
"useInstancePrincipal" : <true|false>,
"useDelegationToken" : <true|false>
}
Sink 参数
公共配置参数
- 类型
使用
"type" : "object_storage_oci"
- 格式
使用
"format" : "json"
- endpoint示例:
-
区域 ID:
"endpoint" : "us-ashburn-1"
-
URL 格式:
"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"
-
- 名称空间
示例:
"namespace" : "my-namespace"
- 存储桶
示例:
"bucket" : "my-bucket"
- 前缀
方案将迁移到
<prefix>/Schema/schema.ddl
文件,源数据将迁移到<prefix>/Data/<chunk>.json
文件,其中 chunk=000000.json、000001.json 等。示例:"prefix" : "my_export"
"prefix" : "my_export/2021-04-05/"
- chunkSize
示例:
"chunkSize" : 40
- 身份证明示例:
"credentials" : "/home/user/.oci/config"
"credentials" : "/home/user/security/config"
- credentialsProfile示例:
"credentialsProfile" : "DEFAULT"
"credentialsProfile" : "ADMIN_USER"
- useInstancePrincipal
示例:
"useInstancePrincipal" : true
- useDelegationToken
示例:
"useDelegationToken" : true
注意:
仅当从 Cloud Shell 运行 NoSQL Database Migrator 时,才支持使用委派令牌进行验证。
唯一配置参数
pretty
-
用途:指定是否美化 JSON 输出以提高可读性。
如果未指定,则默认为 false。
- 数据类型:布尔型
- 必需 (Y/N): N
-
示例:
"pretty" : true
OCI 对象存储桶中的语法分析文件
OCI 对象存储存储桶中 Parquet 文件的配置文件格式为 NoSQL Database Migrator 汇,如下所示。
注意:
OCI 对象存储源类型的有效源类型为nosqldb
和 nosqldb_cloud
。
Sink 配置模板
"sink" : {
"type" : "object_storage_oci",
"format" : "parquet",
"endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
"namespace" : "<OCI Object Storage namespace>",
"bucket" : "<bucket name>",
"prefix" : "<object prefix>",
"chunkSize" : <size in MB>,
"compression": "<SNAPPY|GZIP|NONE>",
"parquetOptions": {
"useLogicalJson": <true|false>,
"useLogicalEnum": <true|false>,
"useLogicalUUID": <true|false>,
"truncateDoubleSpecials": <true|false>
},
"credentials" : "</path/to/oci/config/file>",
"credentialsProfile" : "<profile name in oci config file>",
"useInstancePrincipal" : <true|false>,
"useDelegationToken" : <true|false>
}
Sink 参数
公共配置参数
- 类型
使用
"type" : "object_storage_oci"
- 格式
使用
"format" : "parquet"
- endpoint示例:
-
区域 ID:
"endpoint" : "us-ashburn-1"
-
URL 格式:
"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"
-
- 名称空间
示例:
"namespace" : "my-namespace"
- 倾盆大雨
示例:
"bucket" : "my-bucket"
- 前缀
源数据将迁移到
<prefix>/Data/<chunk>.parquet
文件,其中 chunk=000000.parquet、000001.parquet 等。示例:"prefix" : "my_export"
"prefix" : "my_export/2021-04-05/"
- chunkSize
示例:
"chunkSize" : 40
- 身份证明示例:
"credentials" : "/home/user/.oci/config"
"credentials" : "/home/user/security/config"
- credentialsProfile示例:
"credentialsProfile" : "DEFAULT"
"credentialsProfile" : "ADMIN_USER"
- useInstancePrincipal
示例:
"useInstancePrincipal" : true
- useDelegationToken
示例:
"useDelegationToken" : true
注意:
仅当从 Cloud Shell 运行 NoSQL Database Migrator 时,才支持使用委派令牌进行验证。
唯一配置参数
压缩
-
用途:指定用于压缩 Parquet 数据的压缩类型。有效值为 SNAPPY 、 GZIP 和 NONE 。
如果未指定,它缺省为 SNAPPY 。
- 数据类型:字符串
- 必需 (Y/N): N
-
示例:
"compression" : "GZIP"
parquetOptions
-
用途:指定用于为 NoSQL ENUM、JSON 和 UUID 列选择 Parquet 逻辑类型的选项。
如果未指定此参数,则 NoSQL Database Migrator 会将 ENUM、JSON 和 UUID 列的数据写入字符串。
- 数据类型:对象
- 必需 (Y/N): N
parquetOptions.useLogicalJson
-
用途:指定是否将 NoSQL JSON 列数据写入 Parquet 逻辑 JSON 类型。有关更多信息,请参见 Parquet Logical Type Definitions 。
如果未指定或设置为 false,则 NoSQL Database Migrator 会将 NoSQL JSON 列数据写入字符串。
- 数据类型:布尔型
- 必需 (Y/N): N
-
示例:
"useLogicalJson" : true
parquetOptions.useLogicalEnum
-
用途:指定是否将 NoSQL ENUM 列数据写入 Parquet 逻辑 ENUM 类型。有关更多信息,请参见 Parquet Logical Type Definitions 。
如果未指定或设置为 false,则 NoSQL Database Migrator 会将 NoSQL ENUM 列数据写入字符串。
- 数据类型:布尔型
- 必需 (Y/N): N
-
示例:
"useLogicalEnum" : true
parquetOptions.useLogicalUUID
-
用途:指定是否将 NoSQL UUID 列数据写入 Parquet 逻辑 UUID 类型。有关更多信息,请参见 Parquet Logical Type Definitions 。
如果未指定或设置为 false,则 NoSQL Database Migrator 会将 NoSQL UUID 列数据写入字符串。
- 数据类型:布尔型
- 必需 (Y/N): N
-
示例:
"useLogicalUUID" : true
parquetOptions.truncateDoubleSpecials
-
用途:指定是否截断双 +Infinity、-Infinity 和 NaN 值。
默认情况下,它设置为false
。如果设置为true
,- Positive_Infinity 被截断为 Double.MAX_VALUE。
- NEGATIVE_INFINITY 被截断为 -Double.MAX_VALUE。
- NaN 被截断为 9.9999999999999990E307。
- 数据类型:布尔型
- 必需 (Y/N): N
-
示例:
"truncateDoubleSpecials" : true
Oracle NoSQL Database
下面显示了 Oracle NoSQL Database 作为 NoSQL Database Migrator 汇的配置文件格式。
Sink 配置模板
"sink" : {
"type": "nosqldb",
"storeName" : "<store name>",
"helperHosts" : ["hostname1:port1","hostname2:port2,..."],
"security" : "</path/to/store/credentials/file>",
"table" : "<fully qualified table name>",
"includeTTL": <true|false>,
"ttlRelativeDate": "<date-to-use in UTC>",
"schemaInfo" : {
"schemaPath" : "</path/to/a/schema/file>",
"defaultSchema" : <true|false>,
"useSourceSchema" : <true|false>,
"DDBPartitionKey" : <"name:type">,
"DDBSortKey" : "<name:type>"
},
"overwrite" : <true|false>,
"requestTimeoutMs" : <timeout in milli seconds>
}
Sink 参数
公共配置参数
- 类型
使用
"type" : "nosqldb"
- 安全
示例:
"security" : "
/home/user/client.credentials
"基于口令文件的验证的安全文件内容示例:
oracle.kv.password.noPrompt=true oracle.kv.auth.username=admin oracle.kv.auth.pwdfile.file=/home/nosql/login.passwd oracle.kv.transport=ssl oracle.kv.ssl.trustStore=/home/nosql/client.trust oracle.kv.ssl.protocols=TLSv1.2 oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL)
基于 wallet 的验证的安全文件内容示例:
oracle.kv.password.noPrompt=true oracle.kv.auth.username=admin oracle.kv.auth.wallet.dir=/home/nosql/login.wallet oracle.kv.transport=ssl oracle.kv.ssl.trustStore=/home/nosql/client.trust oracle.kv.ssl.protocols=TLSv1.2 oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL)
- requestTimeoutMs
示例:
"requestTimeoutMs" : 5000
唯一配置参数
storeName
-
用途:Oracle NoSQL Database 存储的名称。
- 数据类型:字符串
- 必需 (Y/N): Y
- 示例:
"storeName" : "kvstore"
helperHosts
-
用途:以
hostname:port
格式列出的主机和注册表端口对。使用逗号分隔列表中的每个项。必须指定至少一个辅助主机。 - 数据类型:字符串数组
- 必需 (Y/N): Y
- 示例:
"helperHosts" : ["localhost:5000","localhost:6000"]
table (表)
-
用途:指定用于存储迁移数据的表名。
格式:
[namespace_name:]<table_name>
如果表位于 DEFAULT 名称空间中,则可以省略
namespace_name
。表在迁移期间必须存在于存储中,并且其方案必须与源数据匹配。如果该表在水槽中不可用,则可以使用
schemaInfo
参数指示 NoSQL Database Migrator 在水槽中创建表。 - 数据类型:字符串
- 必需 (Y/N): Y
- 示例:
-
使用 DEFAULT 名称空间
"table" :"mytable"
-
使用非缺省名称空间
"table" : "mynamespace:mytable"
-
指定子表
"table" : "mytable.child"
注意:
您可以将子表从有效数据源迁移到 Oracle NoSQL Database 。NoSQL Database Migrator 在每次执行中仅复制一个表。确保在子表之前迁移了父表。
-
includeTTL
-
用途:指定在导入 Oracle NoSQL Database 表时是否包括源提供的表行的 TTL 元数据。
如果未指定此参数,则默认为
false
。在这种情况下,NoSQL 数据库迁移程序不包括源在导入 Oracle NoSQL Database 表时提供的表行的 TTL 元数据。如果设置为 true,NoSQL Database Migrator 工具将在导入表行时对 TTL 元数据执行以下检查:- 如果导入没有
_metadata
定义的行,则 NoSQL 数据库迁移程序工具会将 TTL 设置为 0,这意味着该行永不过期。 - 如果导入具有
_metadata
定义的行,则 NoSQL 数据库迁移程序工具会在导入行时将 TTL 值与引用时间进行比较。如果该行已相对于参考时间到期,则跳过该行。如果行尚未到期,则会随 TTL 值一起导入该行。缺省情况下,导入操作的引用时间是从运行 NoSQL 数据库迁移程序工具的计算机的 System.currentTimeMillis() 获取的当前时间(以毫秒为单位)。但是,如果要延长失效时间并导入原本会立即失效的行,也可以使用ttlRelativeDate
配置参数设置定制引用时间。用于计算行到期时间的公式如下:expiration = (TTL value of source row in milliseconds - Reference Time in milliseconds) if (expiration <= 0) then it indicates that row has expired.
注意:
由于 Oracle NoSQL TTL 边界以小时和天为单位,在某些情况下,导入行的 TTL 可能会调整为最近的小时或天。例如,考虑到期值为1629709200000 (2021-08-23 09:00:00)
且参考时间值为1629707962582 (2021-08-23 08:39:22)
的行。此处,尽管相对于导入此数据时的参考时间,该行未失效,但该行的新 TTL 为1629712800000 (2021-08-23 10:00:00)
。
- 如果导入没有
- 数据类型:布尔型
- 必需 (Y/N): N
- 示例:
"includeTTL" : true
ttlRelativeDate
-
用途:以 YYYY-MM-DD hh:mm:ss 格式指定 UTC 日期,用于在导入到 Oracle NoSQL Database 期间设置表行的 TTL 到期。
如果要导出的数据中的表行已过期,则可以将 ttlRelativeDate 参数设置为所导出数据中表行的到期时间之前的日期。
如果未指定此参数,则缺省为从运行 NoSQL Database Migrator 工具的计算机的 System.currentTimeMillis() 获取的当前时间(以毫秒为单位)。
- 数据类型:日期
- 必需 (Y/N): N
- 示例:
"ttlRelativeDate" : "2021-01-03 04:31:17"
我们来考虑这样一种方案:表行在 2021 年 1 月 1 日起 7 天后过期。导出此表后,在 2021 年 1 月 7 日,您会遇到表问题并决定导入数据。表行将在一天内到期(数据到期日期减去 ttlRelativedate 配置参数的默认值,即当前日期)。但是,如果要将表行的到期日期延长到五天而不是一天,请使用 ttlRelativeDate 参数并选择较早的日期。因此,在此方案中,如果要将表行的失效时间延长五天,请将 ttlRelativeDate 配置参数的值设置为 2021 年 1 月 3 日,在导入表行时用作引用时间。
方案
-
用途:指定要迁移的数据的方案。如果未指定此项,则 NoSQL Database Migrator 将假定该表已存在于 sink 的存储中。
- 数据类型:对象
- 必需 (Y/N): N
schemaInfo.schemaPath
-
用途:指定包含 NoSQL 表的 DDL 语句的文件的绝对路径。
NoSQL Database Migrator 在迁移数据之前执行此文件中列出的 DDL 命令。
NoSQL Database Migrator 在
schemaPath
文件中每行不支持多个 DDL 语句。 -
数据类型:字符串
-
必需 (Y/N): N
注意:
defaultSchema
和schemaPath
是互斥的。 -
示例:
"schemaPath" : "/home/user/schema_file"
schemaInfo.defaultSchema
-
用途:将此参数设置为 true 将指示 NoSQL Database Migrator 创建具有默认方案的表。默认方案由迁移程序本身定义。有关默认方案定义的详细信息,请参阅使用 Oracle NoSQL 数据迁移程序中的默认方案。
-
数据类型:布尔型
-
必需 (Y/N): N
注意:
defaultSchema
和schemaPath
是互斥的。
schemaInfo.useSourceSchema
-
用途:指定在迁移 NoSQL 表时是否使用源提供的表方案定义。
-
数据类型:布尔型
- 必需 (Y/N): N
注意:
defaultSchema、schemaPath 和 useSourceSchema 参数互斥。仅指定这些参数之一。 - 示例:
- 使用默认方案:
"schemaInfo" : { "defaultSchema" : true }
- 使用预定义的方案:
"schemaInfo" : { "schemaPath" : "<complete/path/to/the/schema/definition/file>" }
- 使用源方案:
"schemaInfo" : { "useSourceSchema" : true }
- 使用默认方案:
schemaInfo.DDBPartitionKey
- 用途:指定要在接收器 Oracle NoSQL Database 表中使用的 DynamoDB 分区键和相应的 Oracle NoSQL Database 类型。此键将用作 NoSQL 数据库表分片键。仅当
defaultSchema
设置为 true 且源格式为dynamodb_json
时才适用。有关更多详细信息,请参阅将 DynamoDB 类型映射到 Oracle NoSQL 类型。 - 必需 (Y/N): Y(如果
defaultSchema
为真且源为dynamodb_json
)。 - 示例:
"DDBPartitionKey" : "PersonID:INTEGER"
注意:
如果分区键包含 dash(-) 或 dot(.),则迁移程序会将其替换为下划线 (_),因为 NoSQL 列名不支持点和短划线。
schemaInfo.DDBSortKey
- 用途:指定要在目标 Oracle NoSQL Database 表中使用的 DynamoDB 排序关键字及其对应的 Oracle NoSQL Database 类型。如果导入 DynamoDB 表没有排序键,则不能设置此属性。此键将用作 NoSQL 数据库表中主键的非分片部分。仅当
defaultSchema
设置为 true 且源为dynamodb_json
时才适用。有关更多详细信息,请参阅将 DynamoDB 类型映射到 Oracle NoSQL 类型。 - 必需 (Y/N): N
- 示例:
"DDBSortKey" : "Skey:STRING"
注意:
如果排序关键字包含 dash(-) 或 dot(.),则迁移程序会将其替换为下划线 (_),因为 NoSQL 列名不支持点和短划线。
overwrite
-
用途:指示从源迁移的记录已存在于接收器中时 NoSQL Database Migrator 的行为。
如果该值设置为 false,则在迁移表时,NoSQL Database Migrator 将跳过在接收器中已存在相同主键的记录。
如果该值设置为 true,则在迁移表时,NoSQL Database Migrator 将覆盖在接收器中已存在相同主键的记录。
如果未指定,它缺省为 true。
- 数据类型:布尔型
- 必需 (Y/N): N
- 示例:
"overwrite" : false
Oracle NoSQL Database Cloud Service
下面显示了 Oracle NoSQL Database Cloud Service 作为 NoSQL Database Migrator 汇的配置文件格式。
Sink 配置模板
"sink" : {
"type" : "nosqldb_cloud",
"endpoint" : "<Oracle NoSQL Cloud Service Endpoint>",
"table" : "<table name>",
"compartment" : "<OCI compartment name or id>",
"includeTTL": <true|false>,
"ttlRelativeDate" : "<date-to-use in UTC>",
"schemaInfo" : {
"schemaPath" : "</path/to/a/schema/file>",
"defaultSchema" : <true|false>,
"useSourceSchema" : <true|false>,
"DDBPartitionKey" : <"name:type">,
"DDBSortKey" : "<name:type>",
"onDemandThroughput" : <true|false>,
"readUnits" : <table read units>,
"writeUnits" : <table write units>,
"storageSize" : <storage size in GB>
},
"credentials" : "</path/to/oci/credential/file>",
"credentialsProfile" : "<profile name in oci config file>",
"useInstancePrincipal" : <true|false>,
"useDelegationToken" : <true|false>,
"writeUnitsPercent" : <table writeunits percent>,
"requestTimeoutMs" : <timeout in milli seconds>,
"overwrite" : <true|false>
}
Sink 参数
公共配置参数
- 类型
使用
"type" : "nosqldb_cloud"
- endpoint示例:
-
区域 ID:
"endpoint" : "us-ashburn-1"
-
URL 格式:
"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"
-
- 身份证明示例:
"credentials" : "/home/user/.oci/config"
"credentials" : "/home/user/security/config"
- credentialsProfile示例:
"credentialsProfile" : "DEFAULT"
"credentialsProfile" : "ADMIN_USER"
- useInstancePrincipal
示例:
"useInstancePrincipal" : true
- useDelegationToken
示例:
"useDelegationToken" : true
注意:
仅当从 Cloud Shell 运行 NoSQL Database Migrator 时,才支持使用委派令牌进行验证。 - requestTimeoutMs
示例:
"requestTimeoutMs" : 5000
唯一配置参数
table (表)
-
用途:指定用于存储迁移数据的表名。
您必须确保此表存在于 Oracle NoSQL Database Cloud Service 中。否则,必须在 sink 配置中使用
schemaInfo
对象来指示 NoSQL Database Migrator 创建表。此表的方案必须与源数据匹配。
- 数据类型:字符串
- 必需 (Y/N): Y
- 示例:
- 指定表
"table" : "mytable"
- 指定子表
"table" : "mytable.child"
注意:
您可以将子表从有效数据源迁移到 Oracle NoSQL Database Cloud Service 。NoSQL Database Migrator 在每次执行中仅复制一个表。确保在子表之前迁移了父表。
- 指定表
区间
-
用途:指定表所在区间的名称或 OCID。
如果未提供任何值,则缺省为 root 区间。
您可以在 OCI 云控制台的“监管”下的“区间浏览器”窗口中找到区间的 OCID。
- 数据类型:字符串
- 必需 (Y/N): Y(如果表不在租户的根区间中)或者 useInstancePrincipal 参数设置为 true 时。
注意:
如果 useInstancePrincipal 参数设置为 true,则区间必须指定区间 OCID,而不是名称。 - 示例:
-
划分名称
"compartment" : "mycompartment"
-
符合其父区间的限定区间名称
"compartment" : "parent.childcompartment"
-
未提供值。默认为根区间。
"compartment": ""
-
区间 OCID
"compartment" : "ocid1.tenancy.oc1...4ksd"
-
includeTTL
-
用途:指定在导入 Oracle NoSQL Database 表时是否包括源提供的表行的 TTL 元数据。
如果未指定此参数,则默认为
false
。在这种情况下,NoSQL 数据库迁移程序不包括源在导入 Oracle NoSQL Database 表时提供的表行的 TTL 元数据。如果设置为 true,NoSQL Database Migrator 工具将在导入表行时对 TTL 元数据执行以下检查:- 如果导入没有
_metadata
定义的行,则 NoSQL 数据库迁移程序工具会将 TTL 设置为 0,这意味着该行永不过期。 - 如果导入具有
_metadata
定义的行,则 NoSQL 数据库迁移程序工具会在导入行时将 TTL 值与引用时间进行比较。如果该行已相对于参考时间到期,则跳过该行。如果行尚未到期,则会随 TTL 值一起导入该行。缺省情况下,导入操作的引用时间是从运行 NoSQL 数据库迁移程序工具的计算机的 System.currentTimeMillis() 获取的当前时间(以毫秒为单位)。但是,如果要延长失效时间并导入原本会立即失效的行,也可以使用ttlRelativeDate
配置参数设置定制引用时间。用于计算行到期时间的公式如下:expiration = (TTL value of source row in milliseconds - Reference Time in milliseconds) if (expiration <= 0) then it indicates that row has expired.
注意:
由于 Oracle NoSQL TTL 边界以小时和天为单位,在某些情况下,导入行的 TTL 可能会调整为最近的小时或天。例如,考虑到期值为1629709200000 (2021-08-23 09:00:00)
且参考时间值为1629707962582 (2021-08-23 08:39:22)
的行。此处,尽管相对于导入此数据时的参考时间,该行未失效,但该行的新 TTL 为1629712800000 (2021-08-23 10:00:00)
。
- 如果导入没有
- 数据类型:布尔型
- 必需 (Y/N): N
- 示例:
"includeTTL" : true
ttlRelativeDate
-
用途:以 YYYY-MM-DD hh:mm:ss 格式指定 UTC 日期,用于在导入到 Oracle NoSQL Database 期间设置表行的 TTL 到期。
如果要导出的数据中的表行已过期,则可以将 ttlRelativeDate 参数设置为所导出数据中表行的到期时间之前的日期。
如果未指定此参数,则缺省为从运行 NoSQL Database Migrator 工具的计算机的 System.currentTimeMillis() 获取的当前时间(以毫秒为单位)。
- 数据类型:日期
- 必需 (Y/N): N
- 示例:
"ttlRelativeDate" : "2021-01-03 04:31:17"
我们来考虑这样一种方案:表行在 2021 年 1 月 1 日起 7 天后过期。导出此表后,在 2021 年 1 月 7 日,您会遇到表问题并决定导入数据。表行将在一天内到期(数据到期日期减去 ttlRelativedate 配置参数的默认值,即当前日期)。但是,如果要将表行的到期日期延长到五天而不是一天,请使用 ttlRelativeDate 参数并选择较早的日期。因此,在此方案中,如果要将表行的失效时间延长五天,请将 ttlRelativeDate 配置参数的值设置为 2021 年 1 月 3 日,在导入表行时用作引用时间。
schemaInfo
-
用途:指定要迁移的数据的方案。
如果未指定此参数,NoSQL Database Migrator 将假定 Oracle NoSQL Database Cloud Service 中已存在该表。
如果未指定此参数,且池中不存在该表,则迁移将失败。
- 数据类型:对象
- 必需 (Y/N): N
schemaInfo.schemaPath
-
用途:指定包含 NoSQL 表的 DDL 语句的文件的绝对路径。
NoSQL Database Migrator 在迁移数据之前执行此文件中列出的 DDL 命令。
NoSQL Database Migrator 在
schemaPath
文件中每行不支持多个 DDL 语句。 -
数据类型:字符串
-
必需 (Y/N): N
注意:
defaultSchema
和schemaPath
是互斥的。 -
示例:
"schemaPath" : "/home/user/schema_file"
schemaInfo.defaultSchema
-
用途:将此参数设置为是将指示 NoSQL 数据库迁移程序创建具有默认方案的表。默认方案由迁移程序本身定义。有关默认方案定义的详细信息,请参阅使用 Oracle NoSQL 数据迁移程序中的默认方案。
-
数据类型:布尔型
-
必需 (Y/N): N
注意:
defaultSchema
和schemaPath
是互斥的。
schemaInfo.useSourceSchema
-
用途:指定在迁移 NoSQL 表时是否使用源提供的表方案定义。
-
数据类型:布尔型
- 必需 (Y/N): N
注意:
defaultSchema、schemaPath 和 useSourceSchema 参数互斥。仅指定这些参数之一。 - 示例:
- 使用默认方案:
"schemaInfo": { "defaultSchema": true, "readUnits": 100, "writeUnits": 60, "storageSize": 1 }
- 使用预定义的方案:
"schemaInfo": { "schemaPath": "<complete/path/to/the/schema/definition/file>", "readUnits": 100, "writeUnits": 100, "storageSize": 1 }
- 使用源方案:
"schemaInfo": { "useSourceSchema": true, "readUnits": 100, "writeUnits": 60, "storageSize": 1 }
- 使用默认方案:
schemaInfo.DDBPartitionKey
- 用途:指定要在接收器 Oracle NoSQL Database 表中使用的 DynamoDB 分区键和相应的 Oracle NoSQL Database 类型。此键将用作 NoSQL 数据库表分片键。仅当
defaultSchema
设置为 true 且源格式为dynamodb_json
时才适用。有关更多详细信息,请参阅将 DynamoDB 类型映射到 Oracle NoSQL 类型。 - 必需 (Y/N): Y(如果
defaultSchema
为真且源为dynamodb_json
)。 - 示例:
"DDBPartitionKey" : "PersonID:INTEGER"
注意:
如果分区键包含 dash(-) 或 dot(.),则迁移程序会将其替换为下划线 (_),因为 NoSQL 列名不支持点和短划线。
schemaInfo.DDBSortKey
- 用途:指定要在目标 Oracle NoSQL Database 表中使用的 DynamoDB 排序关键字及其对应的 Oracle NoSQL Database 类型。如果导入 DynamoDB 表没有排序键,则不能设置此属性。此键将用作 NoSQL 数据库表中主键的非分片部分。仅当
defaultSchema
设置为 true 且源为dynamodb_json
时才适用。有关更多详细信息,请参阅将 DynamoDB 类型映射到 Oracle NoSQL 类型。 - 必需 (Y/N): N
- 示例:
"DDBSortKey" : "Skey:STRING"
注意:
如果排序关键字包含 dash(-) 或 dot(.),则迁移程序会将其替换为下划线 (_),因为 NoSQL 列名不支持点和短划线。
schemaInfo.onDemandThroughput
- 用途:指定使用按需读取和写入吞吐量创建表。如果未设置此参数,则使用预配容量创建表。
默认值为
false
。注意:
此参数不适用于子表,因为它们共享顶层父表的吞吐量。 -
数据类型:布尔型
-
必需 (Y/N): N
- 示例:
"onDemandThroughput" : "true"
schemaInfo.readUnits
- 用途:指定新表的读取吞吐量。
注意:
- 此参数不适用于预配了按需容量的表。
- 此参数不适用于子表,因为它们共享顶层父表的读取吞吐量。
-
数据类型:整数
-
必需 (Y/N): Y,如果表不是子表,或者 schemaInfo.onDemandThroughput 参数设置为
false
,则为 N。 - 实例:
"readUnits" : 100
schemaInfo.writeUnits
- 用途:指定新表的写入吞吐量。
注意:
- 此参数不适用于预配了按需容量的表。
- 此参数不适用于子表,因为它们共享顶层父表的写入吞吐量。
-
数据类型:整数
-
必需 (Y/N): Y,如果表不是子表,或者 schemaInfo.onDemandThroughput 参数设置为
false
,则为 N。 - 实例:
"writeUnits" : 100
schemaInfo.storageSize
- 用途:指定新表的存储大小 (GB)。
注意:
此参数不适用于子表,因为它们共享顶层父表的存储大小。 -
数据类型:整数
-
必需 (Y/N): Y,如果表不是子表,则为 N。
- 示例:
-
使用
schemaPath
"schemaInfo" : { "schemaPath" : "</path/to/a/schema/file>", "readUnits" : 500, "writeUnits" : 1000, "storageSize" : 5 }
-
使用
defaultSchema
"schemaInfo" : { "defaultSchema" :Yes, "readUnits" : 500, "writeUnits" : 1000, "storageSize" : 5 }
-
writeUnitsPercent
-
用途:指定在迁移活动期间要使用的表写入单位百分比。迁移数据所需的时间量与此属性直接成正比。
默认值为 90。有效范围是介于 1 到 100 之间的任意整数。
请参阅Oracle NoSQL Database Migrator 故障排除,了解如何使用此属性来提高数据迁移速度。
- 数据类型:整数
- 必需 (Y/N): N
- 示例:
"writeUnitsPercent" : 90
overwrite
-
用途:指示从源迁移的记录已存在于接收器中时 NoSQL Database Migrator 的行为。
如果该值设置为 false,则在迁移表时,NoSQL Database Migrator 将跳过在接收器中已存在相同主键的记录。
如果该值设置为 true,则在迁移表时,NoSQL Database Migrator 将覆盖在接收器中已存在相同主键的记录。
如果未指定,它缺省为 true。
- 数据类型:布尔型
- 必需 (Y/N): N
- 示例:
"overwrite" : false
转换配置模板
本主题介绍了 Oracle NoSQL Database Migrator 支持的不同转换的配置参数。有关完整的配置文件模板,请参见 Configuration File in Terminology used with NoSQL Data Migrator 。
Oracle NoSQL Database Migrator 允许您修改数据,即在迁移活动中添加数据转换。您可以在单个迁移中定义多个转换。在这种情况下,转换的顺序至关重要,因为源数据按给定顺序进行每个转换。一个转换的输出将成为迁移程序管道中下一个转换的输入。
表 - 转换
转换配置属性 | 您可以使用此转换来 ... |
---|---|
ignoreFields |
在写入到接收器之前,忽略源行中标识的列。 |
includeFields |
在写入到水槽之前包括源行中标识的列。 |
renameFields |
在写入到接收器之前,重命名源行中的已标识列。 |
aggregateFields |
将源中的多个列聚集到池中的单个列中。在此转换过程中,您还可以标识要在聚合中排除的列。这些字段将从聚合列中跳过。 |
您可以在下面找到每个支持的转换的配置模板。
ignoreFields
ignoreFields
转换的配置文件格式如下所示。
转换配置模板
"transforms" : {
"ignoreFields" : ["<field1>","<field2>",...]
}
转换参数
ignoreFields
-
用途:要从源记录中忽略的列名数组。
注意:
您只能提供顶层字段。无法对嵌套字段中的数据应用转换。 - 数据类型:字符串数组
- 必需 (Y/N): Y
-
示例:要忽略源记录中名为 "name" 和 "address" 的列,请执行以下操作:
"ignoreFields" : ["name","address"]
includeFields
includeFields
转换的配置文件格式如下所示。
转换配置模板
"transforms" : {
"includeFields" : ["<field1>","<field2>",...]
}
转换参数
includeFields
-
用途:要从源记录中包括的列名数组。仅包括数组中指定的字段,其余字段将被忽略。
注意:
如果指定空数组,NoSQL Database Migrator 工具将引发错误。此外,您只能指定顶层字段。NoSQL Database Migrator 工具不会将转换应用于嵌套字段中的数据。 - 数据类型:字符串数组
- 必需 (Y/N): Y
-
示例:要忽略源记录中名为 "age" 和 "gender" 的列,请执行以下操作:
"includeFields" : ["age","gender"]
renameFields
renameFields
转换的配置文件格式如下所示。
转换配置模板
"transforms" : {
"renameFields" : {
"<old_name>" : "<new_name>",
"<old_name>" : "<new_name>,"
.....
}
}
转换参数
renameFields
-
用途:要重命名的列的旧名称和新名称的键 - 值对。
注意:
您只能提供顶层字段。无法对嵌套字段中的数据应用转换。 - 数据类型:JSON 对象
- 必需 (Y/N): Y
-
示例:要将名为 "residence" 的列重命名为 "address",将名为 "_id" 的列重命名为 "id":
"renameFields" : { "residence" : "address", "_id" : "id" }
aggregateFields
aggregateFields
转换的配置文件格式如下所示。
转换配置模板
"transforms" : {
"aggregateFields" : {
"fieldName" : "name of the new aggregate field",
"skipFields" : ["<field1>","<field2">,...]
}
}
转换参数
aggregateFields
-
用途:汇中聚合字段的名称。
- 数据类型:字符串
- 必需 (Y/N): Y
-
示例:如果给定记录为:
{ "id" : 100, "name" : "john", "address" : "USA", "age" : 20 }
如果聚合转换为:
"aggregateFields" : { "fieldName" : "document", "skipFields" : ["id"] }
池中的聚合列如下所示:
{ "id": 100, "document": { "name": "john", "address": "USA", "age": 20 } }
将 DynamoDB 类型映射到 Oracle NoSQL 类型
下表显示了 DynamoDB 类型到 Oracle NoSQL 类型的映射。
表 - 将 DynamoDB 类型映射到 Oracle NoSQL 类型
# | DynamoDB 类型 | NoSQL JSON 列的 JSON 类型 | Oracle NoSQL 类型 |
---|---|---|---|
1 | 字符串 (S) | JSON 字符串 | STRING |
2 | 数字类型 (N) | JSON 编号 | 整数/长/浮点数/双精度/数字 |
3 | 布尔值 (BOOL) | JSON 布尔值 | BOOLEAN |
4 | 二进制类型 (B) - 字节缓冲区 | BASE-64 编码的 JSON 字符串 | BINARY |
5 | NULL | JSON 为空值 | NULL |
6 | 字符串集 (SS) | JSON 字符串数组 | 数组(字符串) |
7 | 数字集 (NS) | JSON 数字数组 | 数组(整数/长/浮点数/双精度/数字) |
8 | 二进制集 (BS) | Base-64 编码字符串的 JSON 数组 | 数组(二进制) |
9 | 列表 (L) | JSON 数组 | 数组 (JSON) |
10 | 映射 (M) | JSON 对象 | JSON |
11 | 分区关键字 | NA | PRIMARY KEY 和 SHARD KEY |
12 | 排序关键字 | NA | 主要关键字 |
13 | 具有短划线和点的属性名称 | 具有下划线的 JSON 字段名称 | 下划线的列名 |
- DynamoDB 只能为 Numbers 支持一种数据类型,最多可具有 38 位精度,而 Oracle NoSQL 支持根据 data.You 的范围和精度进行选择的多种类型,可以选择适合输入数据范围的相应数字类型。如果不确定数据的性质,可以使用 NoSQL NUMBER 类型。
- DynamoDB 只能为 Numbers 支持一种数据类型,最多可具有 38 位精度,而 Oracle NoSQL 支持根据 data.You 的范围和精度进行选择的多种类型,可以选择适合输入数据范围的相应数字类型。如果不确定数据的性质,可以使用 NoSQL NUMBER 类型。
- DynamoDB 中的分区密钥限制为 2048 字节,但 Oracle NoSQL Cloud Service 的主键/分片密钥限制为 64 字节。
- DynamoDB 中的排序键限制为 1024 字节,但 Oracle NoSQL Cloud Service 的主键限制为 64 字节。
- DynamoDB 中的属性名称长度可以为 64KB,但 Oracle NoSQL 云服务列名的长度限制为 64 个字符。
Oracle NoSQL 到 Parquet 数据类型映射
介绍 Oracle NoSQL 数据类型到 Parquet 数据类型的映射。
NoSQL 类型 | Parquet 类型 |
---|---|
BOOLEAN | BOOLEAN |
INTEGER | INT32 |
LONG | INT64 |
FLOAT | DOUBLE |
DOUBLE | DOUBLE |
BINARY | BINARY |
FIXED_BINARY | BINARY |
STRING | 二进制(字符串) |
ENUM | 二进制(字符串)
或者 BINARY(ENUM),如果配置了逻辑 ENUM |
UUID | 二进制(字符串)
或者 FIXED_BINARY(16),如果配置了逻辑 UUID |
TIMESTAMP(p) | INT64(TIMESTAMP(p)) |
NUMBER | DOUBLE |
field_name 数组 (T) |
|
field_name MAP(T) |
|
field_name RECORD(K₁ T₁ N₁, Kٖ₂ T₂ N₂, ....)
其中: K = 密钥名称 T = 类型 N = 可为空或不可为空 |
|
JSON | 二进制(字符串)
或者 BINARY(JSON),如果配置了逻辑 JSON |
注意:
当 NoSQL 数字类型转换为 Parquet Double 类型时,如果值不能用 Double 表示,则可能会丢失精度。如果数字太大,无法表示为 Double,则将其转换为 Double.NEGATIVE_INFINITY 或 Double.POSITIVE_INFINITY。将 DynamoDB 表映射到 Oracle NoSQL 表
在 DynamoDB 中,表是项的集合,每项都是属性的集合。表中的每一项都有一个唯一标识符或主键。除了主键,该表没有方案。每个项目都可以有自己的不同属性。
- 分区键 - 简单主键,由一个称为分区键的属性组成。DynamoDB 使用分区键的值作为内部散列函数的输入。散列函数的输出确定将存储项的分区。
- 分区键和排序键 - 作为组合主键,此类型的键由两个属性组成。第一个属性是分区键,第二个属性是排序键。DynamoDB 使用分区键值作为内部散列函数的输入。散列函数的输出确定将存储项的分区。具有相同分区键值的所有项都存储在一起,按排序键值排序。
相比之下,Oracle NoSQL 表支持灵活的数据模型,支持模式和无模式设计。
- 将 DynamoDB 表建模为 JSON 文档(建议):在此建模中,将 Dynamo DB 表的所有属性映射到 NoSQL 表的 JSON 列(分区键和排序键除外)。将分区键和排序键建模为 NoSQL 表的主键列。您将使用
AggregateFields
转换将非主键数据聚合为 JSON 列。注意:
迁移程序提供了用户友好的配置defaultSchema
,用于自动创建无方案的 DDL 表,该表还将属性聚合为 JSON 列。 - 将 DynamoDB 表建模为 NoSQL 表中的固定列:在此建模中,对于 DynamoDB 表的每个属性,将在 NoSQL 表中创建列,如将 DynamoDB 类型映射到 Oracle NoSQL 类型中指定的那样。您将建模分区键并按主键排序键属性。仅当确信导入 DynamoDB 表方案是固定的并且每个项具有大部分属性的值时,才应使用此项。如果 DynamoDB 项没有共同的属性,则会导致大量 NoSQL 列的值为空。
注意:
强烈建议在将数据从 DynamoDB 迁移到 Oracle NoSQL Database 时使用无方案表,因为 DynamoDB 表的性质是无方案。这尤其适用于大型表,其中每条记录的内容在整个表中可能不一致。
Oracle NoSQL Database Migrator 故障排除
了解在使用 时可能面临的一般挑战以及如何解决这些挑战。
迁移失败。如何解决此错误?
数据迁移失败的原因可能有多种。下面列出了重要原因:
表 - 迁移故障原因
错误消息 | 含义 | 分辨率 |
---|---|---|
Failed to connect to Oracle NoSQL Database |
迁移程序无法与 NoSQL 数据库建立连接。 |
|
Failed to connect to Oracle NoSQL Database Cloud Service |
迁移程序无法与 Oracle NoSQL Database Cloud Service 建立连接。 |
|
Table not found |
NoSQL 数据库迁移程序找不到为迁移标识的表。 |
来源:
对于水槽:
|
DDL Execution failed |
输入方案定义文件中提供的 DDL 命令无效。 |
|
failed to write record to the sink table with java.lang.IllegalArgumentException |
输入记录与接收器的表方案不匹配。 |
|
Request timeout |
源或接收器的操作未在预期时间内完成。 |
|
重新启动失败的迁移之前应考虑哪些事项?
当数据迁移任务失败时,接收器将处于包含导入数据的中间状态,直到出现故障。您可以从日志中确定错误和故障详细信息,并在诊断并更正错误后重新启动迁移。重新启动的迁移将从头开始处理所有数据。无法检查点并从故障点重新启动迁移。因此,NoSQL Database Migrator 会覆盖已迁移到水槽的任何记录。
迁移速度太慢。我怎么能加速呢?
数据迁移所用的时间取决于多个因素,例如迁移的数据量、网络速度、数据库上的当前负载。对于云服务,迁移速度还取决于预配的读取吞吐量和写入吞吐量。因此,要提高迁移速度,您可以:我有一个涉及大量数据集的长时间运行的迁移。如何跟踪迁移的进度?
您可以启用其他日志记录来跟踪长时间运行的迁移的进度。要控制 Oracle NoSQL Database Migrator 的日志记录行为,必须在 logging.properties
文件中设置所需的日志记录级别。此文件随 NoSQL Database Migrator 程序包一起提供,可在 Oracle NoSQL Database Migrator 解压缩到的目录中使用。不同的日志记录级别是 OFF, SEVERE, WARNING, INFO, FINE,
和 ALL
,按详细程度的增加顺序排列。将日志级别设置为 OFF
将关闭所有日志记录信息,而将日志级别设置为 ALL
将提供完整的日志信息。默认日志级别为 WARNING
。默认情况下,所有日志记录输出都配置为转到控制台。您可以在 logging.properties
文件中查看有关每个日志级别的注释。