我正在使用 Java 进行 Web 开发,后端使用 MongoDB。我有两个需要彼此列表的数据库对象。 ex-
客户对象包含 - List<MediaServer>
MediaService 对象包含 - List<Customer>
1) 我是否应该删除其中一个列表,以免相同的信息存储在两个地方?例如删除媒体服务器的客户列表。当我拉一个客户时,遍历所有媒体服务器以确定客户被分配到哪些媒体服务器。
2) 在 MongoDB 中有没有更好的地方来存储这种类型的信息?
谢谢!
最佳答案
在 MongoDB 中,在多个地方复制数据更为正常。如果您的列表不经常更改,那么存储两个列表并没有真正的缺点 - 现在硬盘空间并不像规范化风靡一时时那样昂贵。
对于 Mongo(以及任何应用程序开发)要始终牢记的一点是弄清楚您的访问模式是什么,并根据频繁的模式创建您的模式。如果您定期阅读这些列表但不经常更新它们,那么将两个列表都放在数据库中就可以了。
但是,如果您经常更改这两个列表,您可能会发现自己每次都在两个地方更新数据。
但是,您还应该记住,如果您正在存储 ID 列表,当您想要获取此 ID 的完整对象/文档时,将需要往返服务器。因此,如果对于每个客户(例如)您始终需要有关所有 MediaServers
的所有信息,则您将需要通过网络为每个 MediaServer
进行一次访问该客户的列表中的 ID。
关于java - 在哪里存储相互引用的对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16877564/