我目前正在研究一个涉及查询大量数据(数十亿行)的问题,并且对这种类型的东西缺乏经验,会喜欢一些聪明的建议。
数据/问题如下所示:
目前我在MySQL上实现了这一功能,在一台机器上运行,每个键上都定义了单独的索引,一个索引跨越所有键(唯一),一个索引组合了第一个和最后一个键(这是当前最常见的查询我'制作,但这很容易改变)。不幸的是,这很慢(并且索引最终占用了大约10倍的磁盘空间,这不是一个大问题。)
我碰巧有一大堆快速计算机供我使用(~40),这使得这台单机数据库令人难以置信的缓慢变得更加烦人。我想利用所有这些功能来快速建立这个数据库。我已经考虑过构建一个分布式哈希表,但这样就很难只查询一部分密钥。似乎像BigTable / HBase这样的东西会是一个不错的解决方案,但我还不相信更简单的解决方案不存在。
非常感谢,非常感谢任何帮助!
答案 0 :(得分:2)
我建议您收听此播客,了解有关分布式数据库的一些优秀信息。 episode-109-ebays-architecture-principles-with-randy-shoup
答案 1 :(得分:0)
指出明显的:你可能是磁盘绑定。
在某些时候,如果您正在进行随机查询并且您的工作集比RAM大得多,那么您将受到磁盘可以执行的少量随机IOPS的限制。每个连接的磁盘每秒都不会有几十个子查询。
如果你遇到了这个瓶颈,你可能会通过切换到SSD,更大的RAID或大量RAM而获得更多,而不是通过在许多计算机之间分配数据库来获得更多(这通常会让你获得更多最后两个资源)