mysql - 大数据或关系数据库(如 MySQL 集群)?

标签 mysql relational-database mysql-cluster nosql

我将在我的项目中处理大量数据。我读过有关大数据的概念,但从未使用过。但是阅读所有这些大数据文档,我仍然不确定我的需求是否需要大数据,或者是否适合使用传统关系数据库处理。

这是关于我的数据库的一些信息。

我的主数据库是不同数据源的存储库。这些数据源中的每一个都处理相同类型的数据(同一域中的数据),但是一些数据源包含额外的字段,这些字段在其他数据源中不可用,而一些包含的更少。也就是说这些数据源中的数据字段有的是相同的,有的是不同的。所以我的核心数据库应该包含所有这些字段。我的核心数据库中的总字段应约为 2000 个字段,它可能包含 10 到 2000 万条记录。

我的核心数据库中发生的数据库操作将是数据插入和读取(搜索)。因为它处理大量数据,所以我想使用大数据概念。但我仍然不确定这是否适合大数据。因为我的一些数据具有相似的特征(相同的字段)并且一些包含额外的信息。我需要在我的数据库中进行所有类型的快速搜索。 谢谢。

最佳答案

像 MySQL 这样的关系数据库可以处理数十亿行/记录,因此决定将取决于您的用例。对于大数据 NoSQL 系统,了解每个系统的优势和局限性如何映射到您的用例非常重要,因为它们的行为可能非常不同。

以下是一些 MySQL 示例:

在第二个示例中,他们从 MySQL 迁移到 Redis,因为他们需要存储相当于 3590 亿行,远远超过他们在 MySQL 中存储的 9.5 亿行。

鉴于您说您有快速搜索要求,了解您需要什么样的搜索很重要,因为不同的数据库支持不同的搜索。此外,某些受支持的搜索功能可能有限。如果您有超出核心数据存储功能的搜索需求,通常会添加全文解决方案,例如,使用 Cassandra 作为数据存储,使用 Elasticsearch 作为搜索组件。

要为这个决定提供一些背景知识,考虑您对 CAP 定理的要求是有用且重要的,该定理指出分布式计算机系统可以提供以下一些但不是全部的保证(来自维基百科):

  • 一致性(所有节点同时看到相同的数据)
  • 可用性(保证每个请求都能收到响应 关于它是成功还是失败)
  • 分区容忍度(尽管任意消息丢失或部分系统出现故障,系统仍继续运行)

http://en.wikipedia.org/wiki/CAP_theorem

您可以在此处以图形方式查看包括 MySQL 和 NoSQL 解决方案在内的不同数据库解决方案的映射方式:

enter image description here

如果您提供有关您的用例的更多信息,您可以获得更详细的回复。

关于mysql - 大数据或关系数据库(如 MySQL 集群)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29116841/

相关文章:

mysql ndb alter table 失败,无法删除索引

mysql - MySQL 多站点集群中如何进行数据节点选择 - 是否基于节点组中数据节点的地理邻近性

mysql - 为什么我的 bool if else 会返回到 else 语句,即使我的 sql 是正确的?

javascript - Ajax 调用或 php 脚本向我的数据结果添加空格

mysql - 如何在 SQL 中转换/修复此 WITH 语句?

database-design - 为了避免一些复杂的查询而重复数据库中的字段是不好的设计实践吗?

mysql - SaaS数据库设计

Mysql 集群插入停止 TCROLLBACKREQ

mysql - 当一列为 NULL 时带有条件的 WHERE 语句

MySQL - 对每个 col 中最常见的数字求和,显示 col 总和在 185 到 215 之间的结果