【问题标题】:How to handle a huge dataset [closed]如何处理庞大的数据集[关闭]
【发布时间】:2021-04-03 10:02:11
【问题描述】:

最近我正在阅读有关在 MySQL 数据库中管理庞大数据集的不同方法。

说实话,目前我很困惑。我阅读了有关上述问题的一些概念,但我不知道它们之间的关系如何?

请看看这些:

  • 分区 - 这是一个插件
  • 聚类 - 我猜是命名为 NDB
  • 分片 - 我认为这是一个概念,没有什么可实施的

场景是在 MySQL 中存储/维护/搜索大量数据(假设一个表有 50 亿行)。所以我们必须拆开数据集,但是怎么做呢?

我有几个问题:

  1. 以上三项之间有多少重叠?
  2. 在分区中,所有部分都将存储在同一台机器(服务器)上?或者它们可以保存在不同的机器中?
  3. 如何检测数据存放在哪个分区? (以便相应地查找数据)
  4. 我知道分区是针对“表”,集群是针对“数据库”吗?
  5. 通过分片,我们将数据复制到不同的服务器中,或者我们将在不同的服务器中拥有不同的数据?另外,是发生在“表”层还是“数据库”层?
  6. 不同部分(集群/分区)在需要时如何相互看到?就像我们需要在整个表上有一个join 子句一样。假设数据被分成不同的分区/机器。
  7. 要使用集群,是否需要安装不同版本(version)的 MySQL?普通版不支持吗?

无论如何,我已经阅读了 3 多天,但主要概念对我来说仍然模棱两可。

【问题讨论】:

  • 仅供参考“购买与发明”singlestore.com/comparisons/mysql
  • 这个问题有很多“重点”问题(以及很多误解);我正在投票重新开放。
  • 问题归结为“比较和对比”分区、集群和分片。然后提供了一些需要讨论的方面。
  • 聚类来自 NDB 或 Galera。最好在两者之间分开。分区内置在 InnoDB 中。要进一步讨论您的 5B 行表,请开始一个新问题并解释您拥有的数据类型(数据仓库、时间序列、传感器数据、位置跟踪等);我们可以“专注”于您的类型数据的最佳解决方案。
  • 是的,您可以混合搭配这 3 个概念,也许可以任意组合。但通常,一个应用程序不需要超过一种技术。

标签: mysql sql performance


【解决方案1】:

快速比较:

description nr of servers redundant? a goal
paritioning 1 No time series
clustering >= 3 Yes recovery
sharding >1 No write scaling

分片是在多个服务器之间分配数据。

  1. 以上三项之间有多少重叠?

答:很少。每个人都针对不同的目标以不同的方式划分数据。

  1. 在分区中,所有部分都将存储在同一台机器(服务器)上?或者它们可以保存在不同的机器中?

A:在分区中,所有部分都将存储在同一台机器(服务器)上的同一实例中。

  1. 如何检测数据存放在哪个分区?

答:如果可行,请提供一个WHERE 子句来确定需要哪些分区。 (见“分区修剪”)

  1. 我知道分区是针对“表”,集群是针对“数据库”吗?

A:我想你可以这样描述它。集群(也)具有在不同硬件上拥有第二个副本的优势。

  1. 通过分片,我们将数据复制到不同的服务器中,或者我们将在不同的服务器中拥有不同的数据?另外,是发生在“表”层还是“数据库”层?

答:不会。通常情况下,最大的表会以某种任意方式进行拆分——一些行放在每个分片上。然后客户端必须知道拆分是如何完成的,才能知道要与哪个服务器通信。 (这项重要任务没有固定代码。)较小的表要么复制到所有分片上,要么放到其他机器上。

  1. 不同部分(集群/分区)在需要时如何相互看到?就像我们需要在整个表上有一个连接子句一样。假设数据被分成不同的分区/机器。

答:JOIN 仅在一台服务器上工作。 (MariaDB 有“FEDERATEDX”,但这是一种代价高昂的解决方法。)对于分区,查询将许多分区视为一个大表,因此JOIN 不是问题。对于集群,一切都在每台服务器上,没有问题。因为分片很好在你只有大表的一部分的约束内

顺便说一句:请阅读:How to handle a question that asks many things

【讨论】:

  • 这就像 no-raid,raid1 和 raid0,分别(在硬盘数据世界中)
  • 我在这里对一些答案提出质疑,但需要的不仅仅是评论字段来回复。
  • @RickJames:(我)允许您编辑我的“答案”,因为我知道它不完整。
  • @Luuk - 谢谢;完成。
猜你喜欢
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
  • 2014-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多