小编Soc*_*oos的帖子

在Cloud Firestore中管理非规范化/重复数据

如果您决定在Firestore中对数据进行非规范化/复制以优化读取,那么通常使用哪种模式(如果有)来跟踪重复的数据,以便可以正确地更新它们以避免数据不一致?

例如,如果我具有Pinterest板之类的功能user,平台上的任何功能都可以将我的功能固定post到自己的功能上board,那么您将如何跟踪许多位置的重复数据?

对于为数据可以存在的每个唯一位置创建一个类似关系的表,该表用于重建需要更新的路径。

例如,创建一个users_posts_boards集合,首先是集合userIDs与子集postIDs终于有另一个子集boardIDsboardOwnerID。然后,您可以使用它们来为post(例如/users/[boardOwnerID]/boards/[boardID]/posts/[postID])重建重复数据的路径吗?

另外,如果posts可以额外共享,以groupslists你会继续做users_posts_groups,并users_posts_lists集合和子集,以同样的方式跟踪复制的数据?

另外,您会否拥有posts_denormalization_tracker唯一的集合,postIDs其中包含post已复制到的位置的子集合?

{
  postID: 'someID',
  locations: ( <---- collection
    "path/to/post/location1",
    "path/to/post/location2",
    ...
  )
}
Run Code Online (Sandbox Code Playgroud)

这意味着你将基本上需要有所有写入公司的FireStore通过云的功能实现,可以保持这个数据的轨道出于安全原因....除非公司的FireStore安全规则是足够强大,以允许添加操作的/posts_denormalization_tracker/[postID]/locations子集,而不允许读取或更新子集合或父postIDs集合。

我基本上是在寻找一种跟踪严重的非规范化数据的合理方法。

编辑:哦,是的,另一个很好的例子是将post作者的profile信息嵌入每个文档中post。想象一下,在整个平台上共享时,地狱试图保持所有最新状态,然后对其进行user更新profile

firebase google-cloud-firestore

6
推荐指数
1
解决办法
738
查看次数

标签 统计

firebase ×1

google-cloud-firestore ×1