MongoDB vs Firebase [关闭]


148

与MongoDB相比,使用Firebase有哪些量化优势?(无意见)

我知道Firebase是具有自己的API的基于云的服务,但从长远来看,我觉得Mongo可能会给我带来更大的控制权。


53
@David不是基于意见的。OP 并不是在问哪个更好(基于意见),而是在问FB比MongoDb更好(如果有)。要发表意见,我们需要兼顾两者的优点和缺点,并判断哪种技术可能更
受欢迎

:我会建议@itsclarke阅读这件事crisp.chat/blog/...
少年Mayhé

2
@KirillSlatin该问题现已关闭。您可以在《大猩猩与鲨鱼》博客文章中了解为什么不喜欢这种问题。尽管此博客中提到的非建设性原因不再可用,但它仍然非常广泛(枚举答案中的所有差异是乏味的),非常基于时间(可能会添加一些功能来改变这一点),并且通常不是很好适合此网站。
Erik A

Answers:


123
  • Firebase是具有向后连接的实时引擎。也就是说,您可能会构建一个跨平台的应用程序,其中客户端订阅特定数据上的事件,服务器主动通知客户端有关更改的信息
  • 数据层是为您托管的。请注意,它具有高度可扩展性。这是一个不错的kickstarter解决方案。包括身份验证管理
  • 地火。实时地理坐标解决方案。
  • Firebase明显的缺点是:
    • 开始成长后,您必须付出代价
    • 您无法托管数据层(如果拥有数据至关重要,或者您为某个单独的子网开发了应用程序)

编辑:这是一篇不错的文章,介绍如何用Node.js + MongoDb替换应用程序中的Firebase。它显示了您必须自己完成的工作,并解释恕我直言,为什么初创公司(小型应用程序)应从Firebase开始(如果需要对客户端进行实时更新),然后继续进行MongoDb(无论如何自行)解决方案),如果项目不断发展

编辑2:在被Google Firebase 收购之后,现在除了其基本功能之外,还提供了各种额外功能,您将很难自行构建:

  • 为了发展

    • 云消息传递:跨平台可靠地传递和接收消息
    • 文件存储:方便的文件存储(包括iOS)
    • 托管:从Firebase的服务器传递静态文件(包含在免费套餐中)
    • 崩溃报告:不是完整的日志记录服务,而是至关重要的帮助
  • 为了成长

    • 远程配置:即时定制您的应用程序:适用于A / B测试
    • 动态链接:将用户定向到您应用内的正确位置
    • 通知:适时与用户互动

39

苹果和橘子。Firebase是一种后端即服务,包含身份管理,实时数据视图和文档数据库。它在云中运行。

另一方面,MongoDB是具有丰富查询语言的完整数据库。原则上,它在您自己的计算机上运行,​​但是有云提供商。

如果您正在寻找数据库组件,则仅MongoDB更成熟且功能丰富。


31

Firebase专为实时更新而设计。它易于与angular集成。两者都是NoSQL数据库。MongoDB也可以通过Socket.io集成使用Angular做到这一点。Meteor.js还利用MongoDB和开放式套接字连接来进行实时更新。

MongoDB可以在本地运行,也可以托管在许多不同的基于云的提供程序上。在我看来,Firebase非常适合小型应用程序,可以非常快速地启动和运行。MongoDB是更强大的大型应用程序的理想选择,可以进行实时集成,但需要更多的工作。


23

使用Firebase相当多之后,我开始寻找一些东西。

如果您打算将其用于大型实时应用程序,则不是最佳选择。它有很多问题,包括错误的错误处理系统和限制。您将花费大量时间尝试了解Firebase及其知识。对于一个项目来说,成为一个失去控制的整体项目也很容易。就大型应用程序的后端而言,MongoDB是一个更好的选择。

但是,如果您需要制作一个小型应用程序或快速制作原型,则Firebase是一个不错的选择。这将是非常容易上手的方法。


22

我将用Firebase的Angular库AngularFire回答这个问题。

  1. Tl; dr:超级大国。:-)

  2. AngularFire的三向数据绑定。Angular将视图和$ scope绑定在一起,即,用户在视图中的操作会自动更新局部变量,而当JavaScript更新局部变量时,视图也会自动更新。使用Firebase,云数据库也可以自动更新。您无需编写$ http.get或$ http.put请求,只需更新数据即可。

  3. 五向数据绑定以及七向,九向等。我使用AngularFire制作了井字游戏。两个玩家可以一起玩,两个视图更新了两个$ scopes和云数据库。您可以使用三个或更多玩家共享一个Firebase数据库来制作游戏。

  4. AngularFire的OAuth2库使使用Facebook,GitHub,Google,Twitter,令牌和密码的授权变得容易。

  5. 双重安全性。您可以将Angular路由设置为需要授权,并在Firebase中设置有关谁可以读取和写入数据的规则。

  6. 没有后端。您无需使用Node和Express创建服务器。运行自己的服务器可能需要做很多工作,需要了解安全性,并且如果服务器出现故障,则需要有人做某事,等等。

  7. 快速。如果您的服务器位于旧金山,而客户端位于圣何塞,那很好。但是对于班加罗尔的客户端而言,连接到服务器的速度会变慢。Firebase部署在世界各地,可在任何地方快速连接。


什么是Fireloop ?,这是用Firebase编写rest api的一种方法吗?
ashishSober'1

实际上,我认为angularfire很棒,您能以任何方式将其传递并传递给您自己的数据库系统使用吗?在这种情况下,如果是Mongo,那么您可以使用三种数据方式绑定和还可以即时更新您的值
Kross

我喜欢您最后的评论:“ Firebase已部署在世界各地,可以在任何地方进行快速连接。”
莱斯特

13

以我的经验,如果您尝试进行用户管理,数据库,消息传递等应用程序,那么与Firebase一起工作将是一个巨大的优势,因为所有这些功能都已经很好地集成在一起。

就像其他人所说的那样,如果您只是专注于数据库/查询方面,请坚持使用mongo。


13

Firebase是一组功能。

  • 实时数据库
  • 代管
  • 认证方式
  • 存储
  • 云消息传递
  • 远程配置
  • 测试实验室
  • 崩溃报告
  • 通知事项
  • 应用索引
  • 动态链接
  • 邀请
  • AdWords
  • AdMob

我相信您正在尝试将Firebase实时数据库与Mongo DB进行比较。Firebase Realtime Database以JSON格式存储数据,并将所有数据更新同步到所有监听该数据的客户端。它使您摆脱了设置和扩展任何数据库所需的所有复杂性。我不建议在需要大量数据聚合的复杂场景中使用Firebase(需要SUM / AVERAGE之类的查询)。尽管最近可以使用Firebase函数来实现。在Firebase中对数据建模非常棘手。但这是立即开始的最佳方法。MongoDB是一个数据库。这为您提供了许多强大的功能。但是MongoDB在任何平台上安装时都需要自己管理。

当我尝试在Firebase或MongoDB(或任何DB)之间进行选择时。我尝试回答以下问题。

  1. 是否有许多要执行的聚合查询。(例如报表工具或BI工具)。如果是,请不要使用Firebase
  2. 我需要做很多交易吗?(如果是,那么我不希望使用firebase)(虽然在引入函数之后,事务处理有些容易,但是如果需要维护大量事务,这也是开销)
  3. 我必须在什么时间轴上启动并运行。(Firebase非常易于设置和集成)。
  4. 我是否具备扩展数据库和解决数据库相关问题的专业知识?(Firebase更像是SAAS,因此无需担心可伸缩性)

13

Firebase提供了一些良好的功能,例如实时更改反映,轻松集成身份验证机制以及许多其他内置功能,可用于快速Web开发。Firebase确实使Web开发变得如此简单,甚至从未存在过。Firebase数据库是MongoDB的分支

与MongoDB相比,使用Firebase有什么优势?

您可以在MongoDB上利用Firebase所有内置功能

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.