将多个作者存储到couchbase数据库中

时间:2015-05-26 12:43:33

标签: couchbase couchbase-view nosql

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

如果您想增加ID,可以在新文档中一次输入一个作者姓名,但ID将随机生成,并且不会按增量顺序排列。

答案 1 :(得分:0)

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

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

就像我说的那样,这取决于你的应用程序如何读写数据。使用此作为数据存储方式的指导。

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

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

作者:: ID

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

所有这些,我可以使用一个视图来查询这些数据或即将发布的" SQL for Documents"在Couchbase 4.0或我可以混合和匹配时,我查询和当我通过他们的键得到对象。密钥访问总是会更快。提出问题然后去获取对象并简单地知道答案并立即获得答案之间的区别。