Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 关于构建快速分布式数据库的建议_Database_Database Design_Data Structures - Fatal编程技术网

Database 关于构建快速分布式数据库的建议

Database 关于构建快速分布式数据库的建议,database,database-design,data-structures,Database,Database Design,Data Structures,我目前正在研究一个涉及查询大量数据(数十亿行)的问题,由于对这类问题缺乏经验,我希望得到一些聪明的建议 数据/问题如下所示: 每个表有2-5个键列和1个值列 每一行都有唯一的键组合 我需要能够通过任何键子集(即key1='blah'和key4='bloo')进行查询 能够快速插入新行(如果该行已经存在,则更新值)会很好,但是如果我能够缓慢地这样做,我会很满意 目前,我已经在MySQL中实现了这一点,它在一台机器上运行,在每个键上定义了单独的索引,一个索引跨越所有键(唯一),一个索引结合第一个键和

我目前正在研究一个涉及查询大量数据(数十亿行)的问题,由于对这类问题缺乏经验,我希望得到一些聪明的建议

数据/问题如下所示:

  • 每个表有2-5个键列和1个值列
  • 每一行都有唯一的键组合
  • 我需要能够通过任何键子集(即key1='blah'和key4='bloo')进行查询
  • 能够快速插入新行(如果该行已经存在,则更新值)会很好,但是如果我能够缓慢地这样做,我会很满意
  • 目前,我已经在MySQL中实现了这一点,它在一台机器上运行,在每个键上定义了单独的索引,一个索引跨越所有键(唯一),一个索引结合第一个键和最后一个键(这是目前我正在进行的最常见的查询,但这很容易改变)。不幸的是,这相当慢(索引最终占用了约10倍的磁盘空间,这不是一个大问题)

    我碰巧有一群速度很快的计算机在我的支配下(~40),这使得这台单机数据库难以置信的缓慢变得更加令人讨厌。我想利用所有这些能力,使这个数据库快速。我曾考虑过构建一个分布式哈希表,但这将使得仅查询密钥的子集变得困难。看起来像BigTable/HBase这样的东西是一个不错的解决方案,但我还不认为不存在更简单的解决方案


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

    我建议您收听这个播客,了解一些关于分布式数据库的优秀信息。

    指出一个显而易见的问题:您可能是磁盘受限

    在某些情况下,如果您正在执行随机查询,并且您的工作集比RAM大得多,那么您将受到磁盘可以执行的少量随机IOPS的限制。对于每个连接的磁盘,每秒只能执行几十次子查询


    如果您遇到了这个瓶颈,那么切换到SSD、更大的RAID或大量RAM可能会比在多台计算机之间分配数据库(这通常只会让您获得更多的最后两种资源)获得更多收益。

    不再存在,希望是同一个: