2015-03-02 15 views
1

在設計rethinkdb表/文檔時,我很困惑。何時創建單獨的表格以及何時將其存儲在同一文檔中?應該儘可能地避免連接,或者我們應該廣泛使用它們。將數據存儲在單獨的表中與將數據存儲在父文檔中有什麼優勢。何時在rethinkdb中創建單獨的表

回答

6

這取決於。

數據庫應該圍繞你的數據的外觀來構建。不一定要避免使用.join。在很多情況下,.join將改善數據庫的性能。

這裏有一些事情要考慮:

  1. 您想降低複雜性。如果在文檔中存儲所有內容是有意義的,那麼你應該這樣做。如果使用.join是有意義的,你應該這樣做。
  2. 更新文檔非常昂貴。如果你能避免它會更好。這可能意味着只需將所有內容寫入一個文檔中,或者如果需要經常更新該文檔,則可以將其分開。
  3. 解析複雜文檔(具有許多嵌套屬性)非常昂貴。如果您經常閱讀文檔,請儘量減少文檔的複雜程度。
  4. .join不支持.changes(還!)。您採取什麼決定取決於是否以及如何使用換卡。

這裏有幾種情況以及如何去他們:

  1. 如果表A有一個一對多到B,你將不會被創建/更新任何一個頻繁,最好將所有內容寫入一個文檔。

  2. 如果表A與B有一對多關係,並且您不會創建/更新大量的As,但是您將創建/更新許多Bs,最好將它們存儲爲兩個不同的表和使用.join

  3. 如果表A與B具有一對多關係並且B具有非常複雜的嵌套JSON結構,則最好將它們存儲在不同的表中,並使用.join,因爲讀取A會非常昂貴,否則(除非您在每一次都會讀到Bs)。

  4. 如果表A與B有一對多關係,並且您將廣泛使用僅包含A上數據的換件進度,最好將B保存在單獨的表中。

  5. 如果表A與B有一對多關係,並且您將廣泛使用A和B上的數據換工,則您需要將所有數據保留在同一文檔中。

相關問題