MongoDB与Firebase比较

180

MongoDB vs Firebase

使用Firebase相较于MongoDB有哪些数量上的优势?(不包含观点)

我知道Firebase是一种基于云的服务,并且具有自己的API,但我认为Mongo在长期内可能给我更多的控制。


70
@David,这并不是基于观点的。原帖子并没有询问哪个更好(那将是基于观点的),而是在询问FB相对于MongoDB是否具有任何优势。要发表观点,我们需要列出两者的优缺点,并判断哪种技术可能更受推崇。 - Kirill Slatin
1
我建议@itsclarke阅读这篇文章:https://crisp.chat/blog/why-you-should-never-use-firebase-realtime-database/ - Junior Mayhé
5
@KirillSlatin 这个问题现在已经关闭了。你可以阅读Gorilla vs Shark博客文章了解为什么不欣赏这样的问题。虽然博客中提到的“不具建设性”的原因已不再使用,但该问题仍然非常广泛(在一个答案中列举所有的差异是繁琐的),非常基于时间(可能会添加功能来改变这一点),并且通常不适合在此网站上提问。 - Erik A
2
为什么这个高度有用的问题会被关闭?这是Stack Overflow的许多严重问题之一。它会阻止其他人提出实际有用的问题,从而使其他人无法获得巨大的收益。 - Uriel
3
@Uriel 这个问题被关闭,因为它在询问一个数据库相对于另一个的“优势”,这很难回答;对你来说可能是一个“优势”,对我来说可能不是(因此它更依赖具体应用场景)。最重要的是,MongoDB和Firebase都是服务套件,所以这并不是在询问一个具体的产品。如果我们包括MongoDB Realm在内,它是一种离线优先的数据库,而Firebase则是在线优先的,并具有离线持久性。此外,这是一个6年前的问题,两个平台都发生了一些变化。 - Jay
8个回答

142
  • Firebase是一个具有反向连接的实时引擎。例如,您可以构建一个跨平台应用程序,客户端订阅特定数据的事件,服务器主动通知客户端有关更改的信息。
  • 数据层为您托管。请注意,它具有高度可扩展性。这是一个不错的起步解决方案,包括身份验证管理。
  • Geo-Fire。实时地理坐标解决方案。
  • Firebase的明显缺点是:
    • 一旦开始增长,您就必须支付费用。
    • 您无法托管数据层(如果拥有数据很重要或者您正在为某个分离的子网开发应用程序)。

编辑:这里有一篇不错的文章,介绍如何使用Node.js+MongoDb替换您的应用程序中的Firebase。它展示了您需要自己完成多少工作,并且解释了为什么初创企业(小型应用程序)应该从Firebase(如果需要向客户端提供实时更新)开始,并在项目不断发展时继续使用MongoDb(在任何情况下都是自己编写的解决方案)。

编辑2:在被Google收购后,Firebase现在提供了各种额外的福利,这是您自己很难构建的基本功能之上:

  • 开发用途

    • 云消息传送:可靠地跨平台交付和接收消息
    • 文件存储:轻松的文件存储(包括iOS)
    • 托管:从Firebase服务器提供静态文件(免费计划包括在内)
    • 崩溃报告:不是完整的日志记录服务,但非常有帮助
  • 为了增长

    • Remote Config: 动态自定义您的应用程序,适用于A/B测试
    • 动态链接: 将用户发送到应用程序内正确的位置
    • 通知: 在恰当时刻与用户进行互动

  • 44

    苹果和橘子。Firebase是一个后端即服务平台,包含身份管理、实时数据视图和文档数据库等功能。它运行在云上。

    另一方面,MongoDB是一种功能丰富的完整数据库,具有丰富的查询语言。原则上它可以在你自己的机器上运行,但也有云服务提供商。

    如果你只需要数据库组件,那么MongoDB更加成熟和功能丰富。


    36

    Firebase旨在实时更新。它很容易与Angular集成。两者都是NoSQL数据库。MongoDB也可以通过Socket.io集成与Angular一起做到这一点。Meteor.js还使用带有打开套接字连接的MongoDB进行实时更新。

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


    31

    经过大量使用Firebase后,我发现了一些问题。

    如果你想用它来开发大型实时应用程序,那么Firebase不是最好的选择。它有自己的一系列问题,包括糟糕的错误处理系统和限制。你将花费大量时间来理解Firebase及其细节。此外,项目很容易变成一个失控的庞然大物。MongoDB在作为大型应用的后端方面要比Firebase好得多。

    然而,如果你需要制作一个小型应用程序或快速原型,Firebase是一个很好的选择。它是一个极其简单的快速启动方式。


    26

    我将通过AngularFire,Firebase针对Angular的库来回答这个问题。

    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
    其实我认为AngularFire非常棒,你有没有办法将它拿来与自己的数据库系统一起使用?比如Mongo,这样你就可以利用三向数据绑定,并且能够即时更新你的值,那就太棒了。 - Kross
    我喜欢你评论的最后一部分:“Firebase在全球范围内部署,以实现快速连接。” - Lester

    18

    Firebase是一套包含以下功能的技术套件:

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

    我认为你正在试图将Firebase实时数据库与MongoDB进行比较。 Firebase实时数据库以JSON格式存储数据,并将数据更新同步到所有监听该数据的客户端。它摆脱了设置和扩展任何数据库所需的所有复杂性。如果需要聚合数据(需要SUM / AVERAGE之类的查询),则不建议使用Firebase。尽管最近可以使用Firebase函数来实现这一点,但在Firebase中对数据进行建模是棘手的。但它是立即启动的最佳方式。 MongoDB是一个数据库,具有许多强大的功能。但是,安装在任何平台上的MongoDB都需要自己管理。

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

    1. 是否执行了许多聚合查询?(例如,报告工具或BI工具)如果是,则不要选择Firebase。
    2. 我需要执行许多事务吗?(如果是,则不想使用Firebase)(尽管在引入函数后,事务有点容易,但如果需要维护大量事务,这也是一个开销)
    3. 我有多少时间线来启动和运行?(Firebase非常易于设置和集成)。
    4. 我是否具备扩展数据库并解决与数据库相关的问题的专业知识?(Firebase更像是SAAS,因此无需担心可扩展性)

    我的理解是您对Firebase聚合查询不满意。然而,这并不是您的第一点所说的。您能否举个例子,说明聚合查询并不像您所说的那么容易(或者我理解的那样)? - NoChance

    16

    就我的经验而言,如果你正在尝试进行用户管理、数据库、消息传递等应用程序的开发,使用Firebase是一个巨大的优势,因为所有这些功能都已经很好地集成在了一起。

    正如其他人所说,如果你只关注数据库/查询方面,那么请坚持使用Mongo。


    16

    Firebase提供了一些很好的功能,比如实时反映变化、易于集成身份验证机制,以及许多其他内置功能,可以加速Web开发。

    Firebase真正使Web开发简单,这是从未有过的。

    Firebase数据库是MongoDB的一个分支

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

    你可以利用Firebase的所有内置功能,这是MongoDB所没有的。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接