Oracle NoSQL Database Migrator 参考
了解 Oracle NoSQL Database Migrator 可用的源、接收器和转换配置模板参数。
本文包含以下主题:
参数
NoSQL 数据库迁移器需要一个配置文件,您可以在其中定义所有参数以执行迁移活动。几个参数在多个源和汇中是常见的。本主题提供这些通用参数的列表。有关单个源或汇特有的其他参数的列表,请参见相应的配置模板部分。
公用配置参数
下面是常用的配置参数。有关示例,请参见各个配置模板部分。
-
用途:指定 OCI 对象存储存储桶的名称,该存储桶包含源/接收对象。
确保所需的存储桶已存在于 OCI 对象存储实例中,并且具有读/写权限。
-
数据类型:字符串
-
强制性 (Y/N): Y
-
用途:指定要在汇处存储的表数据的
chunk的最大大小。值以 MB 为单位。在迁移过程中,表被拆分为chunkSize块,每个块作为单独文件写入到汇。当要迁移的源数据超过chunkSize值时,将创建新文件。如果未指定,则默认为 32MB。有效值为介于 1 到 1024 之间的整数。
有关如何使用
chunkSize参数提高迁移速度的详细信息,请参见最佳做法。 -
数据类型:整型
-
强制性 (Y/N): N
-
用途:指定包含 OCI 身份证明的文件的绝对路径。NoSQL Database Migrator 使用此文件连接到 OCI 服务,例如 Oracle NoSQL Database Cloud Service、OCI Object Storage 等。
默认值为
$HOME/.oci/config请参见 Example Configuration 或身份证明文件的示例。
注:您只能选择其中一个验证选项。因此,请在配置模板中仅指定以下参数之一:
credentials、 useDelegationToken 、 useSessionToken 或 useOKEWorkloadIdentity 。 -
数据类型:字符串
-
强制性 (Y/N): N
-
用途:指定用于连接到 OCI 服务(例如 Oracle NoSQL Database Cloud Service、OCI Object Storage 等)的配置文件的名称。用户帐户凭证称为配置文件。
如果未指定此值,NoSQL Database Migrator 将使用
DEFAULT配置文件。注:仅当指定了 credentials 参数时,此参数才有效。
-
数据类型:字符串
-
强制性 (Y/N): N
-
用途:指定以下项之一:
-
OCI 对象存储服务的服务端点 URL 或区域 ID。有关 OCI 对象存储服务端点的列表,请参阅对象存储端点
-
Oracle NoSQL Database Cloud Service 的服务端点 URL 或区域 ID。您可以单独指定完整 URL 或区域 ID。有关 Oracle NoSQL Database Cloud Service 支持的数据区域列表,请参阅 Oracle NoSQL Database Cloud Service 文档中的数据区域和关联服务 URL 。
-
-
数据类型:字符串
-
强制性 (Y/N): Y
-
用途:指定源/接收格式。
-
数据类型:字符串
-
强制性 (Y/N): Y
-
用途:指定 OCI 对象存储服务的名称空间。这是一个可选参数。如果未指定此参数,则 Migrator 实用程序将使用分配给租户的名称空间。
例如,当您希望使用不同于您的租户的 OCI 操作系统时,名称空间参数非常有用。在这种情况下,OCI OS 租户的名称空间与您的租户的名称空间不同。在迁移期间,迁移程序实用程序默认为租户的名称空间,除非另有指定。因此,要指示 Migrator 实用程序选择 OCI OS 租户的名称空间,必须在名称空间参数中指定 OCI OS 租户的名称。
-
数据类型:字符串
-
强制性 (Y/N): N
-
用途:前缀用作逻辑容器或目录,用于将数据存储在 OCI 对象存储存储桶中。
-
源配置模板:如果指定了
prefix参数,则将迁移prefix参数中指定的目录中的所有对象。否则,将迁移存储桶中存在的所有对象。 -
Sink 配置模板:如果指定了
prefix参数,则会在存储桶中创建具有给定前缀的目录,并将对象迁移到此目录中。否则,源中的表名将用作前缀。如果存储桶中已存在同名的对象,则会覆盖该对象。
有关前缀的更多信息,请参见 Object Naming Using Prefixes and Hierarchies 。
-
-
数据类型:字符串
-
强制性 (Y/N): N
-
目的:指定从存储/到存储的每个读/写操作等待完成的时间。此功能以毫秒为单位提供。默认值为 5000。值可以是任何正整数。
-
数据类型:整型
-
强制性 (Y/N): N
-
用途:指定包含存储身份证明的安全登录文件的绝对路径(如果存储是安全存储)。有关安全登录文件的更多信息,请参阅执行安全的 Oracle NoSQL Database 安装。
您可以使用基于密码文件的验证或基于 wallet 的验证。但是,Oracle NoSQL Database 的 Enterprise Edition (EE) 中仅支持基于 wallet 的验证。有关基于 wallet 的验证的更多信息,请参见 Source and Sink Security 。
Community Edition(CE) 版本仅支持基于密码文件的身份验证。
-
数据类型:字符串
-
强制 (Y/N): Y(对于安全存储)
-
用途:标识来源/汇类型。
-
数据类型:字符串
-
强制性 (Y/N): Y
-
目的:指定 NoSQL 数据库迁移器工具是否使用委派令牌验证来连接到 OCI 服务。必须使用委派令牌验证才能从 Cloud Shell 运行迁移器实用程序。调用 Cloud Shell 时,会自动为用户创建委派令牌。
默认值为
false。请注意以下几点:
-
仅当从 Cloud Shell 运行 NoSQL 数据库迁移器工具时,才支持使用委派令牌进行验证。
-
您只能选择其中一个验证选项。因此,在配置模板中仅指定以下参数之一: credentials 、 useInstancePrincipal 、
useDelegationToken、 useSessionToken 或 useOKEWorkloadIdentity 。 -
Cloud Shell 仅支持在以下源和接收器之间迁移:
类型 有效来源 有效汇 Oracle NoSQL Database Cloud Service ( nosqldb_cloud)是 是 文件(主目录中的 JSON 文件) 是 是 OCI 对象存储(JSON 文件)( object_storage_oci)是 是 OCI 对象存储(参数文件)( object_storage_oci)N 是
-
-
数据类型:布尔值
-
强制性 (Y/N): N
-
用途:指定 NoSQL Database Migrator 工具是否使用实例主用户验证来连接到 OCI 服务,例如 Oracle NoSQL Database Cloud Service、OCI Object Storage 等。有关实例主用户验证方法的更多信息,请参见 Source and Sink Security 。
默认值为
false。注:
-
仅当 NoSQL 数据库迁移器工具在 OCI 计算实例中运行时(例如,在 OCI 上托管的 VM 中运行的 NoSQL 数据库迁移器工具)才支持实例主用户身份验证。
-
您只能选择其中一个验证选项。因此,在配置模板中仅指定以下参数之一: credentials 、
useInstancePrincipal、 useDelegationToken 、 useSessionToken 或 useOKEWorkloadIdentity 。
-
-
数据类型:布尔值
-
强制性 (Y/N): N
-
用途:指定 NoSQL Database Migrator 工具是否使用工作负载身份验证 (Workload Identity Authentication,WIA) 从 Oracle Kubernetes Engine (OKE) 云池访问 OCI 对象存储和 Oracle NoSQL Database Cloud Service。
默认值为
false。 -
数据类型:布尔值
-
强制性 (Y/N): N
有关示例用例,请参阅使用 OKE 验证从 OCI Object Storage 迁移到 Oracle NoSQL Database Cloud Service 。
注:您只能选择其中一个验证选项。因此,在配置模板中仅指定以下参数之一: credentials 、 useInstancePrincipal 、 useDelegationToken 、 useSessionToken 或 useOKEWorkloadIdentity。
-
用途:指定 NoSQL Database Migrator 工具是否使用会话令牌验证来连接到 OCI 服务,例如 OCI Object Storage (OCI OS) 和 Oracle NoSQL Database Cloud Service。默认值为
false。 -
数据类型:布尔值
-
强制性 (Y/N): N
要使用基于会话令牌的验证,必须使用 OCI 命令行界面 (Command Line Interface,CLI) 命令生成会话令牌。有关示例用例,请参阅使用会话令牌身份验证从 Oracle NoSQL Database 迁移到 OCI 对象存储。
注:
-
在使用会话令牌验证时,必须在身份证明参数中指定 OCI 配置文件的路径,以及在 credProfile 参数中生成会话令牌时使用的配置文件。如果未在配置模板中设置凭证参数,则 Migrator 实用程序将在路径
$HOME/.oci中查找凭证文件。如果未在配置模板中设置 credProfile 参数,Migrator 实用程序将使用 OCI 配置文件中的默认概要信息名称 (DEFAULT)。如果 Migrator 实用程序找不到身份证明文件,迁移将失败,并显示一条错误消息,指出 OCI 身份证明文件不存在。
-
您只能选择其中一个验证选项。因此,在配置模板中仅指定以下参数之一: credentials 、 useInstancePrincipal 、 useDelegationToken 、
useSessionToken或 useOKEWorkloadIdentity 。
源配置模板
了解每个有效源的源配置文件格式以及每个配置参数的用途。
有关配置文件模板,请参阅 Terminology used with NoSQL Data Migrator 中的 Configuration File 。
有关每个源的有效汇格式的详细信息,请参见 Sink Configuration Templates 。
主题
以下主题介绍了 Oracle NoSQL Database Migrator 引用的源配置模板,这些模板用于将数据从给定源复制到有效的接收器。
-
包含 JSON 数据的指定文件或目录。
-
OCI 对象存储存储桶中指定的 JSON 文件。
-
包含 MongoDB 格式化 JSON 数据的指定文件或目录。
-
OCI Object Storage 存储桶中 MongoDB 格式的 JSON 文件
指定的 MongoDB 导出存储在 OCI 对象存储存储桶中的 JSON 文件。
-
存储在 AWS S3 中的 DynamoDB 格式的 JSON 文件
指定的 DynamoDB 导出存储在 AWS S3 存储中的 JSON 文件。
-
指定的 DynamoDB 从文件系统导出 JSON 文件。
-
Oracle NoSQL Database 中的指定表。
-
Oracle NoSQL Database Cloud Service
Oracle NoSQL Database Cloud Service 中的指定表。
-
包含 CSV 数据的指定文件或目录。
-
OCI 对象存储存储桶中指定的 CSV 文件。
JSON 文件源
JSON 文件作为 NoSQL 数据库迁移器的源的配置文件格式如下所示。
您可以通过在源配置模板中指定文件路径或目录来迁移 JSON 源文件。
示例 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>"
}
},
来源参数
公用配置参数
唯一配置参数
-
用途:指定包含要迁移的 JSON 数据的文件或目录的绝对路径。
您必须确保此数据与接收器上定义的 NoSQL 表方案匹配。如果指定目录,NoSQL 数据库迁移程序将标识该目录中具有
.json扩展名的所有用于迁移的文件。不支持子目录。 -
数据类型:字符串
-
强制性 (Y/N): Y
-
示例:
-
指定 JSON 文件
"dataPath" : "/home/user/sample.json" -
指定一个目录
"dataPath" : "/home/user"
-
-
用途:指定要迁移的源数据的方案。此方案将传递到 NoSQL 接收器。
-
数据类型:对象
-
强制性 (Y/N): N
schemaInfo.schemaPath(schemaInfo.schemaPath)
-
用途:指定包含要迁移的 NoSQL 表的 DDL 语句的方案定义文件的绝对路径。
-
数据类型:字符串
-
强制性 (Y/N): Y
-
示例:
"schemaInfo": { "schemaPath": "<path to the schema file>" }
OCI 对象存储存储桶中的 JSON 文件
OCI 对象存储桶中作为 NoSQL 数据库迁移器的源的 JSON 文件的配置文件格式如下所示。
您可以通过在源配置模板中指定存储桶的名称来迁移 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-02-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-04T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-02-04T02:38:57.520Z","numfield":28,"strfield":"foo3"},{"datefield":"2023-02-04T02:38:57.520Z","numfield":38,"strfield":"bar"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}
注: OCI Object Storage 源类型的有效接收器类型为 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>,
"useSessionToken" : <true|false>,
"useOKEWorkloadIdentity" : <true|false>
}
来源参数
公用配置参数
-
使用
"type" : "object_storage_oci" -
使用
"format" : "json" -
示例:
-
区域 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" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
示例:
"useInstancePrincipal" : true -
示例:
"useDelegationToken" : true注:仅当 NoSQL 数据库迁移程序从 Cloud Shell 运行时,才支持使用委派令牌进行验证。
-
示例:
"useOKEWorkloadIdentity" : true -
示例:
"useSessionToken" : true
唯一配置参数
-
用途:指定要迁移的源数据的方案。此方案将传递到 NoSQL 接收器。
-
数据类型:对象
-
强制性 (Y/N): N
-
用途:指定存储桶中用于存储所迁移数据的 NoSQL 表方案定义的对象的名称。
-
数据类型:字符串
-
强制性 (Y/N): Y
-
示例:
"schemaInfo": { "schemaObject": "mytable/Schema/schema.ddl" },
MongoDB 格式的 JSON 文件
作为 NoSQL 数据库迁移器的源的 MongoDB 格式 JSON 文件的配置文件格式如下所示。
您可以通过在源配置模板中指定文件或目录来迁移 MongoDB 导出的 JSON 数据。
MongoDB 支持 JSON 文件格式的两种扩展类型:规范模式和放松模式。您可以在规范或放松模式下提供使用 mongoexport 工具生成的 MongoDB 格式的 JSON 文件。NoSQL 数据库迁移器支持这两种模式进行迁移。
有关 MongoDB Extended JSON (v2) 文件的更多信息,请参见 mongoexport_formats 。
有关生成 MongoDB 格式的 JSON 文件的更多信息,请参见 mongoexport 了解更多信息。
MongoDB 格式的放松模式 JSON 文件示例如下所示:
{"_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>"
}
}
来源参数
公用配置参数
唯一配置参数
-
用途:指定包含用于迁移的 MongoDB 导出的 JSON 数据的文件或目录的绝对路径。
您可以提供使用 mongoexport 工具生成的 MongoDB 格式的 JSON 文件。
如果指定目录,NoSQL 数据库迁移程序将标识该目录中具有
.json扩展名的所有用于迁移的文件。不支持子目录。您必须确保此数据与接收器上定义的 NoSQL 表方案匹配。 -
数据类型:字符串
-
强制性 (Y/N): Y
-
示例:
-
指定 MongoDB 格式化 JSON 文件
"dataPath" : "/home/user/sample.json" -
指定一个目录
"dataPath" : "/home/user"
-
-
用途:指定要迁移的源数据的方案。此方案将传递到有效的接收器。
-
数据类型:对象
-
强制性 (Y/N): N
schemaInfo.schemaPath(schemaInfo.schemaPath)
-
用途:指定包含要迁移的 NoSQL 表的 DDL 语句的方案定义文件的绝对路径。
-
数据类型:字符串
-
强制性 (Y/N): Y
-
示例:
"schemaInfo" : { "schemaPath" : "/home/user/mytable/Schema/schema.ddl" }
OCI Object Storage 存储桶中 MongoDB 格式的 JSON 文件
OCI Object Storage 存储桶中 MongoDB 格式的 JSON 文件作为 NoSQL 数据库迁移器的源的配置文件格式如下所示。
通过在源配置模板中指定存储桶的名称,可以迁移 OCI 对象存储存储桶中 MongoDB 导出的 JSON 数据。
使用 mongoexport 实用程序从 MongoDB 提取数据,并将其上载到 OCI Object Storage 存储桶。有关更多信息,请参见 mongoexport 。MongoDB 支持 JSON 文件格式的两种扩展类型:规范模式和放松模式。OCI 对象存储存储桶支持这两种格式。
MongoDB 格式的放松模式 JSON 文件示例如下所示:
{"_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 Object Storage 源类型的有效接收器类型为 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>,
"useDelegationToken" : <true|false>,
"useSessionToken" : <true|false>,
"useOKEWorkloadIdentity" : <true|false>
}
来源参数
公用配置参数
-
使用
"type" : "object_storage_oci" -
使用
"format" : "mongodb_json" -
示例:
-
区域 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" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
示例:
"useInstancePrincipal" : true -
示例:
"useDelegationToken" : true注:仅当 NoSQL 数据库迁移程序从 Cloud Shell 运行时,才支持使用委派令牌进行验证。
-
示例:
"useOKEWorkloadIdentity" : true -
示例:
"useSessionToken" : true
唯一配置参数
-
用途:指定要迁移的源数据的方案。此方案将传递到 NoSQL 接收器。
-
数据类型:对象
-
强制性 (Y/N): N
-
用途:指定存储桶中用于存储所迁移数据的 NoSQL 表方案定义的对象的名称。
-
数据类型:字符串
-
强制性 (Y/N): Y
-
示例:
"schemaInfo": { "schemaObject": "mytable/Schema/schema.ddl" }
存储在 AWS S3 中的 DynamoDB 格式的 JSON 文件
下面显示了作为 NoSQL 数据库迁移器的源的 AWS S3 中 DynamoDB 格式的 JSON 文件的配置文件格式。
您可以通过在源配置模板中指定路径,从 AWS S3 存储迁移包含 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"},"ttl": {"N": "1734616800"}}}
{"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"},"ttl": {"N": "1734616800"}}}
必须按将 DynamoDB 表数据导出到 Amazon S3 中指定的那样将 DynamoDB 表导出到 AWS S3 存储。
AWS S3 中存储的 DynamoDB 格式 JSON 的有效接收器类型为 nosqldb 和 nosqldb_cloud。
源配置模板
"source" : {
"type" : "aws_s3",
"format" : "dynamodb_json",
"ttlAttributeName" : "<DynamoDB exported TTL attribute name>",
"s3URL" : "<S3 object url>",
"credentials" : "</path/to/aws/credentials/file>",
"credentialsProfile" : "<profile name in aws credentials file>"
}
来源参数
公用配置参数
唯一配置参数
-
用途:指定存储在 AWS S3 中的已导出 DynamoDB 表的 URL。您可以从 AWS S3 控制台获取此 URL。有效的 URL 格式为
https://<bucket-name>.<s3_endpoint>/<prefix>。在导入期间,NoSQL 数据库迁移程序将在前缀中查找json.gz文件。注:必须按将 DynamoDB 表数据导出到 Amazon S3 中指定的那样导出 DynamoDB 表。
-
数据类型:字符串
-
强制性 (Y/N): Y
-
示例:
https://my-bucket.s3.ap-south-1.amazonaws.com/AWSDynamoDB/01649660790057-14f642be
-
目的:指定包含 AWS 凭证的文件的绝对路径。如果未指定,则默认为
$HOME/.aws/credentials。有关身份证明文件的更多详细信息,请参见 Configuration and credential file settings 。 -
数据类型:字符串
-
强制性 (Y/N): N
-
示例:
"credentials" : "/home/user/.aws/credentials""credentials" : "/home/user/security/credentials注: NoSQL 数据库迁移程序不会记录任何身份证明信息。必须正确保护凭证文件,以防止未经授权的访问。
- 目的:要用于连接到 AWS S 的 AWS 凭证文件中的配置文件的名称
- 用户帐户凭证称为配置文件。如果未指定此值,NoSQL Database Migrator 将使用
default概要文件。有关身份证明文件的更多详细信息,请参见 Configuration and credential file settings 。
- 用户帐户凭证称为配置文件。如果未指定此值,NoSQL Database Migrator 将使用
-
数据类型:字符串
-
强制性 (Y/N): N
-
示例:
"credentialsProfile" : "default""credentialsProfile" : "test"
-
用途:指定导出的 DynamoDB 表数据中存在的 TTL 属性的名称。仅当 DynamoDB 表数据具有 TTL 属性并且您希望在导入到 NoSQL 数据库时对导入的数据设置 TTL 值时,才包括此参数。
注:要使用 TTL 元数据进行导入,必须在汇配置模板(
nosqldb和nosqldb_cloud)中将 includeTTL 配置参数设置为 true。 -
数据类型:字符串
-
强制性 (Y/N): N
-
示例:
"ttlAttributeName" : "ttl"
DynamoDB 格式的 JSON 文件
下面显示了将 DynamoDB 格式的 JSON 文件作为 NoSQL 数据库迁移器的源的配置文件格式。
通过在源配置模板中指定路径,可以迁移包含 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"},"ttl": {"N": "1734616800"}}}
{"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"},"ttl": {"N": "1734616800"}}}
您必须将导出的 DynamoDB 表数据从 AWS S3 存储复制到本地挂载的文件系统。
DynamoDB JSON 文件的有效接收器类型为 nosqldb 和 nosqldb_cloud。
源配置模板
"source" : {
"type" : "file",
"format" : "dynamodb_json",
"ttlAttributeName" : <DynamoDB exported TTL attribute name>,
"dataPath" : "<path/to/[file|dir]/containing/exported/DDB/tabledata>"
}
来源参数
公用配置参数
唯一配置参数
-
用途:指定包含导出的 DynamoDB 表数据的文件或目录的绝对路径。您必须将导出的 DynamoDB 表数据从 AWS S3 复制到本地挂载的文件系统。您必须确保此数据与接收器上定义的 NoSQL 表方案匹配。如果指定目录,NoSQL 数据库迁移程序将标识该目录中具有
.json.gz扩展名的所有文件以及data子目录。 -
数据类型:字符串
-
强制性 (Y/N): Y
-
示例:
-
指定文件
"dataPath" : "/home/user/AWSDynamoDB/01639372501551-bb4dd8c3/data/zclclwucjy6v5mkefvckxzhfvq.json.gz" -
指定一个目录
"dataPath" : "/home/user/AWSDynamoDB/01639372501551-bb4dd8c3"
-
-
用途:指定导出的 DynamoDB 表数据中存在的 TTL 属性的名称。仅当 DynamoDB 表数据具有 TTL 属性并且您希望在导入到 NoSQL 数据库时对导入的数据设置 TTL 值时,才包括此参数。
注:要使用 TTL 元数据进行导入,必须在汇配置模板(
nosqldb和nosqldb_cloud)中将 includeTTL 配置参数设置为 true。 -
数据类型:字符串
-
强制性 (Y/N): N
-
示例:
"ttlAttributeName" : "ttl"
Oracle NoSQL 数据库
Oracle NoSQL Database 作为 NoSQL Database Migrator 源的配置文件格式如下所示。
通过在源配置模板中指定表名,可以从 Oracle NoSQL Database 迁移表。
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>",
"queryFilter" : "<query predicate>",
"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=TLSv 1.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" : 5000
唯一配置参数
-
用途:Oracle NoSQL Database 存储的名称。
-
数据类型:字符串
-
强制性 (Y/N): Y
-
示例:
"storeName" : "kvstore"
-
用途:以
hostname:port格式列出的主机和注册表端口对。使用逗号分隔列表中的每一项。必须至少指定一个帮助程序主机。 -
数据类型:字符串数组
-
强制性 (Y/N): Y
-
示例:
"helperHosts" : ["localhost:5000","localhost:6000"]
-
用途:要从中迁移数据的全限定表名。
格式:
[namespace_name:]<table_name>如果表位于 DEFAULT 名称空间中,则可以省略
namespace_name。该表必须存在于存储中。 -
数据类型:字符串
-
强制性 (Y/N): Y
-
示例:
-
使用 DEFAULT 名称空间
"table" :"mytable" -
使用非默认名称空间
"table" : "mynamespace:mytable" -
指定子表
"table" : "mytable.child"
-
-
用途:指定在导出 Oracle NoSQL Database 表时是否包括表行的 TTL 元数据。如果设置为 true,则行的 TTL 数据也包括在源提供的数据中。TTL 存在于与每行关联的
_metadataJSON 对象中。自 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
-
用途:指定 Migrator 实用程序用于仅导出与提供的条件匹配的行的查询谓词。
Migrator 实用程序将此谓词合并到 SQL 查询的 WHERE 子句中。此查询将应用于源表,以根据指定的条件筛选数据。要指定源表,请使用源配置模板中的
table参数。例如,要仅导出具有
id值 10 的行,请将queryFilter参数设置为"id=10"。Migrator 实用程序将生成以下查询:select $row from <table> $row where id=10在此查询中,Migrator 实用程序使用表别名
$row处理各个行。请注意以下几点:
-
不能使用
queryFilter选择特定列。您可以提供转换以筛选出列。 -
如果不为
queryFilter参数提供值,则 Migrator 实用程序将使用以下查询导出表中的所有行:select $row from $row
-
-
数据类型:JSON 字符串
-
强制性 (Y/N): N
-
示例:
"queryFilter" : "$row.address.city='Houston'"有关其他示例,请参见下面的示例查询谓词表。
受支持的表达式:
Migrator 实用程序支持查询谓词中的以下表达式。有关详细的语法和示例,请参阅 SQL Reference Guide 。
Field step expressions
Map-filter step expressions
Array-filter step expressions
Array-slice step expressions
Arithmetic operators
Value comparison operators
Sequence comparison operators
Logical operators AND, OR and NOT
IS NULL and IS NOT NULL operators
IN operator
Regular expression
EXISTS operator
IS OF TYPE operator
CONCAT operator
CAST expression
Row functions
下表提供了不同表达式的有效查询谓词示例以及生成的导出数据。
注:
-
建议在查询谓词中提供字符串文字时使用单引号 (') 而不是双引号 (")。如果要使用双引号 ("),则必须将其转义。
例如:使用查询谓词
"name='John'"从给定表中选择行,其中name字段中的值是字符串 'John' 。 -
在下列情况下,必须在表达式中包含表别名
$row:-
使用行函数(如
modification_time(), expiration_time(), creation_time())等。有关详细信息,请参阅行上的函数。 -
访问 JSON 列中的特定字段。
-
表 - 示例查询谓词
| 查询/谓词 | 导出的数据 |
|---|---|
| "id=10" | 来自给定表的 id=10 的行。 |
| “name= ’ John ’” | 给定表中名称为“John”的行。 |
| “年龄 >30 岁,性别 = 男性” | 给定表中 age 大于 30 且 gender = 'male' 的行。 |
| “$row.address.state = ‘ CA ’” | 给定表中 address JSON 列中包含 state 字段的行 = 'CA'。在此处,您可以使用谓词中的字段步骤表达式从 JSON 字段访问所需的字段值。 |
| “$row.expenses.keys($value > 1000) = ‘ food ’” | 给定表中的行,其中 expenses 类别 = ‘ food ’且 expenses 金额大于 1000。在此处,您可以使用 map-filter 步骤表达式来选择映射/记录字段的字段名称(关键字)或字段值。 |
| “$row.expenses.keys($value > $.clothes) = ‘ food ’” | 给定表中的行,其中 expenses 类别 = ‘ food ’和 expenses 金额大于 clothes 的支出。 |
| ”[$row.address.phones[$element.area = 650].kind] = ‘工作’” | 给定表中的行,其中数组中电话的区号 = 650,键入 =“work”。在此处,使用 array-filter step expression ,因为 address 字段是 JSON 数组。 |
| “[connections[$element > 100 and $pos < 10]] > 100” | 给定表中的行,最多 10 个连接,连接数 > 100。在此处,使用 array-filter step expression ,因为 connections 字段是一个数组。 |
| “$row.income IS NULL” | 给定表中的行,这些行没有已知收入。有关更多详细信息,请参见 IS NULL and IS NOT NULL Operators 。 |
| “a in (1,5,4)” | 给定表中的行,其中 a 为 1、5 或 4。有关更多详细信息,请参见 IN Operator 。 |
| ((a,b) in((1,‘ a ’),(5,‘ g ’),(4,‘ t'))” | 给定表中的行,其中(a 为 1,b 为‘ a ’)OR(a 为 5,b 为‘ g ’)OR(a 为 4,b 为‘ t ’)。 |
| “regex_like(name,‘ j.* ’)” | 名称以 j 开头的给定表中的行。有关更多详细信息,请参阅正则表达式。 |
| “EXISTS $row.person.address.zipcode” | 给定表中的行,其中 person json 列的地址为 zipcode。有关更多详细信息,请参阅存在运算符。 |
| “$row.address is of type (string)” | 给定表中的行,其中 address 列属于字符串类型。有关详细信息,请参见 Is-Of-Type Operator 。 |
| “lastLogin > CAST(‘ 2022-10-01 ’ AS TIMESTAMP)” | 最后一次登录在 2022 年 10 月 1 日之后的给定表中的行。有关更多详细信息,请参见 Cast Expressions 。 |
| “$row.connections[ ]=any 1” | connections 数组列具有元素 1 的给定表中的行。有关更多详细信息,请参见 Sequence Comparison Operators 。 |
| “modification_time($row) >= 2022-10-01 ’” | 给定表中的行,在 2022 年 10 月 1 日当天或之后进行修改。有关更多详细信息,请参阅行上的函数。 |
| “expiration_time_millis($row) > 0” | 给定表中的未过期行。有关更多详细信息,请参阅行上的函数。 |
Oracle NoSQL Database Cloud Service
Oracle NoSQL Database Cloud Service 作为 NoSQL Database Migrator 源的配置文件格式如下所示。
您可以通过指定表位于源配置模板中的区间的名称或 OCID,从 Oracle NoSQL Database Cloud Service 迁移表。
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>",
"queryFilter" : "<query predicate>",
"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>,
"useSessionToken" : <true|false>,
"useOKEWorkloadIdentity" : <true|false>,
"readUnitsPercent" : <table readunits percent>,
"includeTTL": <true|false>,
"requestTimeoutMs" : <timeout in milli seconds>
}
来源参数
公用配置参数
-
使用
"type" : "nosqldb_cloud" -
示例:
-
区域 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" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
示例:
"useInstancePrincipal" : true -
示例:
"useDelegationToken" : true注:仅当 NoSQL 数据库迁移程序从 Cloud Shell 运行时,才支持使用委派令牌进行验证。
-
示例:
"useOKEWorkloadIdentity" : true -
示例:
"useSessionToken" : true -
示例:
"requestTimeoutMs" : 5000
唯一配置参数
-
用途:要从中迁移数据的表的名称。
-
数据类型:字符串
-
强制性 (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" : "ocid 1.tenancy.oc1...4ksd"
-
-
用途:迁移 NoSQL 表时要使用的表读取单位百分比。
默认值为 90。有效范围是介于 1 到 100 之间的任意整数。迁移数据所需的时间量与此属性直接成比例。最好为迁移活动增加表的读取吞吐量。您可以在迁移过程完成后降低读取吞吐量。
要了解吞吐量更改的每日限制,请参阅 Oracle NoSQL Database Cloud Service 文档中的云限制。
要了解如何使用此属性来提高数据迁移速度,请参阅 Oracle NoSQL Database Migrator 故障排除
-
数据类型:整型
-
强制性 (Y/N): N
-
示例:
"readUnitsPercent" : 90
-
用途:指定在导出 Oracle NoSQL Database Cloud Service 表时是否包括表行的 TTL 元数据。如果设置为 true,则行的 TTL 数据也包括在源提供的数据中。TTL 存在于与每一行关联的
_metadataJSON 对象中。自 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
-
用途:指定 Migrator 实用程序用于仅导出与提供的条件匹配的行的查询谓词。
Migrator 实用程序将此谓词合并到 SQL 查询的 WHERE 子句中。此查询将应用于源表,以根据指定的条件筛选数据。要指定源表,请使用源配置模板中的
table参数。例如,要仅导出具有
id值 10 的行,请将queryFilter参数设置为"id=10"。Migrator 实用程序将生成以下查询:select $row from <table> $row where id=10在上面的查询中,迁移程序实用程序使用表别名
$row来处理各个行。请注意以下几点:
-
不能使用
queryFilter选择特定列。您可以提供转换以筛选出列。 -
如果不为
queryFilter参数提供值,则 Migrator 实用程序将使用以下查询导出表中的所有行:select $row from $row`
-
-
数据类型:JSON 字符串
-
强制性 (Y/N): N
-
示例:
"queryFilter" : "$row.address.city='Houston'"有关其他示例,请参见下面的示例查询谓词表。
受支持的表达式:
Migrator 实用程序支持查询谓词中的以下表达式。有关详细的语法和示例,请参阅 SQL Reference Guide 。
Field step expressions
Map-filter step expressions
Array-filter step expressions
Array-slice step expressions
Arithmetic operators
Value comparison operators
Sequence comparison operators
Logical operators AND, OR and NOT
IS NULL and IS NOT NULL operators
IN operator
Regular expression
EXISTS operator
IS OF TYPE operator
CONCAT operator
CAST expression
Row functions
下表提供了不同表达式的有效查询谓词示例以及生成的导出数据。
注:
-
建议在查询谓词中提供字符串文字时使用单引号 (') 而不是双引号 (")。如果要使用双引号 ("),则必须将其转义。
例如:使用查询谓词
"name='John'"从给定表中选择行,其中name字段中的值是字符串 'John' 。 -
在下列情况下,必须在表达式中包含表别名
$row:- 使用行函数(如
modification_time(), expiration_time(), creation_time())等。有关详细信息,请参阅行上的函数。 - 访问 JSON 列中的特定字段。
- 使用行函数(如
表 - 示例查询谓词
| 查询/谓词 | 导出的数据 |
|---|---|
| "id=10" | 来自给定表的标识 = 10 的行。 |
| “name= ’ John ’” | 给定表中名称为“John”的行。 |
| “年龄 >30 岁,性别 = 男性” | 给定表中 age 大于 30 且 gender = 'male' 的行。 |
| “$row.address.state = ‘ CA ’” | 给定表中 address JSON 列中包含 state 字段的行 = 'CA'。在此处,您可以使用谓词中的字段步骤表达式从 JSON 字段访问所需的字段值。 |
| “$row.expenses.keys($value > 1000) = ‘ food ’” | 给定表中的行,其中 expenses 类别 = ‘ food ’且 expenses 金额大于 1000。在此处,您可以使用 map-filter 步骤表达式来选择映射/记录字段的字段名称(关键字)或字段值。 |
| “$row.expenses.keys($value > $.clothes) = ‘ food ’” | 给定表中的行,其中 expenses 类别 = ‘ food ’和 expenses 金额大于 clothes 的支出。 |
| ”[$row.address.phones[$element.area = 650].kind] = ‘工作’” | 给定表中的行,其中数组中电话的区号 = 650,键入 =“work”。在此处,使用 array-filter step expression ,因为 address 字段是 JSON 数组。 |
| “[connections[$element > 100 and $pos < 10]] > 100” | 给定表中的行,最多 10 个连接,连接数 > 100。在此处,使用 array-filter step expression ,因为 connections 字段是一个数组。 |
| “$row.income IS NULL” | 给定表中的行,这些行没有已知收入。有关更多详细信息,请参见 IS NULL and IS NOT NULL Operators 。 |
| “a in (1,5,4)” | 给定表中的行,其中 a 为 1、5 或 4。有关更多详细信息,请参见 IN Operator 。 |
| ((a,b) in((1,‘ a ’),(5,‘ g ’),(4,‘ t'))” | 给定表中的行,其中(a 为 1,b 为‘ a ’)OR(a 为 5,b 为‘ g ’)OR(a 为 4,b 为‘ t ’)。 |
| “regex_like(name,‘ j.* ’)” | 名称以 j 开头的给定表中的行。有关更多详细信息,请参阅正则表达式。 |
| “EXISTS $row.person.address.zipcode” | 给定表中的行,其中 person json 列的地址为 zipcode。有关更多详细信息,请参见 Exists Operator 。 |
| “$row.address is of type (string)” | 给定表中的行,其中 address 列属于字符串类型。有关详细信息,请参见 Is-Of-Type Operator 。 |
| “lastLogin > CAST(‘ 2022-10-01 ’ AS TIMESTAMP)” | 最后一次登录在 2022 年 10 月 1 日之后的给定表中的行。有关更多详细信息,请参见 Cast Expressions 。 |
| “$row.connections[ ]=any 1” | connections 数组列具有元素 1 的给定表中的行。有关更多详细信息,请参见 Sequence Comparison Operators 。 |
| “modification_time($row) >= 2022-10-01 ’” | 给定表中的行,在 2022 年 10 月 1 日当天或之后进行修改。有关更多详细信息,请参阅行上的函数。 |
| “expiration_time_millis($row) > 0” | 给定表中的未过期行。有关更多详细信息,请参阅行上的函数。 |
CSV 文件源
下面显示了作为 NoSQL 数据库迁移器的源的 CSV 文件的配置文件格式。CSV 文件必须符合 RFC4180 格式。
您可以通过在源配置模板中指定文件名或目录来迁移 CSV 文件或包含 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>"
}
}
来源参数
公用配置参数
唯一配置参数
-
目的:指定包含要迁移的 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 数据库迁移程序工具会记录有关失败的输入记录的信息,以便进行调试和提供信息。有关更多详细信息,请参阅使用 Oracle NoSQL Data Migrator 中的 Logging Migrator Progress 。
-
用途:指定 CSV 文件是否具有标题。如果将其设置为
true,则会忽略第一行。如果将其设置为false,则第一行被视为 CSV 记录。默认值为false。 -
数据类型:布尔型
-
强制性 (Y/N): N
-
示例:
"hasHeader" : "false"
-
用途:指定 NoSQL 数据库表列名的列表。列名的顺序指示 CSV 文件字段与对应的 NoSQL 数据库表列的映射。如果输入 CSV 文件列的顺序与现有或新创建的 NoSQL 数据库表列不匹配,则可以使用此参数映射排序。此外,在导入具有身份列的表时,可以跳过
columns参数中的“身份”列名称。注:
-
如果 NoSQL 数据库表具有 CSV 文件中不可用的附加列,则使用 NoSQL 数据库表中定义的默认值更新缺少的列的值。如果未提供默认值,则在迁移期间将插入 Null 值。有关默认值的更多信息,请参阅 SQL Reference Guide 中的 Data Type Definitions 部分。
-
如果 CSV 文件有未在 NoSQL 数据库表中定义的附加列,则会忽略附加列信息。
-
如果 CSV 记录中的任何值为空,则将其设置为 NoSQL 数据库表中相应列的默认值。如果未提供默认值,则在迁移期间将插入 Null 值。
-
-
数据类型:字符串数组
-
强制性 (Y/N): N
-
示例:
"columns" : ["table_column_1", "table_column_2"]
-
用途:指定 CSV 文件的格式设置选项。提供 CSV 文件的字符集编码格式,并选择是否修剪空格。
-
数据类型:对象
-
强制性 (Y/N): N
csvOptions.encoding(csvOptions.encoding)
-
用途:指定用于对 CSV 文件进行解码的字符集。默认值为
UTF-8。支持的字符集为US-ASCII, ISO-8859-1, UTF-8,和UTF-16。 -
数据类型:字符串
-
强制性 (Y/N): N
-
示例:
"encoding" : "UTF-8"
-
用途:指定是否必须修剪 CSV 字段值的前导和尾随空格。默认值为
false。 -
数据类型:布尔型
-
强制性 (Y/N): N
-
示例:
"trim" : "true"
OCI 对象存储存储桶中的 CSV 文件
下面显示了作为 NoSQL 数据库迁移器源的 OCI 对象存储存储桶中 CSV 文件的配置文件格式。CSV 文件必须符合 RFC4180 格式。
您可以通过在源配置模板中指定存储桶的名称来迁移 OCI 对象存储存储桶中的 CSV 文件。
OCI Object Storage 存储桶中的示例 CSV 文件如下所示:
1,"Computer Science","San Francisco","2500"
2,"Bio-Technology","Los Angeles","1200"
3,"Journalism","Las Vegas","1500"
4,"Telecommunication","San Francisco","2500"
注: OCI Object Storage 源类型的有效接收器类型为 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>,
"useDelegationToken" : <true|false>,
"useSessionToken" : <true|false>,
"useOKEWorkloadIdentity" : <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 数据库迁移程序以对象方式导入具有 .
csv或.CSV扩展名的所有文件,并按相同的顺序将它们复制到单个表中。 -
CSV 文件只能包含标量值。不支持导入包含复杂类型(例如 MAP、RECORD、ARRAY 和 JSON)的 CSV 文件。NoSQL Database Migrator 工具不检查输入 CSV 文件中的数据是否正确。NoSQL 数据库迁移器工具支持导入符合
RFC4180格式的 CSV 数据。包含不符合RFC4180标准的数据的 CSV 文件可能无法正确复制或可能导致错误。如果输入数据损坏,NoSQL Database Migrator 工具将不解析 CSV 记录。如果在迁移过程中遇到任何错误,NoSQL 数据库迁移程序工具会记录有关失败的输入记录的信息,以便进行调试和提供信息。有关更多详细信息,请参阅使用 Oracle NoSQL Data Migrator 中的 Logging Migrator Progress 。
-
-
示例:
-
"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" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
示例:
"useInstancePrincipal" : true -
示例:
"useDelegationToken" : true注:仅当 NoSQL 数据库迁移程序从 Cloud Shell 运行时,才支持使用委派令牌进行验证。
-
示例:
"useOKEWorkloadIdentity" : true -
示例:
"useSessionToken" : true
唯一配置参数
-
用途:指定 CSV 文件是否具有标题。如果将其设置为
true,则会忽略第一行。如果将其设置为false,则第一行被视为 CSV 记录。默认值为false。 -
数据类型:布尔型
-
强制性 (Y/N): N
-
示例:
"hasHeader" : "false"
-
用途:指定 NoSQL 数据库表列名的列表。列名的顺序指示 CSV 文件字段与对应的 NoSQL 数据库表列的映射。如果输入 CSV 文件列的顺序与现有或新创建的 NoSQL 数据库表列不匹配,则可以使用此参数映射排序。此外,在导入具有身份列的表时,可以跳过
columns参数中的“身份”列名称。注:
-
如果 NoSQL 数据库表具有 CSV 文件中不可用的附加列,则使用 NoSQL 数据库表中定义的默认值更新缺少的列的值。如果未提供默认值,则在迁移期间将插入 Null 值。有关默认值的更多信息,请参阅 SQL Reference Guide 中的 Data Type Definitions 部分。
-
如果 CSV 文件有未在 NoSQL 数据库表中定义的附加列,则会忽略附加列信息。
-
如果 CSV 记录中的任何值为空,则将其设置为 NoSQL 数据库表中相应列的默认值。如果未提供默认值,则在迁移期间将插入 Null 值。
-
-
数据类型:字符串数组
-
强制性 (Y/N): N
-
示例:
"columns" : ["table_column_1", "table_column_2"]
-
用途:指定 CSV 文件的格式设置选项。提供 CSV 文件的字符集编码格式,并选择是否修剪空格。
-
数据类型:对象
-
强制性 (Y/N): N
csvOptions.encoding(csvOptions.encoding)
-
用途:指定用于对 CSV 文件进行解码的字符集。默认值为
UTF-8。支持的字符集为US-ASCII, ISO-8859-1, UTF-8,和UTF-16。 -
数据类型:字符串
-
强制性 (Y/N): N
-
示例:
"encoding" : "UTF-8"
-
用途:指定是否必须修剪 CSV 字段值的前导和尾随空格。默认值为
false。 -
数据类型:布尔型
-
强制性 (Y/N): N
-
示例:
"trim" : "true"
Sink 配置模板
了解每个有效接收器的接收器配置文件格式以及每个配置参数的用途。
有关配置文件模板,请参阅 Terminology used with NoSQL Data Migrator 中的 Configuration File 。
有关每个接收器的有效源格式的详细信息,请参见 Source Configuration Templates 。
主题
以下主题介绍了 Oracle NoSQL Database Migrator 引用的汇配置模板,用于将数据从有效源复制到给定汇。
-
指定的 JSON 文件。
-
指定目录中的 Parquet 文件。
-
指定 OCI 对象存储存储桶中的 JSON 文件。
-
指定 OCI 对象存储存储桶中的 Parquet 文件。
-
Oracle NoSQL Database 中的指定表。
-
Oracle NoSQL Database Cloud Service
Oracle NoSQL Database Cloud Service 中的指定表。
JSON 文件接收器
JSON 文件作为 NoSQL 数据库迁移器的接收器的配置文件格式如下所示。
接收器配置模板
"sink" : {
"type" : "file",
"format" : "json",
"dataPath": "</path/to/a/directory>",
"schemaPath" : "<path/to/a/file>",
"pretty" : <true|false>,
"useMultiFiles" : <true|false>,
"chunkSize" : <size in MB>
}
接收器参数
公用配置参数
-
使用
"type" : "file" -
使用
"format" : "json" -
示例:
"chunkSize" : 40注:仅当 useMultiFiles 参数设置为 true 时,此参数才适用。
唯一配置参数
-
用途:指定 NoSQL Database Migrator 以 JSON 格式复制源数据的目录的路径。
NoSQL 数据库迁移程序在指定目录中创建 JSON 文件。如果文件存在,NoSQL Database Migrator 将使用源数据覆盖其内容。
确保该目录已存在并且具有读写权限。
-
数据类型:字符串
-
强制性 (Y/N): Y
-
示例:
"dataPath" : "/home/user/data"成功迁移后,dataPath 参数中指定的目录将包括导出的文件,如以下示例中所示:
|--<Table_name>_1_5.json |--<Table_name>_6_10.json ...
-
用途:指定用于写入源提供的表方案信息的文件的绝对路径。
如果未定义此值,则源方案信息将不会迁移到汇。如果指定了此值,则迁移程序实用程序会将源表的方案写入此处指定的文件。
方案信息将作为此文件中每行的 DDL 命令写入。如果指定的数据路径中不存在该文件,NoSQL 数据库迁移程序将创建该文件。如果已存在,NoSQL 数据库迁移程序将使用源数据覆盖其内容。必须确保数据路径中的父目录对指定文件有效。
-
数据类型:字符串
-
强制性 (Y/N): N
-
示例:
"schemaPath" : "/home/user/schema_file"
-
用途:指定是否美化 JSON 输出以提高可读性。
如果未指定,则默认为“假”。
-
数据类型:布尔值
-
强制性 (Y/N): N
-
示例:
"pretty" : true
-
用途:指定在将 NoSQL 数据库表数据迁移到目录时是否将导出的文件(在 dataPath 参数中指定的目录下创建)进一步拆分为多个特定大小的子文件。useMultiFiles 参数默认为 true。
在导出数据时,NoSQL 数据库迁移程序会将 NoSQL 数据库表数据拆分为多个文件。如果 useMultiFiles 参数设置为 true,则每个导出的文件将进一步拆分为 chunkSize 参数中指定的大小子文件。
示例:成功迁移后,dataPath 参数中指定的目录将包括导出的文件,如以下示例中所示:
|--<Table_name>_1_5_0.json |--<Table_name>_1_5_1.json |--<Table_name>_6_10_0.json |--<Table_name>_6_10_1.json |--<Table_name>_6_10_2.json ... -
数据类型:布尔值
-
强制性 (Y/N): N
-
示例:
"useMultiFiles" : true
Parquet 文件
Parquet 文件作为 NoSQL 数据库迁移器的接收器的配置文件格式如下所示。
接收器配置模板
"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>
}
}
接收器参数
公用配置参数
唯一配置参数
-
用途:指定用于存储迁移的 NoSQL 表数据的目录的路径。确保该目录已存在并且具有读写权限。
-
数据类型:字符串
-
强制性 (Y/N): Y
-
示例:
"dataPath" : "/home/user/migrator/my_table"
-
用途:指定用于压缩 Parquet 数据的压缩类型。有效值为 SNAPPY 、 GZIP 和 NONE 。
如果未指定,则默认为 SNAPPY 。
-
数据类型:字符串
-
强制性 (Y/N): N
-
示例:
"compression" : "GZIP"
-
用途:指定用于为 NoSQL ENUM、JSON 和 UUID 列选择 Parquet 逻辑类型的选项。
如果不指定此参数,NoSQL 数据库迁移程序会将 ENUM、JSON 和 UUID 列的数据写入为字符串。
-
数据类型:对象
-
强制性 (Y/N): N
-
用途:指定是否将 NoSQL JSON 列数据写入为 Parquet 逻辑 JSON 类型。有关更多信息,请参见 Parquet Logical Type Definitions 。
如果未指定或设置为 false,NoSQL 数据库迁移程序会将 NoSQL JSON 列数据写入字符串。
-
数据类型:布尔值
-
强制性 (Y/N): N
-
示例:
"useLogicalJson" : true
-
用途:指定是否将 NoSQL ENUM 列数据写入为 Parquet 逻辑 ENUM 类型。有关更多信息,请参见 Parquet Logical Type Definitions 。
如果未指定或设置为 false,NoSQL 数据库迁移程序会将 NoSQL ENUM 列数据写入字符串。
-
数据类型:布尔值
-
强制性 (Y/N): N
-
示例:
"useLogicalEnum" : true
-
用途:指定是否将 NoSQL UUID 列数据写入为 Parquet 逻辑 UUID 类型。有关更多信息,请参见 Parquet Logical Type Definitions 。
如果未指定或设置为 false,NoSQL 数据库迁移程序会将 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 Object Storage 存储桶中 JSON 文件作为 NoSQL 数据库迁移器的接收器的配置文件格式如下所示。
注: OCI Object Storage 作为接收器的有效源类型为 nosqldb 和 nosqldb_cloud。
接收器配置模板
"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>,
"useSessionToken" : <true|false>,
"useOKEWorkloadIdentity" : <true|false>
}
接收器参数
公用配置参数
-
使用
"type" : "object_storage_oci" -
使用
"format" : "json" -
示例:
-
区域 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" : 40 -
示例:
-
"credentials" : "/home/user/.oci/config" -
"credentials" : "/home/user/security/config"
-
- credentialsProfile 示例:
-
"credentialsProfile" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
示例:
"useInstancePrincipal" : true -
示例:
"useDelegationToken" : true注:仅当 NoSQL 数据库迁移程序从 Cloud Shell 运行时,才支持使用委派令牌进行验证。
-
示例:
"useOKEWorkloadIdentity" : true -
示例:
"useSessionToken" : true
唯一配置参数
pretty
-
用途:指定是否美化 JSON 输出以提高可读性。
如果未指定,则默认为“假”。
-
数据类型:布尔值
-
强制性 (Y/N): N
-
示例:
"pretty" : true
OCI 对象存储存储桶中的 Parquet 文件
OCI Object Storage 存储桶中 Parquet 文件作为 NoSQL 数据库迁移器的接收器的配置文件格式如下所示。
注: OCI Object Storage 源类型的有效源类型为 nosqldb 和 nosqldb_cloud。
接收器配置模板
"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>,
"useSessionToken" : <true|false>,
"useOKEWorkloadIdentity" : <true|false>
}
接收器参数
公用配置参数
-
使用
"type" : "object_storage_oci" -
使用
"format" : "parquet" -
示例:
-
区域 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" : 40 -
示例:
-
"credentials" : "/home/user/.oci/config" -
"credentials" : "/home/user/security/config"
-
-
示例:
-
"credentialsProfile" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
示例:
"useInstancePrincipal" : true -
示例:
"useDelegationToken" : true注:仅当 NoSQL 数据库迁移程序从 Cloud Shell 运行时,才支持使用委派令牌进行验证。
-
示例:
"useOKEWorkloadIdentity" : true -
示例:
"useSessionToken" : true
唯一配置参数
-
用途:指定用于压缩 Parquet 数据的压缩类型。有效值为 SNAPPY 、 GZIP 和 NONE 。
如果未指定,则缺省为 SNAPPY 。
-
数据类型:字符串
-
强制性 (Y/N): N
-
示例:
"compression" : "GZIP"
-
用途:指定用于为 NoSQL ENUM、JSON 和 UUID 列选择 Parquet 逻辑类型的选项。
如果不指定此参数,NoSQL 数据库迁移程序会将 ENUM、JSON 和 UUID 列的数据写入为字符串。
-
数据类型:对象
-
强制性 (Y/N): N
-
用途:指定是否将 NoSQL JSON 列数据写入为 Parquet 逻辑 JSON 类型。有关更多信息,请参见 Parquet Logical Type Definitions 。
如果未指定或设置为 false,NoSQL 数据库迁移程序会将 NoSQL JSON 列数据写入字符串。
-
数据类型:布尔值
-
强制性 (Y/N): N
-
示例:
"useLogicalJson" : true
-
用途:指定是否将 NoSQL ENUM 列数据写入为 Parquet 逻辑 ENUM 类型。有关更多信息,请参见 Parquet Logical Type Definitions 。
如果未指定或设置为 false,NoSQL 数据库迁移程序会将 NoSQL ENUM 列数据写入字符串。
-
数据类型:布尔值
-
强制性 (Y/N): N
-
示例:
"useLogicalEnum" : true
-
用途:指定是否将 NoSQL UUID 列数据写入为 Parquet 逻辑 UUID 类型。有关更多信息,请参见 Parquet Logical Type Definitions 。
如果未指定或设置为 false,NoSQL 数据库迁移程序会将 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 数据库
Oracle NoSQL Database 作为 NoSQL Database Migrator 的汇的配置文件格式如下所示。
接收器配置模板
"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>
}
接收器参数
公用配置参数
-
使用
"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" : 5000
唯一配置参数
-
用途:Oracle NoSQL Database 存储的名称。
-
数据类型:字符串
-
强制性 (Y/N): Y
-
示例:
"storeName" : "kvstore"
-
用途:以
hostname:port格式列出的主机和注册表端口对。使用逗号分隔列表中的每一项。必须至少指定一个帮助程序主机。 -
数据类型:字符串数组
-
强制性 (Y/N): Y
-
示例:
"helperHosts" : ["localhost:5000","localhost:6000"]
-
用途:指定用于存储迁移数据的表名。
格式:
[namespace_name:]<table_name>如果表位于 DEFAULT 名称空间中,则可以省略
namespace_name。表在迁移过程中必须存在于存储中,并且其方案必须与源数据匹配。如果该表在接收器中不可用,可以使用
schemaInfo参数指示 NoSQL 数据库迁移器在接收器中创建该表。 -
数据类型:字符串
-
强制性 (Y/N): Y
-
示例:
-
使用 DEFAULT 名称空间
"table" :"mytable" -
使用非默认名称空间
"table" : "mynamespace:mytable" -
指定子表
"table" : "mytable.child"
注:您可以将子表从有效数据源迁移到 Oracle NoSQL Database。NoSQL 数据库迁移程序在每次执行中仅复制一个表。确保在子表之前迁移父表。
-
-
用途:指定在导入 Oracle NoSQL Database 表时是否包括源提供的表行的 TTL 元数据。
如果未指定此参数,则默认为
false。在这种情况下,NoSQL 数据库迁移程序在导入 Oracle NoSQL Database 表时不包含源提供的表行的 TTL 元数据。如果设置为 true,NoSQL 数据库迁移器工具将在导入表行时对 TTL 元数据执行以下检查:
-
如果导入的行没有
_metadata定义,NoSQL Database Migrator 工具会将 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(ttlRelativeDate)
-
用途:以 YYYY-MM-DD hh:mm:ss 格式指定 UTC 日期,该格式用于在导入到 Oracle NoSQL Database 时设置表行的 TTL 到期。
如果要导出的数据中的表行已过期,则可以将 ttlRelativeDate 参数设置为导出数据中表行的到期时间之前的某个日期。
如果未指定此参数,则默认为运行 NoSQL 数据库迁移器工具的计算机的 System.currentTimeMillis() 获取的当前时间(以毫秒为单位)。
-
数据类型:日期
-
强制性 (Y/N): N
-
示例:
"ttlRelativeDate" : "2021-01-03 04:31:17"让我们考虑一下在 2021 年 1 月 1 日起的七天后表行到期的情况。导出此表后,在 2021 年 1 月 7 日,您将遇到表问题并决定导入数据。表行将在一天内失效(数据失效日期减去
ttlRelativedate配置参数的默认值,即当前日期)。但是,如果要将表行的到期日期延长到五天而不是一天,请使用ttlRelativeDate参数并选择较早的日期。因此,在这种情况下,如果要将表行的到期时间延长五天,请将ttlRelativeDate配置参数的值设置为 2021 年 1 月 3 日,该值在导入表行时用作参考时间。
-
用途:指定要迁移的数据的方案。如果未指定此项,NoSQL 数据库迁移程序将假定该表已存在于汇的存储中。
-
数据类型:对象
-
强制性 (Y/N): N
schemaInfo.schemaPath(schemaInfo.schemaPath)
-
用途:指定包含 NoSQL 表的 DDL 语句的文件的绝对路径。
NoSQL 数据库迁移程序在迁移数据之前执行此文件中列出的 DDL 命令。
NoSQL 数据库迁移程序不支持
schemaPath文件中每行包含多个 DDL 语句。 -
数据类型:字符串
-
强制性 (Y/N): N
注:
defaultSchema和schemaPath是互斥的。 -
示例:
"schemaPath" : "/home/user/schema_file"
schemaInfo.defaultSchema(schemaInfo.defaultSchema)
-
用途:将此参数设置为 true 将指示 NoSQL 数据库迁移器创建具有默认方案的表。默认方案由迁移程序本身定义。有关默认方案定义的详细信息,请参阅使用 Oracle NoSQL Data Migrator 中的默认方案。
-
数据类型:布尔值
-
强制性 (Y/N): N
注:
defaultSchema和schemaPath是互斥的。
-
用途:指定接收器在迁移 NoSQL 表时是否使用源提供的表方案定义。
-
数据类型:布尔值
-
强制性 (Y/N): N
注: defaultSchema、schemaPath 和 useSourceSchema 参数是互斥的。仅指定这些参数之一。
-
示例:
-
使用默认方案:
"schemaInfo" : { "defaultSchema" : true } -
使用预定义的方案:
"schemaInfo" : { "schemaPath" : "<complete/path/to/the/schema/definition/file>" } -
使用源方案:
"schemaInfo" : { "useSourceSchema" : true }
-
-
用途:指定 DynamoDB 分区键和要在接收器 Oracle NoSQL Database 表中使用的对应 Oracle NoSQL Database 类型。此密钥将用作 NoSQL 数据库表分片密钥。仅当
defaultSchema设置为 true 且源格式为dynamodb_json时,此选项才适用。有关详细信息,请参阅将 DynamoDB 类型映射到 Oracle NoSQL 类型。 -
强制 (Y/N): Y(如果
defaultSchema为 true 并且源为dynamodb_json)。 -
示例:
"DDBPartitionKey" : "PersonID:INTEGER"注:如果分区键包含 dash(-) 或 dot(.),则 Migrator 将将其替换为下划线 (_),因为 NoSQL 列名不支持点和短划线。
-
用途:指定要在目标 Oracle NoSQL Database 表中使用的 DynamoDB 排序键及其对应的 Oracle NoSQL Database 类型。如果导入 DynamoDB 表没有排序键,则不能设置此属性。此键将用作 NoSQL DB 表中主键的非分片部分。仅当
defaultSchema设置为 true 且源为dynamodb_json时才适用。有关详细信息,请参阅将 DynamoDB 类型映射到 Oracle NoSQL 类型。 -
强制性 (Y/N): N
-
示例:
"DDBSortKey" : "Skey:STRING"注:如果排序键包含 dash(-) 或 dot(.),则 Migrator 将将其替换为下划线 (_),因为 NoSQL 列名不支持点和短划线。
-
目的:指示从源迁移的记录已存在于接收器中时 NoSQL 数据库迁移器的行为。
如果该值设置为 false,则在迁移表时,NoSQL 数据库迁移程序将跳过那些在接收器中已存在相同主键的记录。
如果该值设置为 true,则在迁移表时,NoSQL 数据库迁移程序将覆盖接收器中已存在相同主键的记录。
如果未指定,则默认为 true。
-
数据类型:布尔值
-
强制性 (Y/N): N
-
示例:
"overwrite" : false
Oracle NoSQL Database Cloud Service
Oracle NoSQL Database Cloud Service 作为 NoSQL 数据库迁移器的接收器的配置文件格式如下所示。
接收器配置模板
"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>,
"useSessionToken" : <true|false>,
"useOKEWorkloadIdentity" : <true|false>,
"writeUnitsPercent" : <table writeunits percent>,
"requestTimeoutMs" : <timeout in milli seconds>,
"overwrite" : <true|false>
}
接收器参数
公用配置参数
-
使用
"type" : "nosqldb_cloud" -
示例:
-
区域 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" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
示例:
"useInstancePrincipal" : true -
示例:
"useDelegationToken" : true注:仅当 NoSQL 数据库迁移程序从 Cloud Shell 运行时,才支持使用委派令牌进行验证。
-
示例:
"useOKEWorkloadIdentity" : true -
示例:
"useSessionToken" : true -
示例:
"requestTimeoutMs" : 5000
唯一配置参数
-
用途:指定用于存储迁移数据的表名。
您必须确保此表存在于 Oracle NoSQL Database Cloud Service 中。否则,必须使用汇配置中的
schemaInfo对象来指示 NoSQL 数据库迁移程序创建表。此表的方案必须与源数据匹配。
-
数据类型:字符串
-
强制性 (Y/N): Y
-
示例:
-
指定表
"table" : "mytable" -
指定子表
"table" : "mytable.child"
注:您可以将子表从有效数据源迁移到 Oracle NoSQL Database Cloud Service。NoSQL 数据库迁移程序在每次执行中仅复制一个表。确保在子表之前迁移父表。
-
-
用途:指定表所在的区间的名称或 OCID。
如果未提供任何值,则默认为 root 区间。
您可以在 OCI 云控制台中的“监管”下的“区间资源管理器”窗口中找到区间的 OCID。
-
数据类型:字符串
-
强制 (Y/N): Y(如果该表不在租户的根区间中)或者 useInstancePrincipal 参数设置为 true 时。
注:如果 useInstancePrincipal 参数设置为 true,则区间必须指定区间 OCID 而不是名称。
-
示例:
-
区间名
"compartment" : "mycompartment" -
使用其父区间进行限定的区间名称
"compartment" : "parent.childcompartment" -
未提供任何值。默认为根区间。
"compartment": "" -
区间 OCID
"compartment" : "ocid1.tenancy.oc1...4ksd"
-
-
用途:指定在导入 Oracle NoSQL Database 表时是否包括源提供的表行的 TTL 元数据。
如果未指定此参数,则默认为
false。在这种情况下,NoSQL 数据库迁移程序在导入 Oracle NoSQL Database 表时不包含源提供的表行的 TTL 元数据。如果设置为 true,NoSQL 数据库迁移器工具将在导入表行时对 TTL 元数据执行以下检查:
-
如果导入的行没有
_metadata定义,NoSQL Database Migrator 工具会将 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(ttlRelativeDate)
-
用途:以 YYYY-MM-DD hh:mm:ss 格式指定 UTC 日期,该格式用于在导入到 Oracle NoSQL Database 时设置表行的 TTL 到期。
如果要导出的数据中的表行已过期,则可以将
ttlRelativeDate参数设置为导出数据中表行的到期时间之前的某个日期。如果未指定此参数,则默认为运行 NoSQL 数据库迁移器工具的计算机的 System.currentTimeMillis() 获取的当前时间(以毫秒为单位)。
-
数据类型:日期
-
强制性 (Y/N): N
-
示例:
"ttlRelativeDate" : "2021-01-03 04:31:17"让我们考虑一下在 2021 年 1 月 1 日起的七天后表行到期的情况。导出此表后,在 2021 年 1 月 7 日,您将遇到表问题并决定导入数据。表行将在一天内失效(数据失效日期减去
ttlRelativedate配置参数的默认值,即当前日期)。但是,如果要将表行的到期日期延长到五天而不是一天,请使用ttlRelativeDate参数并选择较早的日期。因此,在这种情况下,如果要将表行的到期时间延长五天,请将ttlRelativeDate配置参数的值设置为 2021 年 1 月 3 日,该值在导入表行时用作参考时间。
-
用途:指定要迁移的数据的方案。
如果未指定此参数,NoSQL Database Migrator 将假定该表已存在于 Oracle NoSQL Database Cloud Service 中。
如果未指定此参数且该表在汇中不存在,迁移将失败。
-
数据类型:对象
-
强制性 (Y/N): N
schemaInfo.schemaPath(schemaInfo.schemaPath)
-
用途:指定包含 NoSQL 表的 DDL 语句的文件的绝对路径。
NoSQL 数据库迁移程序在迁移数据之前执行此文件中列出的 DDL 命令。
NoSQL 数据库迁移程序不支持
schemaPath文件中每行包含多个 DDL 语句。 -
数据类型:字符串
-
强制性 (Y/N): N
注:defaultSchema 和 schemaPath 是互斥的。
- 示例:
"schemaPath" : "/home/user/schema_file"
schemaInfo.defaultSchema(schemaInfo.defaultSchema)
-
用途:将此参数设置为是将指示 NoSQL Database Migrator 创建具有默认方案的表。默认方案由迁移程序本身定义。有关默认方案定义的详细信息,请参阅使用 Oracle NoSQL Data Migrator 中的默认方案。
-
数据类型:布尔值
-
强制性 (Y/N): N
注:
defaultSchema和schemaPath是互斥的。
-
用途:指定接收器在迁移 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 }
-
-
用途:指定 DynamoDB 分区键和要在接收器 Oracle NoSQL Database 表中使用的对应 Oracle NoSQL Database 类型。此密钥将用作 NoSQL 数据库表分片密钥。仅当
defaultSchema设置为 true 且源格式为dynamodb_json时,此选项才适用。有关详细信息,请参阅将 DynamoDB 类型映射到 Oracle NoSQL 类型。 -
强制 (Y/N): Y(如果
defaultSchema为 true 并且源为dynamodb_json)。 -
示例:
"DDBPartitionKey" : "PersonID:INTEGER"注:如果分区键包含 dash(-) 或 dot(.),则 Migrator 将将其替换为下划线 (_),因为 NoSQL 列名不支持点和短划线。
-
用途:指定要在目标 Oracle NoSQL Database 表中使用的 DynamoDB 排序键及其对应的 Oracle NoSQL Database 类型。如果导入 DynamoDB 表没有排序键,则不能设置此属性。此键将用作 NoSQL DB 表中主键的非分片部分。仅当
defaultSchema设置为 true 且源为dynamodb_json时才适用。有关详细信息,请参阅将 DynamoDB 类型映射到 Oracle NoSQL 类型。 -
强制性 (Y/N): N
-
示例:
"DDBSortKey" : "Skey:STRING"注:如果排序键包含 dash(-) 或 dot(.),则 Migrator 将将其替换为下划线 (_),因为 NoSQL 列名不支持点和短划线。
schemaInfo.onDemandThroughput(schemaInfo.onDemand 吞吐量)
-
用途:指定创建具有按需读取和写入吞吐量的表。如果未设置此参数,则会使用预配的容量创建表。
默认值为
false。
注:此参数不适用于子表,因为它们共享顶层父表的吞吐量。
-
数据类型:布尔型
-
强制性 (Y/N): N
-
示例:
"onDemandThroughput" : "true"
-
用途:指定新表的读取吞吐量。
div class="infoboxnote" markdown="1">
注:
-
此参数不适用于预配了按需容量的表。
-
此参数不适用于子表,因为它们共享顶层父表的读取吞吐量。
</div>
-
-
数据类型:整型
-
强制 (Y/N): Y(如果表不是子表)或 schemaInfo.onDemandThroughput 参数设置为
false,否则为 N。 -
示例:
"readUnits" : 100
-
用途:指定新表的写入吞吐量。
注:
- 此参数不适用于预配了按需容量的表。
- 此参数不适用于子表,因为它们共享顶层父表的写入吞吐量。
-
数据类型:整型
-
强制 (Y/N): Y(如果表不是子表)或 schemaInfo.onDemandThroughput 参数设置为
false,否则为 N。 -
示例:
"writeUnits" : 100
schemaInfo.storageSize(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 }
-
-
用途:指定迁移活动期间要使用的表写入单位的百分比。迁移数据所需的时间量与此属性直接成比例。
默认值为 90。有效范围是介于 1 到 100 之间的任意整数。
要了解如何使用此属性来提高数据迁移速度,请参阅 Oracle NoSQL Database Migrator 故障排除
-
数据类型:整型
-
强制性 (Y/N): N
-
示例:
"writeUnitsPercent" : 90
-
目的:指示从源迁移的记录已存在于接收器中时 NoSQL 数据库迁移器的行为。
如果该值设置为 false,则在迁移表时,NoSQL 数据库迁移程序将跳过那些在接收器中已存在相同主键的记录。
如果该值设置为 true,则在迁移表时,NoSQL 数据库迁移程序将覆盖接收器中已存在相同主键的记录。
如果未指定,则默认为 true。
-
数据类型:布尔值
-
强制性 (Y/N): N
-
示例:
"overwrite" : false
转换配置模板
本主题介绍了 Oracle NoSQL Database Migrator 支持的不同转换的配置参数。有关完整的配置文件模板,请参阅 Terminology used with NoSQL Data Migrator 中的 Configuration File 。
借助 Oracle NoSQL Database Migrator,您可以修改数据,即在迁移活动中添加数据转换。您可以在单个迁移中定义多个转换。在这种情况下,转换顺序至关重要,因为源数据按给定顺序进行每个转换。一个转换的输出将成为迁移程序管道中下一个转换的输入。
NoSQL Data Migrator 支持的不同转换包括:
表 - 变换
| 转换配置属性 | 您可以使用此转换来… |
|---|---|
ignoreFields |
在写入接收器之前,忽略源行中标识的列。 |
includeFields |
在写入接收器之前,请包括源行中标识的列。 |
renameFields |
在写入接收器之前,重命名源行中标识的列。 |
aggregateFields |
将多个列从源聚合到汇集中的单个列。在此转换过程中,您还可以标识要在聚合中排除的列。这些字段将从聚合列中跳过。 |
您可以在下面找到每个支持的转换的配置模板。
无视字段
ignoreFields 转换的配置文件格式如下所示。
转换配置模板
"transforms" : {
"ignoreFields" : ["<field1>","<field2>",...]
}
转换参数
无视字段
-
用途:要从源记录中忽略的列名的数组。
注:您只能提供顶层字段。无法对嵌套字段中的数据应用转换。
-
数据类型:字符串数组
-
强制性 (Y/N): Y
-
示例:要忽略源记录中名为“name”和“address”的列,请执行以下操作:
"ignoreFields" : ["name","address"]
包括字段
includeFields 转换的配置文件格式如下所示。
转换配置模板
"transforms" : {
"includeFields" : ["<field1>","<field2>",...]
}
转换参数
包括字段
-
用途:要从源记录中包括的列名的数组。仅包括数组中指定的字段,其余字段将被忽略。
注:如果指定空数组,NoSQL 数据库迁移器工具将引发错误。此外,您还可以仅指定顶层字段。NoSQL Database Migrator 工具不将转换应用于嵌套字段中的数据。
-
数据类型:字符串数组
-
强制性 (Y/N): Y
-
示例:要包括源记录中名为“age”和“gender”的列,请执行以下操作:
"includeFields" : ["age","gender"]
rename 字段
renameFields 转换的配置文件格式如下所示。
转换配置模板
"transforms" : {
"renameFields" : {
"<old_name>" : "<new_name>",
"<old_name>" : "<new_name>,"
.....
}
}
转换参数
rename 字段
-
用途:要重命名的列的新旧名称的键值对。
注:您只能提供顶层字段。无法对嵌套字段中的数据应用转换。
-
数据类型:JSON 对象
-
强制性 (Y/N): Y
-
示例:要将名为“居住”的列重命名为“地址”,将名为“_ 标识”的列重命名为“标识”:
"renameFields" : { "residence" : "address", "_id" : "id" }
聚合字段
aggregateFields 转换的配置文件格式如下所示。
转换配置模板
"transforms" : {
"aggregateFields" : {
"fieldName" : "name of the new aggregate field",
"skipFields" : ["<field1>","<field2">,...]
}
}
转换参数
聚合字段
-
用途:汇集字段的名称。
-
数据类型:字符串
-
强制性 (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 | PRIMARY KEY |
| 13 | 包含短划线和点的属性名称 | 带下划线的 JSON 字段名称 | 带下划线的列名 |
将 DynamoDB 类型映射到 Oracle NoSQL 类型时,需要考虑的几个附加点:
-
DynamoDB 仅支持 Numbers 的一个数据类型,并且最多可以有 38 位的精度。相比之下,Oracle NoSQL 支持多种类型,可以根据数据的范围和精度进行选择。您可以选择适合输入数据的范围的相应数字类型。如果您不确定数据的性质,则可以使用 NoSQL NUMBER 类型。
-
DynamoDB 仅支持 Numbers 的一个数据类型,并且最多可以有 38 位的精度。相比之下,Oracle NoSQL 支持多种类型,可以根据数据的范围和精度进行选择。您可以选择适合输入数据的范围的相应数字类型。如果您不确定数据的性质,则可以使用 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 | 双倍 |
| 双倍 | 双倍 |
| BINARY | BINARY |
| 固定二进制文件 | BINARY |
| STRING | 二进制(字符串) |
| ENUM | 二进制(字符串) 或者 BINARY(ENUM),如果已配置逻辑 ENUM |
| UUID | 二进制(字符串) 或者 FIXED_BINARY(16),如果已配置逻辑 UUID |
| TIMESTAMP(p) | INT64(TIMESTAMP(p)) |
| NUMBER | 双倍 |
| field_name ARRAY(T) | |
| field_name MAP(T) | |
| field_name RECORD(K1 T1 N1,K ⁇ 2 T2 N2,....) 其中: K = 密钥名称 T = 类型 N = 可为空值或不为空值 |
|
| JSON | 二进制(字符串) 或者 BINARY(JSON),如果配置了逻辑 JSON |
注:当 NoSQL Number 类型转换为 Parquet Double 类型时,如果无法在 Double 中表示值,可能会丢失精度。如果数字太大而无法表示为 Double,则将其转换为 Double.NEGATIVE_INFINITY 或 Double.POSITIVE_INFINITY。
将 DynamoDB 表映射到 Oracle NoSQL 表
在 DynamoDB 中,表是项的集合,每个项都是属性的集合。表中的每一项都有一个唯一标识符或主键。除了主键外,该表还是无模式的。每个项可以有自己的不同属性。
DynamoDB 支持两种不同类型的主键:
-
分区键:由一个称为分区键的属性组成的简单主键。DynamoDB 使用分区键的值作为内部散列函数的输入。散列函数的输出决定了将存储项的分区。
-
分区键和排序键:作为组合主键,此类型的键由两个属性组成。第一个属性是 partition key ,第二个属性是 sort key 。DynamoDB 使用分区键值作为内部散列函数的输入。散列函数的输出决定了将存储项的分区。具有相同分区键值的所有项将按排序键值排序顺序一起存储。
相比之下,Oracle NoSQL 表支持灵活的数据模型,包括方案和无模式设计。
有两种不同的 DynamoDB 表建模方法:
-
将 DynamoDB 表建模为 JSON 文档(建议):在此建模中,您将 Dynamo DB 表的所有属性映射到 NoSQL 表的 JSON 列,但分区键和排序键除外。将分区键和排序键建模为 NoSQL 表的主键列。您将使用
AggregateFields转换将非主键数据聚合到 JSON 列中。注:迁移程序提供了一个用户友好的配置
defaultSchema,用于自动创建无模式 DDL 表,该表还会将属性聚合到 JSON 列中。 -
将 DynamoDB 表建模为 NoSQL 表中的固定列:在此建模中,对于 DynamoDB 表的每个属性,您将在 NoSQL 表中创建一个列,如将 DynamoDB 类型映射到 Oracle NoSQL 类型中指定的列。您将对分区键进行建模,并将键属性排序为主键。仅当您确定导入 DynamoDB 表方案是固定的并且每个项具有大多数属性的值时,才应使用此项。如果 DynamoDB 项没有共同的属性,则可能会导致大量具有空值的 NoSQL 列。
注:由于 DynamoDB 表的性质是无模式,因此我们强烈建议在将数据从 DynamoDB 迁移到 Oracle NoSQL Database 时使用无模式表。这尤其适用于每个记录的内容在表中可能不一致的大型表。
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 数据库迁移程序无法找到为迁移标识的表。 | 对于来源:
对于 Sink:
|
DDL Execution failed |
输入方案定义文件中提供的 DDL 命令无效。 |
|
failed to write record to the sink table with java.lang.IllegalArgumentException |
输入记录与接收器的表方案不匹配。 |
|
Request timeout |
源或汇的操作未在预期时间内完成。 |
|
重新启动失败的迁移之前,我应该考虑什么?
当数据迁移任务失败时,接收器将处于包含导入数据的中间状态,直到出现故障。您可以从日志中确定错误和失败详细信息,并在诊断和更正错误后重新启动迁移。重新启动的迁移将从头开始处理所有数据。无法在出现故障时检查点并重新启动迁移。因此,NoSQL 数据库迁移程序会覆盖已迁移到汇的任何记录。
数据迁移所花费的时间取决于多个因素,例如要迁移的数据量、网络速度、数据库上的当前负载。对于云服务,迁移速度还取决于预配的读取吞吐量和写入吞吐量。因此,为了提高迁移速度,您可以:
-
当数据库负载较少时,请考虑在非工作时间内运行迁移。
-
请考虑分配运行 NoSQL 数据库迁移器的 VM,定义数据源,并在同一 OCI 区域中定义数据汇,以确保最短网络延迟。
-
对于 Oracle NoSQL Database Cloud Service,请验证为表分配的存储是否足够。如果 NoSQL 数据库迁移程序未创建表,则可以提高写入吞吐量。如果迁移程序正在创建表,请考虑为 sink 配置中的
schemaInfo.writeUnits参数指定一个较高值。数据迁移完成后,您可以降低此值。注:您可以提高吞吐量或存储限制的次数没有限制。在 24 小时内,最多只能将吞吐量或存储限制减少 4 次。请参阅云限制和接收配置模板。
Migrator 实用程序本质上旨在通过并行处理多个流来实现更高的迁移速度。以下几点建议如何将此功能用于各种迁移方案:
-
从 Oracle NoSQL Database Cloud Service/内部部署表迁移到文件系统/对象存储接收器:
在迁移器配置中设置 useMultiFiles 和 chunkSize 参数。
useMultiFiles参数在汇处创建多个文件/对象。chunkSize参数确定数据导出期间每个文件的大小。例如:要导出 2 GB 数据,请将
useMultiFiles参数设置为 true,将chunkSize参数设置为 40MB 会导致 Migrator 实用程序写入 50 个文件,每个文件 40 MB。注: Migrator 实用程序当前可以并行处理 100 个流。因此,将
chunkSize参数设置为最佳文件大小值,以便 Migrator 实用程序在数据导出期间最多创建 100 个文件。 -
从文件系统/对象存储迁移到 Oracle NoSQL Database Cloud Service/内部部署接收器:
-
如果您的文件系统/对象存储从以前的迁移中导出包含多个文件/对象的数据,则迁移程序实用程序将在导入数据时自动并行处理文件,以实现更高的迁移速度。
-
如果要从其他外部文件系统/对象存储迁移数据,请考虑将数据拆分成数据源中的多个文件/多个对象。
-
我有一个长期的迁移,涉及大量数据集。如何跟踪迁移进度?
您可以启用其他日志记录来跟踪长时间运行的迁移进度。要控制 Oracle NoSQL Database Migrator 的日志记录行为,必须在 logging.properties 文件中设置所需的日志记录级别。此文件随 NoSQL Database Migrator 程序包一起提供,位于解压缩 Oracle NoSQL Database Migrator 的目录中。按详细程度增加的顺序排列的不同日志记录级别为 OFF, SEVERE, WARNING, INFO, FINE, 和 ALL。
将日志级别设置为 OFF 将关闭所有日志信息,而将日志级别设置为 ALL 将提供完整的日志信息。
默认日志级别为 WARNING。默认情况下,所有日志记录输出都配置为转到控制台。
您可以在 logging.properties 文件中查看注释以了解每个日志级别。