3

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

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

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

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

我在这里先向您的帮助表示感谢!

4

2 回答 2

3

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

根据我所见和阅读的内容,很难估计所需的磁盘空间,原因是:

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

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

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

于 2012-10-04T09:23:51.157 回答
2

MongoDB的优点和缺点

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

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

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

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

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

MySQL的优点和缺点

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

用户经常提到的一些积极特性包括 MySQL:

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

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

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

MongoDB 与 MySQL 性能对比

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

MongoDB 性能

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

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

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

MySQL 性能

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

无论您打算如何使用 MySQL,全文索引、高速事务系统和防止丢失关键信息或工作的内存缓存都可以提高数据库的性能。

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

MySQL vs 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 面向文档的存储系统。

于 2021-04-08T10:26:41.067 回答