为什么Couchbase服务器API需要新文档的名称

为什么Couchbase服务器API需要新文档的名称,couchbase,Couchbase,使用Couchbase服务器API创建文档时,其中一个参数是文档名。这是用来做什么的?为什么需要它 使用Couchbase Lite时,您可以创建一个空文档,并为其分配一个_id和_rev。你不需要给它起名字。那么Couchbase Server中的这个参数是什么呢?在Couchbase Server中,所有对象都由对象ID、键或名称(所有相同的对象都有不同的名称)标识,而这些对象不是自动分配的,这是一个设计决策。这是因为密钥没有嵌入到文档本身中,密钥查找是获取该对象的最快方法,而技术要求在服务

使用Couchbase服务器API创建文档时,其中一个参数是文档名。这是用来做什么的?为什么需要它


使用Couchbase Lite时,您可以创建一个空文档,并为其分配一个_id和_rev。你不需要给它起名字。那么Couchbase Server中的这个参数是什么呢?

在Couchbase Server中,所有对象都由对象ID、键或名称(所有相同的对象都有不同的名称)标识,而这些对象不是自动分配的,这是一个设计决策。这是因为密钥没有嵌入到文档本身中,密钥查找是获取该对象的最快方法,而技术要求在服务器的保护下进行。按ID获取文档要比查询文档快得多。查询意味着你在问一个问题,而通过ID获取对象意味着你已经知道答案,只是告诉DB去为你获取它,因此速度更快

如果ID是随机的,那么很可能您必须查询数据库,这样效率会降低。Couchbase Mobile的sync_gateway与Couchbase Lite一起代表您处理此问题,如果您希望的话,因为它可以拥有自己的密钥空间和密钥模式来管理密钥查找。如果您使用Couchbase SDK直接访问DB,那么知道密钥将是获取该对象的最快方式。正如我所说,Couchbase Sync_Gateway为您处理此查找,因为它是应用程序服务器。当你直接使用SDK时,你会得到更多的控制,不同的设计模式也会出现

Couchbase Server中的许多人创建了一个对他们的应用程序有意义的密钥模式。作为用户配置文件存储的一个示例,我可以考虑将文档分解为三个单独的文档,每个文档具有唯一的用户名(在本示例中,HelnDeZ949):

1) 登录数据::hernandez94是具有加密密码的对象,因为出于性能原因,我需要一直查询该密码,并希望它位于Couchbase的托管缓存中

2) sec questions::hernandez94是一个存在用户3个安全问题的对象,因为我不经常使用它,所以不管它是否在托管缓存中

3) hernandez94是用户的主文档,它包含了我可能需要经常查询的所有其他内容,但不像其他时候那么频繁

通过这种方式,我根据应用程序的访问模式定制了密钥空间命名,从而只获取我需要的数据,并在需要时准确获取数据以获得最佳性能。如果我愿意,因为这些关键名称在我的应用程序中是标准化的,我可以对这三个文档进行并行批量访问,因为我的应用程序可以构造名称,而且速度非常快。再说一遍,我不是在查询数据,我有钥匙,只要去拿就行了。根据应用程序的访问模式,我可以进一步规范这个键空间命名。电子邮件地址::hernandez94、电话::hernandez94、应用程序设置::hernandez94等