当前位置: 首页 > 知识库问答 >
问题:

如何在FireStore中存储重复数据?

管景天
2023-03-14

我一直在使用firebase RTDB,我准备将它迁移到FireStore。

我有与许多其他节点关联的userid。

例如,我有usersmessages购买

为了将user与其他集合关联,我使用了users_messages/$date/$userid/$messageidpurches/$date/$userid/$purchaseid,因为RTDB不支持复杂查询,我希望能够查询特定用户日期范围之间的消息。

现在,我意识到firestore在数据查询方面要比RTDB好得多,并且将具有消息日期用户购买集合。

在这种情况下,我应该在消息购买集合中存储userid还是整个user文档?

共有1个答案

薛彭薄
2023-03-14

从一般意义上说,在NoSQL数据库中存储重复数据的最佳方式完全取决于项目的需求。对每个人都没有一个正确的解决办法

对于要复制的数据,您必须问一些问题:

  1. 它是静态的,还是会随时间变化?
  2. 如果确实更改,是否需要更新数据的每个重复实例,以便它们保持同步
  3. 您是针对性能还是成本进行优化?

如果您的重复数据需要更改并保持同步,那么您可能会很难保持所有这些重复数据都是最新的,并且您可能会花费大量的钱来保持所有这些文档都是新鲜的,因为对于每次更改,都需要对每个文档进行读写操作。

如果您需要查询非常快,您可能希望复制更多的数据,以便客户机只需读取每个查询项目的一个文档,而不是多个文档。但是您也可以依赖于本地客户端缓存,这会降低成本,这取决于客户端必须读取的数据。

最终,对于你是否复制某些数据的选择,高度依赖于你的数据及其特征。你必须逐案考虑。

 类似资料:
  • 我是JWT新手,我只是将其作为JSON中的java对象返回,并制作了一些过滤器,以便它可以像Spring Security中的session_id一样工作。 但是我不明白JWT是如何存储在客户端的,在服务器响应之后它会去哪里?它是否由coockies中的所有浏览器自动存储?所有浏览器都支持JWT吗? 我很感激你的回答。

  • 它们都存储3000.0,但我想为我的junit测试存储3000.00。不知道怎么做。

  • 我是C语言的初学者。如果我的问题是蹩脚的,请不要介意。在我写的这个程序中,当我第一次使用“for”循环时,我希望一个数组中只存储3个值,但它存储4个值,在接下来的“for”循环中,如预期的那样显示3个值。我的问题是为什么在第一个for循环中需要4个值而不是3个?

  • 问题内容: 这个问题已经在这里有了答案 : 8年前关闭。 可能重复: telefne号和地址的mysql数据类型 关于将电话号码存储在数据库中的最佳做法有何建议?考虑一个美国电话号码: 555 555 1212 555-555-1212 (555)555 1212 5555551212 1-555-555-1212 1(555)555-1212 等等 … 我应该删除格式并仅存储数字吗?我应该只使用

  • 问题内容: 这个问题已经在这里有了答案 : UTF-8贯穿始终 (15个答案) 5年前关闭。 我将PHP字符集设置为: 我已经将MySQL中的列设置为collat​​ion 。 但是,PHP中的以下代码: 在MySQL中产生以下字符: 如何获得符号以正确存储在MySQL中? 问题答案: 确保您的 脚本文件 (包含该行的文件) 编码为UTF-8。您应该在编辑器或IDE的“另存为”对话框中选择一种效果