Database-Design
CouchBase 中文件的邏輯類型
如何在 CouchBase 中指定文件的邏輯類型?使用類型的欄位?或者在鍵中使用分隔符,例如
product::app::123id
?目前,我正在將文件類型放在文件本身內部,在名為 Type 的字元串欄位中,例如 Product。
但我看到這種在文件 ID 中使用分隔符的模式,比如
product::app::123id
. 圍繞它進行了一些操作,無法從鍵中獲取類型部分(產品)(當然可以通過拆分來解析它,在我看來,這在 N1QL 和視圖中似乎具有相同的成本)。那麼應該如何指定文件類型(應用程序邏輯類型)?
Env:CouchBase 社區,在 Ubuntu 14.04 上的 Docker 中,使用 Go 客戶端
gocb
。
我最近在關於數據建模的部落格文章中談到了這一點。
這實際上取決於您的應用程序將如何與您的文件進行互動。如果您要使用很多 N1QL,那麼像您正在做的那樣使用“類型”欄位可能是有意義的。(我不知道 Go 可以使用哪些工具,但Linq2Couchbase可以幫助您管理這個“類型”欄位)。
但是,如果您計劃大量使用直接密鑰訪問(因為它更快或者從您的應用程序中這樣做更有意義),那麼您可能希望使用有意義的密鑰來傳達關係或其他資訊。例如,如果我有一個“product::123”,那麼我可以推斷“product::123::locations”是一個相關文件。我不認為沒有某種字元串解析成本(SPLIT 或 SUBSTR N1QL 函式)從那種類型的鍵中獲取“產品”的方法。雖然有可能為此設計一個索引?您可能想詢問我們 N1QL 論壇中的嚮導。
或者將兩者結合起來可能是有意義的。一般來說,設計鑰匙的方式沒有對錯之分。這實際上取決於您要使用的數據訪問模式。