MongoDB与Firebase
在MongoDB上使用Firebase有什么好处?
我知道Firebase是一个具有自己的API的云端服务,但是我觉得Mongo可以长期给予我更大的控制权。
- Firebase是一款具有向后连接function的实时引擎。 也就是说,您可以构build一个跨平台的应用程序,客户端可以订阅特定数据和服务器上的事件,并主动向客户端通知有关更改
- 数据层是为你托pipe的。 请注意,它是高度可扩展的。 这是一个不错的kickstarter解决scheme。 包括身份validationpipe理
- 地理火灾。 实时地理坐标解决scheme。
- Firebase的明显缺点是:
- 一旦你开始成长,你必须付钱
- 你不能托pipe数据层(如果拥有数据是关键的,或者你开发一个分离的子网的应用程序)
编辑:这里是一个很好的文章,如何用Node.js + MongoDbreplace您的应用程序中的Firebase。 它显示了你自己需要做多less工作,并解释说,恕我直言,为什么一个初创公司(小应用程序)应该从Firebase开始(如果需要实时更新客户端)并继续MongoDb(在任何情况下自我如果项目不断发展的话
编辑2:被Google Firebase收购后,现在提供各种基本function,您将难以自行构build:
-
为了发展
- 云消息传递 :可靠地跨平台交付和接收消息
- 文件存储 :简单的文件存储(包括iOS)
- 托pipe :从Firebase服务器提供静态文件(包含在免费计划中)
- 崩溃报告 :不是一个完整的日志logging服务,但至关重要的帮助
-
为了成长
- 远程configuration :实时自定义您的应用:适合A / Btesting
- dynamic链接 :将用户发送到您的应用程序内的正确位置
- 通知 :在适当的时候与用户交stream
苹果和桔子。 Firebase是一个包含身份pipe理,实时数据视图和文档数据库的后端即服务。 它运行在云端。
另一方面,MongoDB是一个丰富的查询语言的完整数据库。 原则上它在你自己的机器上运行,但是有云提供者。
如果你正在寻找数据库组件,只有MongoDB更成熟和function丰富。
我将根据AngularFire,Firebase的Angular库回答这个问题。
-
Tl; dr:超级大国。 🙂
-
AngularFire的三路数据绑定。 Angular绑定了视图和$ scope,也就是说,你的用户在视图中做了什么在局部variables中自动更新,当你的JavaScript更新本地variables时,视图自动更新。 借助Firebase,云数据库也会自动更新。 你不需要写$ http.get或$ http.put请求,数据只是更新。
-
五路数据绑定,七路,九路等。我用AngularFire做了一个井字游戏。 两个玩家可以一起玩,两个视图更新两个$范围和云数据库。 您可以与三个或更多玩家进行游戏,共享一个Firebase数据库。
-
AngularFire的OAuth2库使得使用Facebook,GitHub,Google,Twitter,令牌和密码的授权变得容易。
-
双重安全。 您可以设置您的Angular路线以要求授权,并在Firebase中设置关于谁可以读取和写入数据的规则。
-
没有后端。 您不需要使用Node和Express制作服务器。 运行自己的服务器可能需要很多工作,需要了解安全性,要求某人在服务器故障时执行某些操作等。
-
快速。 如果你的服务器在旧金山,而客户端在圣何塞,那就好了。 但是,class加罗尔的客户端连接到您的服务器将会变慢。 Firebase部署在世界各地,以实现各地的快速连接。
Firebase专为实时更新而devise。 它很容易与angular度整合。 两者都是NoSQL数据库。 MongoDB也可以通过Socket.io集成与Angular做到这一点。 Meteor.js还利用MongoDB的开放套接字连接实时更新。
MongoDB可以在本地运行,或托pipe在许多不同的基于云的提供程序上。 在我看来,Firebase非常适合小型应用,启动和运行起来非常快。 MongoDB是更强大的更大应用的理想select,实时集成是可能的,但需要更多的工作。
在使用Firebase之后,我已经find了一些东西。
如果您打算将其用于大型实时应用程序,则不是最佳select。 它有自己广泛的问题,包括error handling系统和限制。 您将花费大量的时间来了解Firebase,这是一个扭曲的问题。 一个项目也很容易成为一个失控的单一事物。 就大型应用程序的后端而言,MongoDB是一个更好的select。
但是,如果您需要制作一个小应用程序或快速创build原型,Firebase是一个不错的select。 这将是令人难以置信的简单的方法来击败地面运行。
根据我的经验,如果您尝试执行用户pipe理,数据库和消息类应用程序,使用Firebase是一个巨大的优势,因为所有这些function都已经很好地集成在一起。
像其他人一样,如果你只关注数据库/查询方面,坚持mongo。
Firebase是一套function。
- 实时数据库
- 主机
- authentication
- 存储
- 云消息
- 远程configuration
- testing实验室
- 崩溃报告
- 通知
- App Indexing
- dynamic链接
- 邀请
- AdWords的
- AdMob广告
我相信您正试图将Firebase实时数据库与Mongo DB进行比较。 Firebase实时数据库将数据存储为JSON格式,并将所有数据更新同步到所有侦听数据的客户端。 它将您从所有设置和扩展任何数据库所需的复杂性中抽象出来。 我不会推荐firebase,在那里你需要很多复杂的场景来聚合数据(查询需要SUM / AVERAGE类的东西)。 虽然这是最近使用Firebasefunction实现的。 在Firebase中build模数据非常棘手。 但这是让你瞬间开始的最好方法。 MongoDB是一个数据库。 这给你很多强大的function。 但是当MongoDB安装在任何平台上时,你需要自己pipe理它。
当我尝试在Firebase或MongoDB(或任何数据库)之间进行select时。 我试着回答以下。
- 是否有许多聚合查询被执行(例如报告工具或BI工具)。 如果是的话,不要去Firebase
- 我是否需要进行大量的交易? (如果是,那么我不想用firebase去)(虽然引入函数后,Tranactions有点容易,但如果需要维护很多事务,这也是一个开销)
- 我需要什么时间表来启动和运行(Firebase非常易于安装和集成)。
- 我是否拥有专业知识来扩大数据库并解决与数据库相关的问题。 (Firebase更像SAAS,所以不用担心可缩放性)