Ios 如何将扇出数据库结构与firebase集成

Ios 如何将扇出数据库结构与firebase集成,ios,swift,database,firebase,Ios,Swift,Database,Firebase,我正试图找出如何在firebase中集成扇出DB结构 我有一个类似instagram的应用程序。为了创建这种时间线,我似乎必须执行以下操作: timeline/UID/UIDOFPersonWhoIsFollowed:randomNum/post/|//data 在这种情况下,用户跟踪的用户的UID还必须包含某种随机数,以便使其始终不同 这是正确的吗? 另外:如果一个用户有100万追随者,我如何才能发布到每一个追随者?我目前只有一个存储一个用户跟踪的人的位置:这是否意味着我必须创建一个跟踪跟踪

我正试图找出如何在firebase中集成扇出DB结构

我有一个类似instagram的应用程序。为了创建这种时间线,我似乎必须执行以下操作:

timeline/UID/UIDOFPersonWhoIsFollowed:randomNum/post/|//data
在这种情况下,用户跟踪的用户的UID还必须包含某种随机数,以便使其始终不同

这是正确的吗?

另外:如果一个用户有100万追随者,我如何才能发布到每一个追随者?我目前只有一个存储一个用户跟踪的人的位置:这是否意味着我必须创建一个跟踪跟踪“我”的人节点

具有如下跟随器结构:

WhoFollowsMeNode/UID/uid: true

我必须,每次一个用户发帖时,在这个列表中循环,对于每个用户,我都会将帖子添加到那里。。。这似乎是无法挽回的,而且

通常情况下,您会希望跟踪某个用户的跟踪对象以及该用户的跟踪对象。没有单一答案,因为它取决于用例、查询等

问题中确实没有足够的信息来理解“时间线”是什么,或者对数据执行什么样的查询,因此很难给出具体的答案

这里有一个构建Firebase的通用选项,用户可以在其中相互了解

正如您所看到的,不需要使用随机节点键来处理以下方面。此外,这是高度可扩展的,因为可能有数千个用户和数千个追随者,并且数据量很小,因为您只存储用户id和一个“true”值,在本例中它只是一个占位符

users
   uid_0
      name: "Henry"
      followed_by:
         uid_1: true //followed by Leroy
         uid_2: true //followed by Amber
      following:
         uid_3: true //following Ralph
   uid_1
      name: "Leroy"
      followed_by:
         uid_2: true //followed by Amber
         uid_3: true //followed by Ralph
      following:
         uid_0: true //following Henry
   uid_2
      name: "Amber"
      followed_by:
         uid_3: true //followed by Ralph
      following:
         uid_0: true //following Henry
         uid_1: true //following Leroy
   uid_3
      name: "Ralph"
      followed_by:
         uid_0: true //followed by Henry
      following:
         uid_1: true //following Leroy
         uid_2: true //following Amber

此结构将允许每个用户知道他们在跟踪谁以及谁在跟踪他们。

是否正确?视情况而定。如果您需要生成随机节点密钥,.childByAutoId是您最好的朋友。但是,这取决于用例-您可能希望使用uid作为值为true的键。还有许多其他的解决方案。第二个问题是好的,另一个独立的问题,将取决于你如何为问题的第一部分构建你的Firebase。我会在回答中给出一个示例结构。谢谢你的回答:问题:如果我是instagram,那么每当拥有数百万追随者的用户创建帖子时,我都必须循环浏览数百万UID,并将其添加到每个UID时间线中,要么是帖子的副本,要么是对帖子在posts节点中位置的引用。这不是不可缩放的吗?耐火材料[似乎解决了这个问题,但在阅读时,他们似乎正在做我建议的事情。@NCT127这取决于用例。在我的示例中,用户知道他们在跟踪谁,谁在跟踪他们。如果用户不关心谁在跟踪他们,那么您就不需要添加该引用。用户跟踪的想法是这样的meone所以他们将收到任何新帖子的通知归结为正在跟踪的用户向他们跟踪的任何人添加一个观察者,所以当出现新帖子时,他们会收到通知。这消除了循环;想象一下,如果用户a决定跟踪用户b。用户a观察用户b帖子节点,当出现新帖子时,会通知用户a