2016-08-24 59 views
0

我已經開始使用N1ql,並且一直關注Couchbase中的N1ql教程。N1ql加入陣列與替代方案的性能

我已經注意到很多時候,給定的文檔(比方說用戶)包含一個數組,其中包含其他文檔的ID(我們可以說是訂單),我們可以在其後執行連接。這種解決方案適用於用戶可能擁有數千個引用的情況嗎?

如果不是,有什麼選擇?找到所有用戶及其訂單(某些用戶可能沒有訂單)的正確方法是什麼?

回答

2

是的,它應該是合適的,只要其他盡職調查/大小照顧。像往常一樣,數據模型和相關的查詢應該一起考慮。例如,如果查詢基於特定的數組元素,則可以使用數組索引。

替代可以(根據各種因素進行數據建模):

  1. 嵌入其他文檔(反規範化),或
  2. 反向引用,其中訂單文件具有到對應的用戶文檔的引用。請注意,從Couchbase 4.5 發行版中,N1QL支持查找JOIN &索引JOIN幫助加入 用戶訂單,無論用戶是否引用ORDER或反之亦然 。 http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/from.html#story-h2-3

-Prasad