IBM Cloud Docs
概述

概述

文档为 JSON 对象。 文档也是数据的容器,并且是 IBM® Cloudant® for IBM Cloud® 数据库的基础。

如果您使用的是 IBM Cloud® 上的 IBM Cloudant 服务,那么文档将限制为最大大小 1 MB。 超过此限制将导致 413 错误

IBM Cloudant 将 最终一致 模型用于数据。 如果使用最终一致的模型,那么在某些情况下,可能会检索较旧的文档内容。 例如,当应用程序写入或更新紧跟在同一文档后面的文档时,将检索较旧的内容。

换言之,您的应用程序会像写入或更新之前一样看到文档内容。 有关此模型的更多信息,请参阅 一致性主题。

文档字段

所有文档都必须具有两个字段:

  • 唯一的 _id 字段。 _id 字段在下一节中进行了详细说明。
  • _rev 字段。 _rev 字段是修订版标识, 对于 IBM Cloudant 复制协议是必需的。

除了这两个必填字段外,文档通常还可以包含任何其他可以使用 JSON 进行描述的内容,但需遵循以下部分中详述的一些注意事项。

文档标识

文档标识的格式因数据库是否已分区而异。 对数据库进行分区时,会将每个文档的分区键定义为文档标识的一部分,如下一节中所述。

分区数据库中的标识

使用分区数据库时,文档标识同时指定分区键和文档键。 通过将文档标识分割为以冒号分隔的两个部分来指定这些键:

$PARTITION_KEY:$DOCUMENT_KEY

文档之间的 $PARTITION_KEY 可能相同。 $DOCUMENT_KEY 必须在每个分区中唯一。 即,总体而言,整个文档标识在数据库中必须唯一。 文档键可能包含更多冒号字符。

非分区数据库中的标识

对于非分区数据库, _id 字段由您创建,或者由 IBM Cloudant自动生成为 UUID

如果选择指定文档 _id 字段,那么必须限制为不超过 7168 个字符 (7k)。

与分区数据库一样,文档标识在数据库中必须唯一。

字段名称限制

以下划线字符 (_) 开头的字段名称保留在 IBM Cloudant中。 此规则表示您通常不能具有以下划线开头的自己的字段名称。 例如,将接受字段 example ,但字段 _example 将生成 doc_validation 错误消息。

请参阅尝试创建带有下划线前缀的字段的 JSON 文档示例:

{
	"_top_level_field_name": "some data"
}

请参阅尝试创建带有下划线前缀的字段时返回的错误消息:

{
	"error": "doc_validation",
	"reason": "Bad special document member: _top_level_field_name"
}

但是,如果字段名用于嵌套在文档中的对象,那么可以对字段名使用下划线前缀。

请参阅尝试创建具有下划线前缀的字段 (嵌套在对象中) 的 JSON 文档示例:

{
	"another_top_level_field_name": "some data",
	"another_field": {
		"_lower_level_field_name": "some more data"
	}
}

请参阅创建具有下划线前缀的嵌套字段时返回的成功消息示例 (缩写):

{
	"ok": true,
	"id": "2",
	"rev": "1-9ce...8d4"
}

定额-写入和读取数据

在分布式系统中,请求可能需要一些时间才能完成。 "定额" 机制用于帮助确定请求 (例如写入或读取) 何时成功完成。

有关定额设置及其在专用 IBM Cloudant 系统上的影响的更多信息,请联系 IBM Cloudant 支持人员。

生存时间

生存时间 (TTL) 是数据的属性,在此属性中,在相对时间量之后或在绝对时间,数据被视为已到期。 可以删除数据本身,也可以将其移动到备用 (归档) 位置。

IBM Cloudant 不支持 "实时" 功能。 原因是 IBM Cloudant 文档仅被 "软" 删除,而不是被删除。 软删除涉及将原始文档替换为 较小的记录。 此小记录或 "墓碑" 是复制目的所必需的。 它有助于确保可以在复制期间识别要使用的正确修订版。

如果 TTL 功能在 IBM Cloudant中可用,那么导致短期文档和软删除记录的潜在增加将意味着数据库大小可能会以无界方式增长。