gpt4 book ai didi

java - 使用 "array-contains"查询 Cloud Firestore 社交媒体结构

转载 作者:搜寻专家 更新时间:2023-11-01 08:19:23 25 4
gpt4 key购买 nike

我有一个由集合组成的数据结构,称为“投票”。 “民意调查”有几个随机生成 ID 的文件。在这些文档中,有一个称为“答案”的附加集合集。用户对这些民意调查进行投票,所有选票都写入“answers”子集合。我在“answers”节点上使用 .runTransaction() 方法,认为这个子集合(对于任何给定的民意测验)不断被用户更新和写入。

我一直在阅读 social media structure for Firestore .不过,我最近发现了 Firestore 的一项新功能,即“array_contains”查询选项。

虽然上面的帖子引用讨论了社交媒体结构的“关注”提要,但我有不同的想法。我设想用户写入(投票)到我的主投票节点,因此创建另一个“跟随”节点并让用户写入该节点以更新投票计数(使用云功能)似乎非常低效,因为我必须不断复制来自正在计算选票的主节点。

“array_contains”查询会是社交媒体结构可扩展性的另一个实用选项吗?我的想法是:

  1. 如果用户 A 关注用户 B,请写入我的“用户”节点中名为“关注者”的直接数组子项。
  2. 在用户 B 创建任何投票之前,用户 B 的设备从 Firestore 读取“followers”数组以获得所有关注用户的列表,并将它们填充到客户端的数组对象中
  3. 然后,当用户 B 编写新民意调查时,将“followers”数组添加到民意调查中,这样来自用户 B 的每个新民意调查都会附加一个数组,其中包含关注用户的所有 ID。

“array_contains”查询有哪些限制?将包含数千个用户/关注者的数组存储在 Firebase 中是否可行?

enter image description here enter image description here

最佳答案

Would the "array_contains" query be another practical option for social media structure scalability?

当然可以。这就是 Firebase 创作者添加此功能的原因。

看到你的结构,我想你可以试一试,但要回答你的问题。

What are the limitations on the "array_contains" query?

对于您存储的数据类型没有限制。

Is it practical to have an array stored in Firebase that contains thousands of users / followers?

不是实用不实用的问题,是其他类型的限制。问题是文档有限制。因此,对于可以放入文档的数据量存在一些限制。根据有关 usage and limits 的官方文档:

Maximum size for a document: 1 MiB (1,048,576 bytes)

如您所见,单个文档中的数据总量不得超过 1 MiB。当我们谈论存储文本时,您可以存储很多东西。所以在你的情况下,如果你只存储 id,我认为那不会有问题。但是恕我直言,随着您的阵列变大,请注意此限制。

如果您在数组中存储大量数据,并且这些数组应该由大量用户更新,那么您还需要注意另一个限制。因此,每个文档每秒只能写入 1 次。因此,如果您遇到许多用户都试图同时向同一文档写入/更新数据的情况,您可能会开始看到其中一些写入失败。因此,也要注意这个限制。

关于java - 使用 "array-contains"查询 Cloud Firestore 社交媒体结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53347695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com