我目前正在研究涉及查询大量数据(数十亿行)的问题,并且对这种类型的东西有点缺乏经验,会喜欢一些聪明的建议。关于构建一个快速的分布式数据库的建议
数据/问题看起来像这样:
- 每个表具有2-5键列和1个值列。
- 每一行都有一个唯一的键组合。
- 我需要能够通过键的任何子集进行查询(即key1 ='blah'和key4 ='bloo')。
- 如果能够快速插入新行(如果该行已经存在,则更新该值)会很好,但是如果我可以慢慢做到这一点,我会很满意。
目前,我有这个在一台机器上的每个键定义单独的索引上运行MySQL的实现,在所有的键(唯一的)一个指数和一个指数相结合的第一和最后一个键(这是目前最常见的我正在查询,但可以很容易地改变)。不幸的是,这个速度很慢(而且索引最终占用了磁盘空间的10倍,这不是一个大问题)。
我恰好有一大堆快速的计算机可供我使用(〜40),这让这台单机数据库的令人难以置信的速度变得更加令人讨厌。我想利用所有这些功能来快速创建这个数据库。我已经考虑过构建一个分布式散列表,但是这样会很难仅查询一部分键。看起来像BigTable/HBase是一个体面的解决方案,但我还不确信更简单的解决方案不存在。
非常感谢,任何帮助将不胜感激!
不再存在,希望它是一样的:http://www.infoq.com/presentations/shoup-ebay-architectural-principles – Soonts 2011-04-15 09:22:00