哪些应该在Couchbase中的Referenced和Embedded文档之间使用?

时间:2018-03-21 12:01:56

标签: couchbase

我想使用Couchbase noSQL数据库。但是,我对使用Referenced和Embedded文档的文档结构感到困惑。

我有三个实体。

  1. 预约

  2. 预约发票。

  3. 发票的付款明细。 (一对多)

  4. 那么,我应该使用哪种文档结构?为什么?

1 个答案:

答案 0 :(得分:1)

这绝对是一个非常广泛的问题,没有"对"回答。您需要考虑您的访问模式(即,您通常如何编写和检索数据)以及您已经布置的数据结构。

作为一个例子,我认为完全有可能所有这些都可以在一个文件中集合在一起:

key: appointment::123

{
   "date": "2018-01-29",
   "place": "123 main st",
   "invoice": {
      "date": "2018-01-30",
      "due": "2018-02-28",
      "items": [
          { "desc": "widget", "quantity": 2, "price":3.99 },
          { "desc": "foo", "quantity": 1, "price":24.99 },
          { "desc": "bar", "quantity": 3, "price":5.00 }
      ]
   }

您的问题标有CouchDb和Couchbase,因此我不确定您打算使用哪个。但是,如果您使用Couchbase,我知道您可以使用subdocument operations(从Couchbase Server 4.5开始)。也就是说,如果您只需要文档的部分,则不必每次都检索整个文档。随着文档越来越大,这可能会有所帮助。我不知道CouchDb中是否有同样的东西(它可能被称为不同的东西)。此外,Couchbase具有完整的SQL实现,因此无论您最终使用哪种型号,都可以查询数据。