Database-Design

如何處理 CouchDB 中的“引用表”?

  • September 23, 2011

處理“參考表”的最佳方法是什麼,包含靜態數據的表,例如包含各種食品成分的列表?

  1. 多份文件,每種成分一份
  2. 每個參考文件一份

{“_id”=“成分”,“成分”:

$$ { “name”:“Apple”, … } $$ } 3. 一份包含所有參考資料的文件

{“_id”=“參考”,“成分”:

$$ {“id”: “apple”, “name”: “Apple”, …} $$,“香料”:$$ {“id”: “cinnamon”, “name”: “Cinnamon”, …} $$ }

作為一個關注這個的 MySQL DBA,我認為是關係方面的。我也認為在做 JOIN 方面。但是,從 NoSQL 的角度來看,JOIN 必須以程式方式完成。

多個文件,每個成分一個:這將使最小數量的靜態數據放置在集合中。然而,您應該準備好獲取引用、使用 CouchDB 為自己建構臨時集合或將數據直接發送到您的應用程序。

一份包含所有參考資料的文件:如果您滿足於從 Collections out of Collections 中探勘 Collections …(無窮大),您願意建構這樣的集合,並且對它感到滿意,那麼以這種方式儲存數據就可以了. 請確保您不是唯一的 CouchDB Jedi(除非這是一個工作安全問題),因為您可能希望您的程式碼可以被其他人理解和維護。

每個參考一個文件:現在,這是一個很好的中間立場。如果 Collection 佈局發生變化,它將提供一些靈活性。成分的簡單檢索可以獨立於香料或器皿的檢索。仍然需要執行程序化 JOIN,但不是那麼深。那些不熟悉 NoSQL 範式的人(比如我自己)會很容易理解和檢索數據,而不必擔心會破壞根深蒂固的複雜數據表示。

我個人的選擇是選項#2。

引用自:https://dba.stackexchange.com/questions/6099