N1ql加入阵列与替代品的性能

时间:2016-08-24 16:58:24

标签: couchbase n1ql

我已经开始使用N1ql了,我一直在关注Couchbase的N1ql教程。

我已经多次注意到某个给定文档(比如说User)包含一个带有其他文档ID的数组(让我们说订单),我们以后可以从中执行连接。此解决方案是否适合用户可能拥有数千个引用的情况?

如果没有,有什么替代方案?找到所有用户及其订单(某些用户可能没有订单)的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

是的,只要其他尽职调查/规模确定,它应该是合适的。像往常一样,数据模型和相关查询应该一起考虑。例如,如果查询基于特定的数组元素,则可以使用数组索引。

备选方案可以(取决于数据建模的各种因素):

  1. 嵌入其他文件(非正规化)或
  2. 反向引用,其中order-documents引用相应的用户文档。请注意,来自Couchbase 4.5 发布,N1QL支持Lookup JOIN&索引JOIN有助于加入 用户订单,无论用户是否参考ORDER或 反之亦然。 http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/from.html#story-h2-3
  3. -Prasad