【发布时间】:2015-10-15 08:52:18
【问题描述】:
问题:
如何设计一个以 Firebase 作为后端且可扩展的社交网络“供稿”?
可能的答案:
“MVP”解决方案是为每个用户设计一个feeds 根子节点,并将来自关注用户的任何新帖子附加到每个关注者的提要中。
users
user1
name: bob
user2
name: alice
follows:
user1: true
posts
post1
author: user1
text: 'Hi there'
feeds
user2
post1: true
这很好用,并在Firefeed 项目中进行了演示。但它不能很好地扩展:如果 Katy Perry 想要发布一些东西,她的手机将不得不写入数百万个订阅源。
因此this SO question 中报告的解决方案将此操作委托给基于服务器的进程。
我的问题是,Firebase 是一个“无后端”解决方案,这是我使用它的主要原因,所以我想确保在没有服务器的情况下绝对没有机会实现此功能。
如果feeds 子元素在上述架构中被删除了怎么办?
然后这样做:
baseRef.child('posts')
.orderBy('author')
.whereIn(baseRef.child('users/user2/follows').keys())
不幸的是,whereIn 不存在于 Firebase API 中,也不存在子查询:(
任何其他可能不需要服务器的模型结构?
谢谢
【问题讨论】:
标签: performance database-design firebase