我目前正在一个问题涉及到查询的大量数据(数十亿行),有些没有经验的与这种类型的事情,将会爱某些聪明的建议。

数据/问题看起来是这样的:

  1. 每个表2-5关键列和1值列。
  2. 每个排有一个独特的组合键。
  3. 我需要能够查询通过的任何子的钥匙(即键1='等等'和key4='布卢').
  4. 这将是很好的能够迅速插入新的行(新的价值,如果该行已经存在)但是我会感到满意,如果我可以这样做缓慢。

目前我有这个执行在MySQL上运行一个单一的机与单独的索引的定义在各个关键,一个指数在所有的钥匙(独特的)和一个指标相结合第一和最后的钥匙(这是目前最常见的查询,我作,但是,可以容易地改变)。不幸的是,这是相当缓慢(和索引,最终采取~10倍的磁盘空间,这不是一个巨大的问题)。

我碰巧有一群的快速计算机在我的处置(~40),这使得难以置信的速度缓慢的这个机数据库的所有多烦人。我想利用这一切能力使这个数据库快。我已经考虑建立一个分布式散列表,而这将使它难以查询的只有一个子集的关键。看来这东西就像大表/HBase将是一个体面的解决方案,但我不相信,一个更简单的解决方案并不存在。

非常感谢,任何帮助,将不胜感激!

没有正确的解决方案

其他提示

我建议你听到这个播客的一些优秀的信息在分布式数据库。小插曲-109-易趣-架构的原则与兰迪-舒普

要指出的显而易见的:你可能盘的约束。

在某一点,如果你正在做的randomish查询和你的工作集足够大于RAM然后你就可以限制小数量的随机IOP盘可以做的。你不能够做得更好几十分子查询每秒每附盘。

如果你对那瓶颈,你可能会获得更多的通过转换到一个SSD,一个更大的袭击,或者大量的-RAM比你将通过分发数据库,其中许多计算机(这将主要是刚刚得到你更多的最后两个资源)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top