使用firestore批量写入的主要原因之一是它们是原子的,并确保数据一致性。然而,他们有500次操作的限制。考虑到一个大型应用程序,人们可能在超过500个文档中对用户数据进行了反规范化。因此,当用户更新他/她的任何个人资料详细信息时,我必须在所有超过500个文档中更新它,同时保持数据一致性(原子更新)。
一个直观的解决方案是维护一个批处理数组,并跟踪失败的批处理,然后手动重试失败的批处理。
然而,我想问一下:
1)如果有任何最佳实践或其他更容易和可靠的方法来实现这一点,因为考虑到每批500次操作的限制,大多数商业应用程序都必须面临同样的问题。
2)是否有一种比仅仅去规范化数据更智能的方法,这样通过“智能方法”,数据一致性的整个问题(如上所述)可以首先被避免。
发布于 2019-08-15 21:30:33
一个直观的解决方案是维护一个批次数组,并跟踪失败的批次,然后手动重试失败的批次。
这是一个可行的解决方案,你可以继续下去。
1)如果有任何最佳实践或其他更容易和可靠的方法来实现这一点,因为考虑到每批500次操作的限制,大多数商业应用程序都必须面临同样的问题。
我可以告诉你我是做什么的。我通常创建一个计数器变量,并在每次向批处理添加更新操作时递增它的值。然后创建一条if语句,并在每次递增计数器时检查它是否达到500。此时,提交当前批处理,重置计数器并开始新的批处理,从您停止的地方开始。执行此操作,直到您完成所有批处理写入。
2)是否还有一种比反规范化数据更智能的方法,以便通过“该智能方法”,可以首先避免数据一致性的整个问题(如上所述)。
批量写入的问题不能通过反规范化来解决。复制数据,不是一个解决方案。
https://stackoverflow.com/questions/57510110
复制相似问题