0

我是“沙发基地服务器”的新手。我正在寻找的是一个接一个地将 10 个作者姓名存储到 couchbase 文档中。有人请帮助我结构是否像单个文档“作者”和多个值

{ id : 1, name : Auther 1}, { id : 2, name : Author 2}

或将作者 1 存储到一个文档,将作者 2 存储到另一个文档。

如果是这样,我如何id在“插入”命令之前自动增加。

4

2 回答 2

0

您可以将所有作者存储在一个文档中

{  doctype : "Authors",
 AuthorNames:[
     {
     id: 1,
     Name : "author1"
      }
    {
    id: 2,
    Name : "author2"
    }
  so on
  ]

如果要增加ID,一种是在新文档中一次输入一个作者姓名,但ID是随机生成的,不会按递增顺序。

于 2015-05-27T17:58:01.057 回答
0

在 Couchbase 中,更多地考虑您的应用程序将如何使用数据,而不是您希望如何存储它。例如,您的应用程序是否需要一直获取所有 10 位作者?如果是这样,那么一份文件可能是值得的。也许您的应用程序一次只需要读/写一位作者。然后你可能想把每个都放在他们自己的地方,但是有一个对象键模式,这样你就可以非常快速地获得对象。经常使用的对象保存在托管缓存中,其他不经常使用的对象可能会从托管缓存中掉出来……这没关系。

另一个因素是您对该数据的读写比率。

所以就像我说的,这取决于您的应用程序将如何读取和写入您的数据。将此作为数据存储方式的指南。

单个 JSON 文档非常简单。每个作者都在自己的文档中并且您通过对象键访问它们的更高级的模式设计可能会更复杂一些,但最终会更快且更具可扩展性,具体取决于我已经指出的内容。我将列出一个示例模式和一些可能性。

对于作者,我可能会使用如下对象键创建每个作者 JSON 文档:

作者::ID

其中 ID 是我保存在一个特殊的增量器对象中的值,我将其称为 authors::incrementer。将该对象视为键值对,仅包含一个恰好是数组上限的整数。Couchbase SDK 包含一个特殊函数来增加这样一个整数对象。有了这个,我的应用程序可以非常快速地组合该对象键。如果我想追查第五位作者,我会按对象键读取“authors::5”。如果我需要获取 10,我会执行并行化 BulkGet 函数并通过 authors::10 获取 authors::1。如果我想获取所有作者,我获取增量器对象,获取该整数,然后获取并行化批量获取。通过这种方式,我可以按顺序或按我喜欢的任何顺序获取它们,并且我通过对象键访问它们,这在 Couchbase 中非常快。

话虽如此,我可以使用视图来查询这些数据或 Couchbase 4.0 中即将推出的“ SQL for Documents ”,或者我可以在查询和通过键获取对象时混合和匹配。密钥访问总是会更快。这是问一个问题然后去获取对象与简单地知道答案并立即得到它之间的区别。

于 2015-05-28T04:37:25.127 回答