使用MySQL和Mongodb一起

27

我比使用MongoDB更加熟悉MySQL,但从学习MongoDB的经验来看,它正是我需要的东西,但是它也有MySQL可以做到的限制(例如自动递增)。

将所有事情都使用MongoDB,只使用MySQL处理某些事情聪明吗?

例如,使用MongoDB存储用户和其他所有内容,但使用MySQL创建例如票务系统。


这取决于工作的性质。例如,自动递增并不足以让我添加另一个数据库。但是,如果您需要它们,拥有两个不同的数据库基本上没有问题。 - joshp
是的,我在使用它做更多的事情,我只是举了一个例子。谢谢。 - WittyPleb
3个回答

25

在一个项目中使用两种数据库技术听起来是完全合理的。只要确保你选择了适合该任务的正确工具。

通常使用MySQL作为主要存储,而使用MongoDB作为缓存/中间存储以提高速度。

例如,你可以将MongoDB用于读密集型数据。而生成报告所需的数据则适合关系型系统,如MySQL。


使用两个不同的数据库是常见的吗? - WittyPleb
两种不同类型的数据库,例如面向对象和关系型。 - aleroot
1
谢谢,我现在学到了应该使用MySQL作为我的主要数据库,并使用MongoDB进行其他事情,我将开始转换我的应用程序 :)(不用担心它很小) - WittyPleb

8

以下是一位MongoDB课程学习者对其使用的精彩讨论。

选择或不选择MongoDB的考虑因素

博主认为,在其他DB系统中使用MongoDB完全没问题,但在整个系统范围内使用MongoDB会面临一些最具挑战性的情况,有些情况几乎是不可能的。

以下是一些子标题:

选择Mongo的原因

  • 文档导向和无模式
  • 水平可扩展性和高可用性
  • 快速写入并快速返回
  • 综合查询和聚合框架
  • 相对直观的体系结构

不选择Mongo的原因

  • NoSQL = No Joins
  • 没有ACID事务
  • 索引不能适应内存

1
只是为了补充一下答案,从Mongo 4.0开始提供ACID事务。 - Ankit Balyan

8

在MongoDB的主要网站上有一些关于MongoDB用例的讨论。一般来说,如果您的业务情况包括需要事务和重量级T-SQL功能,则最好使用关系型数据库,如MySQL。

MongoDB的适用场景如下:

  1. 您的数据采用文档格式,即单个文档中存在不规则结构(即数据不需要连接)
  2. 考虑使用平面文件系统(再次由于您的数据结构),但您希望在索引/查询该数据方面具有“更多”能力。
  3. 您的项目处于您真正不知道数据模式或结构最终将是什么的状态。
  4. 您具有特定的数据类型,例如地理空间数据,并且希望能够针对其进行查询。
  5. 您可能需要快速且廉价地扩展数据存储位置。

只是想说,对于Mongo来说,第三点并不一定是一个好的使用案例..我认为在那种情况下,MySQL会更好。虽然如果你不知道你的数据库需要看起来像什么,你就不应该开始开发你的项目,直到你知道为止。 - John Harding
@JohnHarding 并不是那么简单。我发现自己在一个模型无法完全描述且需要不断更新的项目中。在这种情况下,我发现使用Mongo更容易处理。 - Wanny Miarelli
我的真实案例是一个仪表盘/报告内部网,从多个供应商获取数据。我们使用定期的 crons 作业更新自己的数据库。这些“模块”之间几乎没有交集。性能差异对我们来说可以忽略不计,但基于 mongoose 的服务/模型/存储库比那些基于 TypeOrm 的要小 3 倍。更不用说处理迁移了。 - José Henrique

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