Firebase 可扩展性:整个数据集上的观察者与多个观察者
Posted
技术标签:
【中文标题】Firebase 可扩展性:整个数据集上的观察者与多个观察者【英文标题】:Firebase scalability: Observer on whole data set vs multiple observers 【发布时间】:2016-05-17 07:03:55 【问题描述】:我正在创建一个 Firebase Swift 应用,用户可以在其中查看其他用户在供稿中发布的消息。某些消息与某些用户相关。可以对消息进行评论和赞成/反对。
哪种设计更具可扩展性:
1) 一位观察者检查所有消息的 .Value 并重新填充提要。
2) 用户拥有的每条消息都有一个观察者,并删除和添加观察者作为提要更新。
1) 听起来可扩展性较差,但我担心 2) 有很多观察者以及添加和删除观察者背后的延迟。
哪个设计更好?
【问题讨论】:
【参考方案1】:我会建议一个超级简单的方法。将观察者添加到包含相关用户的消息中
例如,这里有一个存储帖子的帖子(消息)节点。
"posts" :
"post_0" :
"msg" : "some message",
"user" : "uid_0"
,
"post_1" :
"msg" : "another message",
"user" : "uid_1"
,
"post_2" :
"msg" : "yippee message",
"user" : "uid_2"
这是观察任何包含对 uid_2 引用的帖子的代码
let postsRef = myRootRef.childByAppendingPath("posts")
postsRef.queryOrderedByChild("user").queryEqualToValue("uid_2")
.observeEventType(.ChildAdded, withBlock: snapshot in
print(snapshot)
)
运行此代码后,发布在帖子节点中且用户 = uid_2 的任何帖子都会通知该用户。
您可以通过为多个用户更改 post_x 节点来扩展此功能
"post_0" :
"msg" : "some message",
"users_watching_this_post"
"uid_0": true
"uid_2": true
,
以及深度查询
postsRef.queryOrderedByChild("users_watching_this_post/uid_2").queryEqualToValue(true)
.observeEventType(.ChildAdded, withBlock: snapshot in
print(snapshot)
)
【讨论】:
以上是关于Firebase 可扩展性:整个数据集上的观察者与多个观察者的主要内容,如果未能解决你的问题,请参考以下文章
消除视觉Transformer与卷积神经网络在小数据集上的差距
消除视觉Transformer与卷积神经网络在小数据集上的差距