【问题标题】:Store multiple authors in to couchbase database将多个作者存储到 couchbase 数据库中
【发布时间】:2015-05-26 12:43:33
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: couchbase couchbase-view nosql


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      在 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”,或者我可以在查询和通过键获取对象时混合和匹配。密钥访问总是会更快。这是问一个问题然后去拿对象和简单地知道答案并立即得到它之间的区别。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多