MongoDB与Mysql存储空间比较

时间:2012-10-03 22:05:42

标签: mysql mongodb storage

我正在构建一个15+ TB范围的数据仓库。虽然存储空间很便宜,但由于预算有限,我们必须尽可能多地将数据压缩到该空间,同时保持性能和灵活性,因为数据格式经常变得安静。

我尝试使用Infobright(社区版)作为SQL解决方案,它在存储和性能方面表现非常出色,但数据/表格更改的限制使得它几乎不可行。而且infobright对企业版的定价非常陡峭。

在查看MongoDB之后,除了一件事之外,它似乎很有希望。我正和一个10gen的人聊天,他说他们并没有真正考虑存储空间,因为他们将数据压平以实现性能和灵活性,并且他们认为存储太便宜了现在很烦。

所以任何有经验的mongo用户都可以评论它的存储空间vs mysql(因为它是我们现在比较的标准)。如果它更大或更小,你能给出粗略的比例吗?我知道这种情况取决于你在SQL中放入什么类型的数据以及如何定义字段,索引等...但我只是想弄清楚。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

MongoDB没有针对小磁盘空间进行优化 - 正如您所说,“磁盘很便宜”。

从我所看到和阅读的内容来看,由于以下原因估计所需的磁盘空间非常困难:

  • 填充文档以允许就地更新
  • 属性名称存储在每个集合中,因此使用缩写
  • 可能会节省很多
  • 没有内置压缩(目前)
  • ...

恕我直言,一般方法是构建原型,插入数据并查看特定用例需要多少磁盘空间。您可以对查询建模(插入和更新)越实际,结果就越好。

有关详细信息,请参阅http://www.mongodb.org/display/DOCS/Excessive+Disk+Space

答案 1 :(得分:1)

MongoDB 的优缺点

在大多数情况下,用户似乎喜欢 MongoDB。对 TrustRadius 的评论给予面向文档的数据库 8.3 星(满分 10 星)。

经过身份验证的 MongoDB 用户表示他们喜欢该数据库的一些事情包括:

  • 可扩展性。
  • 可读查询。
  • NoSQL。
  • 更改流和图形查询。
  • 用于更改数据元素的灵活架构。
  • 快速查询时间。
  • 无架构数据模型。
  • 易于安装。

用户对 MongoDB 也有负面评价。经过身份验证的用户报告的一些缺点包括:

  • 用户界面,具有相当陡峭的学习曲线。
  • 缺乏联接,这可能会使某些数据检索项目变得困难。
  • 云环境中偶尔缓慢。
  • 高内存消耗
  • 结构不佳的文档。
  • 缺乏内置分析。

MySQL 的优缺点

MySQL 在 TrustRadius 上的评分略高于 MongoDB(10 颗星中的 8.6 颗)。尽管评分更高,但经过身份验证的用户仍然提到了选择 MySQL 的许多优点和缺点。

用户经常提到的一些积极功能包括 MySQL:

  • 可移植性使其轻松连接到辅助数据库。
  • 能够存储关系数据。
  • 速度快。
  • 卓越的可靠性。
  • 卓越的数据安全标准。
  • 用户友好的界面,可帮助初学者完成项目。
  • 易于配置和管理。
  • 快速处理。

当然,即使是喜欢使用 MySQL 的人也会发现他们不喜欢的功能。他们的一些抱怨包括:

  • 对 SQL 的依赖,这为那些需要学习的用户创造了更陡峭的学习曲线 不懂语言。
  • 缺乏对 InnoDB 表中全文搜索的支持。
  • 偶尔会出现稳定性问题。
  • 依赖附加功能。
  • 微调和通用表表达式的限制。
  • 处理一些复杂数据类型的困难。

MongoDB 与 MySQL 的性能

在比较 MongoDB 和 MySQL 的性能时,您必须根据具体情况考虑每个数据库将如何影响您的项目。虽然某些性能特性在客观上看起来很有希望,但您的团队成员可能永远不会使用那些最初将您吸引到数据库的特性。

MongoDB 性能

许多人声称 MongoDB 优于 MySQL,因为它允许他们以多种方式创建查询。换句话说,可以在不了解 SQL 的情况下使用 MongoDB。虽然灵活性提高了 MongoDB 对某些组织的性能,但 SQL 查询对于其他组织就足够了。

MongoDB 也因其处理大量非结构化数据的能力而受到称赞。根据您收集的数据类型,此功能可能非常有用。

MongoDB 不会将您绑定到单个供应商,让您可以自由地提高其性能。如果供应商未能为您提供出色的客户服务,请寻找其他供应商。

MySQL 性能

对于需要一个可以在多个表中存储信息的开源关系数据库的团队来说,MySQL 表现得非常好。但是,您获得的性能取决于您配置 MySQL 数据库的程度。配置应根据预期用途而有所不同。例如,电子商务网站可能需要与研究科学家团队不同的 MySQL 配置。

无论您打算如何使用 MySQL,数据库的性能都会从全文索引、高速事务系统和内存缓存中得到提升,这些缓存可防止您丢失重要信息或工作。

如果您没有从 MySQL 数据仓库和数据库中获得预期的性能,您可以通过将它们与出色的 ETL 工具集成来提高性能,使数据存储和操作比以往任何时候都更容易。

MySQL 与 MongoDB 速度

在 MySQL 和 MongoDB 之间的大多数速度比较中,MongoDB 是明显的赢家。 MongoDB 在接受大量非结构化数据方面比 MySQL 快得多。在处理大型项目时,很难说 MongoDB 比 MySQL 快多少。您获得的速度取决于多种因素,包括您的互联网连接带宽、您所在位置与数据库服务器之间的距离以及您组织数据的方式。

如果其他条件相同,MongoDB 应该能够比 MySQL 更快地处理大型数据项目。

在 MySQL 和 MongoDB 之间选择

选择 MySQL 还是 MongoDB 可能取决于您打算如何使用数据库。

选择 MySQL

对于需要强大的关系数据库管理系统的项目,例如以表格式存储数据,MySQL 可能是更好的选择。对于需要数据安全和容错的情况,MySQL 也是一个不错的选择。如果您拥有长期收集的高质量数据,MySQL 是一个不错的选择。

请记住,要使用 MySQL,您的团队成员需要了解 SQL。如果他们还不知道该语言,您需要提供培训以使他们快速上手。

选择 MongoDB

当您想使用 SQL 以外的数据集群和搜索语言时,MongoDB 可能是更好的选择。任何知道如何用现代语言编写代码的人都可以开始使用 MongoDB。 MongoDB 还擅长快速扩展,允许多个团队协作,并以多种格式存储数据。

因为 MongoDB 不使用数据表来方便浏览,有些人可能难以理解存储在那里的信息。随着时间的推移,用户会逐渐习惯 MongoDB 面向文档的存储系统。