我目前正在研究一个问题,这个问题涉及查询大量数据(数十亿行),由于对这类事情缺乏经验,我希望得到一些聪明的建议。
数据/问题如下:
每个表有2-5个键列和1个值列。
每一行都有一个唯一的键组合。
我需要能够按任何键子集(即key1='blah'和key4='bloo')进行查询。
如果能够快速插入新行(如果行已经存在,则更新值)将是很好的,但如果我能慢慢地这样做,我会很满意。
目前,我已经在mysql中实现了这个功能,它在一台机器上运行,每个键上都定义了单独的索引,所有键上都有一个索引(唯一的)和一个组合了第一个和最后一个键的索引(这是目前我最常用的查询,但很容易更改)。不幸的是,这相当慢(索引最终占用大约10倍的磁盘空间,这不是一个大问题)。
我正好有一大堆快速的计算机可以使用(大约40台),这使得这台单机数据库令人难以置信的缓慢变得更加烦人。我想利用所有这些能力来加快这个数据库。我考虑过构建一个分布式散列表,但这将使只查询一个子集的键变得困难。看起来像BigTa/ HBase这样的东西是一个不错的解决方案,但我还不相信一个简单的解决方案是不存在的。
非常感谢,任何帮助都将不胜感激!

最佳答案

我建议你听听这个播客,了解一些关于分布式数据库的优秀信息。
episode-109-ebays-architecture-principles-with-randy-shoup

07-24 09:37
查看更多