我必须研究提供MySQL数据库的解决方案,该数据库可以处理TB级数据量并且具有高可用性(五个九)。每个数据库行可能都有一个时间戳和最多30个浮点值。预期的工作量高达2500次插入/秒。查询可能不那么频繁,但可能很大(可能涉及100Gb的数据),但可能只涉及单个表。
我一直在关注MySQL Cluster,因为这是他们的HA产品。由于我需要使用基于磁盘的存储的数据量。实际上我认为只有时间戳可以保存在内存中,所有其他数据都需要存储在磁盘上。
有没有人有过在这种规模的数据库上使用MySQL Cluster的经验?它甚至可行吗?基于磁盘的存储如何影响性能?
我也对如何实现此数据量的所需可用性的其他建议持开放态度。例如,使用像Sequoia这样的第三方库来处理标准MySQL实例的集群会更好吗?还是基于MySQL复制的更直接的解决方案?
唯一的条件是它必须是基于MySQL的解决方案。我不认为MySQL是我们处理的数据的最佳方式,但这是一个很难的要求。
答案 0 :(得分:2)
速度方面,可以处理。大小方面,问题不是数据的大小,而是索引的大小,因为索引必须完全适合内存。
我很乐意提供更好的答案,但高端数据库工作非常依赖于任务。我需要更多地了解数据的进一步帮助。
答案 1 :(得分:2)
好的,我 读了关于mySQL的部分是一个很难的要求。
所以说,让我首先指出你正在谈论的工作量 - 2500次插入/秒,罕见的查询,查询结果集可能高达整个数据集的10% - 是对于任何关系数据库系统而言,只是pessimal。
(这让我想起了一个项目,很久以前,我需要在不到300秒的时间内通过9600波特RS-422线路(也是一项硬性要求)加载100兆字节的程序数据。硬性要求。)1kbyte / sec×300秒= 300kbytes的事实似乎没有沟通。)
然后是关于“包含最多 30个浮点数”的部分。短语至少表明每个插入的样本数量是可变的,这反过来表明一些标准化问题 - 或者需要使每行30个条目宽并使用NULL。
但是,尽管如此,好吧,你说的是300Kbytes / sec和2500 TPS(假设这确实是一系列不相关的样本)。这个set of benchmarks至少表明它不属于可能性范围。
答案 2 :(得分:2)
This article非常有助于识别可以减慢大型MySQL数据库的速度。
答案 3 :(得分:2)
可能尝试使用hibernate分片并在10个节点上运行MySQL,每个1/2 TB,这样你就可以处理5TB;)远远超出你的极限我认为?