- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我一直在使用 firebase RTDB,我打算将它迁移到 firestore。
我有与许多其他 Node 关联的 userId。
例如,我有用户
、消息
、购买
。
为了将用户与其他集合相关联,我有 users_messages/$date/$userId/$messageId
、purchases/$date/$userId/$purchaseId
,因为 RTDB不支持复杂查询,我希望能够查询特定用户日期范围内的消息。
现在我意识到,在数据查询方面,firestore 比 RTDB 好得多,并且有 messages
、purchases
集合以及 date
和用户
。
在这种情况下,我应该将 userId
还是整个 user
文档存储在 messages
和 purchases
集合中?
最佳答案
一般来说,在 NoSQL 数据库中存储重复数据的最佳方式完全取决于项目的要求。没有一种适合所有人的正确解决方案。
你必须问一些关于你想复制的数据的问题:
如果您的重复数据需要更改并保持同步,那么您可能很难使所有这些重复数据保持最新,并且您可能会花费大量金钱来使所有这些文档保持最新,因为这需要读取并为每个文档的每个更改编写。
如果您需要非常快的查询,您可能希望复制更多数据,以便客户端只需为每个查询项目读取一个文档,而不是多个文档。但是您也可以依靠本地客户端缓存来降低成本,具体取决于客户端必须读取的数据。
最后,对于是否复制某些数据,您的选择很大程度上取决于您的数据及其特性。您必须逐案考虑。
关于javascript - 如何在 firestore 中存储重复数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52927341/
我是一名优秀的程序员,十分优秀!