createStore
createStore
命令会在联合数据库实例存储配置中创建一个存储。 单击下面的标签页,了解有关为数据源创建联合数据库实例存储的更多信息。
此标签页包含用于为 Amazon Web Services S3存储桶中的数据创建联合数据库实例存储的语法和参数。
重要
Atlas Data Federation不支持跨不同云提供商的联合查询。 您只能创建映射到单个云提供商上的存储的联合数据库实例。
此标签页包含用于为Azure Blob 存储容器中的数据创建联合数据库实例存储的语法和参数。
重要
Atlas Data Federation不支持跨不同云提供商的联合查询。 您只能创建映射到单个云提供商上的存储的联合数据库实例。
此标签页包含用于为GoogleGoogle Cloud Platform Cloud Platform Storage 容器中的数据创建联合数据库实例存储的语法和参数。
重要
Atlas Data Federation不支持跨不同云提供商的联合查询。 您只能创建映射到单个云提供商上的存储的联合数据库实例。
此标签页包含用于为Atlas 集群中的数据创建联合数据库实例存储的语法和参数。
此标签页包含用于为托管在可公开访问的 URL 上的文件中的数据创建 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>, region: <region-name>, bucket: <bucket-name>, delimiter: <delimiter>, prefix: <prefix> })
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> })
参数
Parameter | 类型 | 说明 | 必需? |
---|---|---|---|
| 字符串 | 新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。 | 是 |
| 字符串 | 存储数据的服务的名称。 值可以是以下之一:
| 是 |
| 字符串 | 托管 | 是 |
| 字符串 | 存储数据的存储桶的名称。 必须与Data Federation可使用Amazon Web Services Amazon Web Services凭证档案访问权限的 S3Data Federation 存储桶的名称完全匹配。 | 是 |
| 字符串数组 | no | |
| 字符串 | 用于分隔联合数据库实例存储中路径段的字符。 如果省略,则默认为 | no |
| 布尔 | 指示存储桶是否公开的标志。 有效值为:
如果省略,则默认值为 | no |
Parameter | 类型 | 说明 | 必需? |
---|---|---|---|
| 字符串 | 新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。 | 是 |
| 字符串 | 存储数据的服务的名称。 值可以是以下之一:
| 是 |
| 字符串 | 托管容器的区域。 有关有效地区名称的列表,请参阅Microsoft Azure。 | 是 | |
| 字符串 | 包含 blob 容器的Azure Blob 存储帐户的URL 。 示例:
| 是 | |
| 字符串 | 包含文件的Azure Blob 存储容器的名称。 有关详细信息,请参阅有关 命名和引用容器 的 Azure 文档。 | 是 | |
| 字符串 | 用于分隔联合数据库实例存储中路径段的字符。 如果省略,则默认为 | no | |
| 布尔 | 指示Azure Blob 存储容器是否为公用的标志。 有效值为:
如果省略,则默认值为 | no |
Parameter | 类型 | 说明 | 必需? |
---|---|---|---|
| 字符串 | 新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。 | 是 |
| 字符串 | 存储数据的服务的名称。 值可以是以下之一:
| 是 |
| 字符串 | 托管 | 是 | ||||
| 字符串 | 存储数据的存储桶的名称。 必须与Data Federation可使用配置的Google Cloud Platform 凭证档案访问权限的Google CloudGoogle Cloud PlatformData Federation Google Cloud PlatformPlatform存储桶的名称完全匹配。 | 是 | ||||
| 字符串 | 用于分隔联合数据库实例存储中路径段的字符。 如果省略,则默认为 | no | ||||
| 布尔 | Prefix AtlasAtlas Data Federation Data Federation在GoogleGoogle Cloud Platform Cloud Platform Storage 存储桶中搜索文件时适用。示例,考虑具有以下结构的GoogleGoogle Cloud Platform Cloud Platform Storage 存储桶
联合数据库实例存储将 默认为GoogleGoogle Cloud Platform Cloud Platform Storage 存储桶的根,检索所有文件。 | no |
Parameter | 类型 | 说明 | 必需? |
---|---|---|---|
| 字符串 | 新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。 | 是 |
| 字符串 | 存储数据的服务的名称。 值可以是以下之一:
| 是 |
| 字符串 | 存储所基于的Atlas 集群的名称。 | 是 |
| 字符串 | 包含Atlas 集群的项目的唯一标识符。 如果未指定, Atlas Data Federation假定集群与联合数据库实例位于同一项目中。 | no |
| 文档 | 集群读取偏好(read preference),描述如何将读取请求路由到集群。 | no |
readPreference .mode | 字符串 | 读取偏好模式,用于指定将读取请求路由到哪个副本集成员。 值可以是以下之一:
| no |
readPreference .tagSets | 字符串数组 | no | |
readPreference .maxStalenessSeconds | int | 从节点读取的最大复制延迟或“陈旧度”。 要学习;了解有关 | no |
Parameter | 类型 | 说明 | 必需? |
---|---|---|---|
| 字符串 | 新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。 | 是 |
| 字符串 | 存储数据的服务的名称。 值可以是以下之一:
| 是 |
| 布尔 | 验证指定URL中的模式。 值可以是以下之一:
如果为 true,则 Atlas Data Federation:
警告:如果将其设立为 如果省略,则默认值为 | no |
| 字符串大量或空大量 | 一个或多个可公开访问的URL 。 不能指定需要身份验证的URL 。 | no |
| 字符串 | Data Federation 在查询联合数据库实例存储时遇到不带扩展名的文件时默认采用的格式。 以下值是有效的:
如果省略,Data Federation 将尝试处理文件的几个字节来检测文件类型。 如果包含,则指定的格式仅适用于存储中的URL 。 | no |
Parameter | 类型 | 说明 | 必需? |
---|---|---|---|
| 字符串 | 新联合数据库实例存储的名称。 联合数据库实例存储名称必须是唯一的。 | 是 |
| 字符串 | 存储数据的服务的名称。 值可以是以下之一:
| 是 |
| 字符串 | 在线存档的区域。 如果您在不同区域有多个存档,则必须为每个地区添加一个存储,以将该地区中的数据映射到联合数据库实例中的虚拟数据库和集合。 | 是 |
输出
如果成功,该命令将打印以下输出。 如果命令失败,请参阅排除错误以获取建议的解决方案。
{ "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>", "region": "<region-name>", "bucket": "<storage-container-name>" "delimiter": "<delimiter>", "prefix": "<prefix>", "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: "azure", region: "us-central1", "bucket" : "my-data-container" })
{ "ok": 1, "store": { "name": "myStore", "region": "us-central1", "bucket" : "my-data-container", "delimiter": "/", "provider": "gcp" } }
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
会使您的数据容易受到中间人攻击。