在设计rethinkdb表/文档时我很困惑。我何时创建单独的表,何时将其存储在同一文档中。应该尽可能避免加入,还是应该广泛使用它们。将数据存储在单独的表中与将其存储在父文档中有什么好处。
答案 0 :(得分:6)
取决于。
应该围绕数据的外观构建数据库。不一定要避免.join
。在许多情况下,.join
将提高数据库的性能。
以下是需要考虑的事项:
.join
是有意义的,那么你应该这样做。.join
不支持.changes
(尚未!)。您采取的决定取决于您是否以及如何使用更改源。 以下是几个场景以及如何解决这些问题:
如果表格A与B一对多且您不会经常创建/更新任何一个,那么将所有内容写入一个文档会更好。
如果表A与B有一对多且您不能创建/更新大量的As,但您将创建/更新很多B' s最好将它们存储在两个不同的表中并使用.join
。
如果表A与B具有一对多且B具有非常复杂的嵌套JSON结构,则最好将它们存储在不同的表中并使用.join
,因为读取否则A会非常昂贵(除非你每次都在阅读B中的B)。
如果表A与B的一对多,并且您将广泛使用只有A上的数据的更改源,则将B保留在单独的表中会更好。
如果表A与B有一对多,并且您将广泛使用包含A和B数据的更改源,则您希望将所有数据保留在同一份文件。