基于Firebase的移动应用数据服务器设计
Posted
技术标签:
【中文标题】基于Firebase的移动应用数据服务器设计【英文标题】:dataserver design based on firebase for Mobile Apps 【发布时间】:2014-02-02 20:41:45 【问题描述】:我正在考虑使用 Firebase 作为基于移动社交网络的主要数据库,其中仅包括移动客户端(android、ios)。 在社交网络场景中,每个用户在其朋友圈内只接触到有限数量的数据,Firebase 实际上运作良好。但是,我有一些担忧,我不想在任何繁重的工作开始之前解决。
我有消息和聊天功能,用户可以在其中向他的所有朋友或选定的朋友组发送消息。由于每个用户的朋友圈略有不同,因此消息(或带有引用的通知)需要发送给每个朋友。 我担心的是,如果用户有 500 个朋友,这将在应用程序内生成 500 个推送请求到具有 500 个不同 URL 的 firebase。 或者,我可以将聊天/消息存储在一个地方,但是接收消息意味着扫描 500 个不同的 url(所有朋友)以获取手机中的最新消息。无论哪种方式,我最终都会得到相同的结果。
我是否需要担心应用性能?
我的第二个想法是构建代理服务器,它负责将通知推送给朋友,这样应用程序只会向服务器发送一个请求,将消息单独推送给所有朋友。但这会增加额外的开发工作,从而增加项目的成本。
【问题讨论】:
【参考方案1】:答案是对您的数据进行非规范化处理,并在创建消息时将它们放入人们的收件箱中。我们构建了一个名为 Firefeed 的应用来展示这种方法:http://firefeed.io/。
基本概念是在创建时创建消息的多个副本,并将副本发送到每个收件人的“收件箱”。当然,这意味着发送者在发送后无法编辑或删除,但这在大多数情况下可能是可接受的权衡。 (注意:在技术上可以编辑/删除消息,但这是一项非常昂贵的操作,因为您必须遍历整个网络才能找到副本)。
在这篇博文中有更多关于如何去规范化你的数据:https://www.firebase.com/blog/2013-04-12-denormalizing-is-normal.html
【讨论】:
谢谢,我实际上已经阅读了这篇文章,但我仍然很好奇,考虑到这一切都是在客户端完成的,可能通过移动网络,向每个盒子发送副本是否会影响性能.我们正在讨论将副本发送给成百上千的收件人。以上是关于基于Firebase的移动应用数据服务器设计的主要内容,如果未能解决你的问题,请参考以下文章
在一个移动应用中使用来自不同 Firebase 项目的两个 Firebase 服务