createStore
createStore
命令会在联合数据库实例存储配置中创建一个存储。 单击下面的标签页,了解有关为数据源创建联合数据库实例存储的更多信息。
此标签页包含用于为 AWS S 3存储桶中的数据创建联合数据库实例存储的语法和参数。
重要
您无法创建同时映射到AWS S 3存储桶和 Azure Blob 存储容器的联合数据库实例。 Atlas Data Federation 不支持跨不同云提供商的联合查询。
此标签页包含用于为 Azure Blob 存储容器中的数据创建联合数据库实例存储的语法和参数。
注意
您无法创建同时映射到 Azure Blob 存储容器和AWS S 3存储桶的联合数据库实例。 Atlas Data Federation 不支持跨不同云提供商的联合查询。
此标签页包含用于为 Atlas 集群中的数据创建联合数据库实例存储的语法和参数。
此标签页包含用于为托管在可公开访问的 URL 上的文件中的数据创建 HTTP 联合数据库实例存储的语法和参数。
注意
预览
对 HTTP 数据存储的支持是作为一个预览功能提供的。在预览阶段,该功能及相应的文档可能随时更改。
此标签页包含用于为 Atlas Online Archives 创建联合数据库实例存储的语法和参数。
语法
db.runCommand({ createStore: <store-name>, provider: <storage-provider>, region: <region-name>, bucket: <bucket-name>, additionalStorageClasses: [ <storage-classes> ], delimiter: <delimiter>, public: true|false })
db.runCommand({ createStore: <store-name>, provider: <storage-provider>, region: <region-name>, serviceURL: <service-account-URL>, containerName: <storage-container-name>, delimiter: <delimiter>, public: true|false })
db.runCommand({ createStore: <store-name>, provider: <storage-provider>, clusterName: <cluster-name>, projectId: <project-id>, readPreference: {mode: <read-preference-mode>, tagSets: [[{name: <name>, value: <value>},...],...], maxStalenessSeconds: <number-of-seconds>}, readConcern: {level: <level>} })
db.runCommand({ createStore: <store-name>, provider: <storage-provider>, allowInsecure: true|false, urls: [ <url> ], defaultFormat: <file-extension> })
db.runCommand({ createStore: <store-name>, provider: "dls:aws", region: <online-archive-region> })
参数
参数 | 类型 | 说明 | 必需? |
---|---|---|---|
createStore | 字符串 | 新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。 | 是 |
provider | 字符串 | 存储数据的服务的名称。 值可以是以下之一:
| 是 |
region | 字符串 | 托管 bucket 的区域。有关有效地区名称的列表,请参阅 Amazon Web Services (AWS)。 | 是 |
bucket | 字符串 | 存储数据的存储桶的名称。必须与在给定配置的 AWS IAM 档案 的情况下数据联合可以访问的 S 存储桶的名称完全匹配。3 | 是 |
additionalStorageClasses | 字符串数组 | 没有 | |
delimiter | 字符串 | 用于分隔联合数据库实例存储中路径段的字符。 如果省略,则默认为 "/" 。 | 没有 |
public | 布尔 | 指示存储桶是否公开的标志。 有效值为:
如果省略,则默认值为 | 没有 |
参数 | 类型 | 说明 | 必需? |
---|---|---|---|
createStore | 字符串 | 新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。 | 是 |
provider | 字符串 | 存储数据的服务的名称。 值可以是以下之一:
| 是 |
region | 字符串 | 托管容器的区域。有关有效地区名称的列表,请参阅Microsoft Azure。 | 是 | |
serviceURL | 字符串 | 包含 blob 容器的 Azure Blob 存储帐户的URL 。例如:
| 是 | |
containerName | 字符串 | 包含文件的 Azure Blob 存储容器的名称。有关详细信息,请参阅有关 命名和引用容器 的 Azure 文档。 | 是 | |
delimiter | 字符串 | 用于分隔联合数据库实例存储中路径段的字符。如果省略,则默认为 "/" 。 | 没有 | |
public | 布尔 | 指示 Azure Blob 存储容器是否为公用的标志。有效值为:
如果省略,则默认值为 | 没有 |
参数 | 类型 | 说明 | 必需? |
---|---|---|---|
createStore | 字符串 | 新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。 | 是 |
provider | 字符串 | 存储数据的服务的名称。 值可以是以下之一:
| 是 |
clusterName | 字符串 | 商店所基于的 Atlas 集群的名称。 | 是 |
projectId | 字符串 | 包含 Atlas 集群的项目的唯一标识符。如果未指定,Atlas Data Federation 假定集群与联合数据库实例位于同一项目中。 | 没有 |
readPreference | 文档 | 集群读取偏好,描述如何将读取请求路由到集群。 | 没有 |
readPreference .mode | 字符串 | 没有 | |
readPreference .tagSets | 字符串数组 | 没有 | |
readPreference .maxStalenessSeconds | int | 从节点读取的最大复制延迟或“陈旧度”。要了解有关 maxStalenessSeconds 的更多信息,请参阅读取偏好 maxStalenessSeconds。 | 没有 |
参数 | 类型 | 说明 | 必需? |
---|---|---|---|
createStore | 字符串 | 新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。 | 是 |
provider | 字符串 | 存储数据的服务的名称。 值可以是以下之一:
| 是 |
allowInsecure | 布尔 | 验证指定URL中的模式。值可以是以下之一:
如果为 true,则 Atlas Data Federation:
警告:如果将其设置为 如果省略,则默认值为 | 没有 |
urls | 字符串数组或空数组 | 一个或多个可公开访问的URL 。不能指定需要身份验证的URL 。 | 没有 |
defaultFormat | 字符串 | Data Federation 在查询联合数据库实例存储时遇到不带扩展名的文件时默认采用的格式。 以下值是有效的:
如果省略,Data Federation 将尝试处理文件的几个字节来检测文件类型。 如果包含,则指定的格式仅适用于存储中的URL 。 | 没有 |
参数 | 类型 | 说明 | 必需? |
---|---|---|---|
createStore | 字符串 | 新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。 | 是 |
provider | 字符串 | 存储数据的服务的名称。 值可以是以下之一:
| 是 |
region | 字符串 | 在线存档的区域。如果您在不同区域有多个存档,则必须为每个区域添加一个存储,以将该区域中的数据映射到联合数据库实例中的虚拟数据库和集合。 | 是 |
输出
如果成功,该命令将打印以下输出。 如果命令失败,请参阅排除错误以获取建议的解决方案。
{ "ok": 1, "store": { "name": "<store-name>", "region": "<region-name>", "bucket": "<bucket-name>", "additionalStorageClasses": ["<storage-classes>"] "delimiter": "<delimiter>", "provider": "<storage-provider>" } }
{ "ok": 1, "store": { "name": "<store-name>", "region": "<region-name>", "serviceURL": "<service-account-URL>", "containerName": "<storage-container-name>" "delimiter": "<delimiter>", "provider": "<storage-provider>" } }
{ "ok" : 1, "store" : { "name" : "<store-name>", "provider" : "<storage-provider>", "clusterName" : "<cluster-name>", "projectId" : "<project-id>", "readPreference" : { "mode" : "<read-preference-mode>", "tagSets" : [[{"name": "<name>", "value": "<value>"},...],...], "maxStalenessSeconds" : <number-of-seconds> } } }
{ "ok" : 1, "store" : { "name" : "<store-name>", "provider" : "<storage-provider>", "allowInsecure" : true|false, "urls" : [ "<url>" ], "defaultFormat: "<file-extension>" } }
{ ok: 1, store: { name: '<store-name>', provider: 'dls:aws', region: '<online-archive-region>' } }
例子
以下示例使用createStore
命令创建一个名为myStore
的新联合数据库实例存储。
use sample db.runCommand({ createStore: "myStore", provider: "s3", region: "us-east-1", bucket: "my-bucket", "additionalStorageClasses" : ["STANDARD_IA","INTELLIGENT_TIERING"] })
{ "ok": 1, "store": { "name": "myStore", "region": "us-east-1", "bucket": "my-bucket", "additionalStorageClasses" : [ "STANDARD_IA", "INTELLIGENT_TIERING" ], "delimiter": "/", "provider": "s3" } }
use sample db.runCommand({ createStore: "myStore", provider: "azure", region: "eastus2", serviceURL: "https://mystorage.blob.core.windows.net/", "containerName" : "my-data-container" })
{ "ok": 1, "store": { "name": "myStore", "region": "eastus2", "serviceURL": "https://mystorage.blob.core.windows.net/", "containerName" : "my-data-container", "delimiter": "/", "provider": "azure" } }
use sample db.runCommand({ createStore: "myStore", provider: "atlas", clusterName: "myTestCluster", projectId: "<project-id>", "readPreference": {"mode": "secondary", "tagSets": [[{"name": "provider", "value": "AWS" }, {"name": "region", "value": "US_EAST_1"}]], "maxStalenessSeconds": 120} })
{ "ok" : 1, "store" : { "name" : "myStore", "provider" : "atlas", "clusterName" : "myTestCluster", "projectId" : "<project-id>", "readPreference" : { "mode" : "secondary", "tagSets": [[{"name": "provider", "value": "AWS" }, {"name": "region", "value": "US_EAST_1"}]], "maxStalenessSeconds" : 120 } } }
use sample db.runCommand({ createStore: "myStore", provider: "http", urls: ["https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews","http://example.mongodb.com/sampleData"], allowInsecure: true, defaultFormat: ".json" })
{ "ok" : 1, "store" : { "name" : "http-store", "provider" : "http", "urls" : [ "https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews", "http://example.mongodb.com/sampleData" ], "defaultFormat" : ".json" "allowInsecure" : true } }
use sample db.runCommand({ createStore: "myStore", provider: "dls:aws", region: "us-east-1" })
{ ok: 1, store: { name: 'myStore', provider: 'dls:aws', region: 'us-east-1' } }
故障排除错误
如果命令失败,则返回以下错误之一。
原因:已存在具有createStore
中指定名称的联合数据库实例存储。
{ "ok": 0, "errmsg": "store <store-name> already exists", "code": 2, "codeName": "BadValue" }
解决方案:为联合数据库实例存储指定唯一名称。
原因:无法识别指定的provider
。
{ "ok": 0, "errmsg": "unrecognized store provider <storage-provider>", "code": 2, "codeName": "BadValue" }
解决方案:确保指定有效的存储提供商。
原因:一个或多个给定URL包含不安全的HTTP方案。
{ "ok" : 0, "errmsg" : "store 'httpStore': the insecure HTTP scheme is not supported by default - please add a 'allowInsecure: true' flag to the store or datasource to query from such URLs, correlationID = 16332c6eddf7b32776fde638", "code" : 72, "codeName" : "InvalidOptions" }
解决方案: 使用安全 HTTPS 方案指定 URL 。如果指定的 URL 采用不安全的 HTTP 模式,则将allowInsecure
标志设置为true
。请注意,将allowInsecure
标志设置为true
会使您的数据容易受到中间人攻击。