何时在rethinkdb中创建单独的表

时间:2015-03-02 13:44:25

标签: rethinkdb

在设计rethinkdb表/文档时我很困惑。我何时创建单独的表,何时将其存储在同一文档中。应该尽可能避免加入,还是应该广泛使用它们。将数据存储在单独的表中与将其存储在父文档中有什么好处。

1 个答案:

答案 0 :(得分:6)

取决于。

应该围绕数据的外观构建数据库。不一定要避免.join。在许多情况下,.join将提高数据库的性能。

以下是需要考虑的事项:

  1. 您希望降低复杂性。如果将所有内容存储在文档中是有意义的,那么您应该这样做。如果使用.join是有意义的,那么你应该这样做。
  2. 更新文档非常昂贵。如果你可以避免它,它会更好。这可能意味着如果您不得不经常更新该文档,只需将所有内容写入一个文档或将其分开。
  3. 解析复杂文档(具有许多嵌套属性)非常昂贵。如果您经常阅读文档,请尽量减少文档的复杂性。
  4. .join不支持
  5. .changes(尚未!)。您采取的决定取决于您是否以及如何使用更改源。
  6. 以下是几个场景以及如何解决这些问题:

    1. 如果表格A与B一对多且您不会经常创建/更新任何一个,那么将所有内容写入一个文档会更好。

    2. 如果表A与B有一对多且您不能创建/更新大量的As,但您将创建/更新很多B' s最好将它们存储在两个不同的表中并使用.join

    3. 如果表A与B具有一对多且B具有非常复杂的嵌套JSON结构,则最好将它们存储在不同的表中并使用.join,因为读取否则A会非常昂贵(除非你每次都在阅读B中的B)。

    4. 如果表A与B的一对多,并且您将广泛使用只有A上的数据的更改源,则将B保留在单独的表中会更好。

    5. 如果表A与B有一对多,并且您将广泛使用包含A和B数据的更改源,则您希望将所有数据保留在同一份文件。