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

标签 database database-design data-structures

我目前正在处理一个涉及查询大量数据(数十亿行)的问题,并且我对这类事情有点缺乏经验,希望得到一些聪明的建议。

数据/问题如下所示:

  1. 每个表有 2-5 个键列和 1 个值列。
  2. 每一行都有唯一的键组合。
  3. 我需要能够通过键的任何子集(即 key1='blah' 和 key4='bloo')进行查询。
  4. 如果能够快速插入新行(如果该行已存在则更新值)会很好,但如果我能慢慢地插入,我会很满意。

目前我在一台机器上运行的 MySQL 中实现了这个,每个键上定义了单独的索引,一个索引跨所有键(唯一)和一个索引组合第一个和最后一个键(这是我目前最常见的查询)我正在制作,但这很容易改变)。不幸的是,这非常慢(索引最终占用了大约 10 倍的磁盘空间,这不是一个大问题)。

我碰巧有一群快速计算机可供使用(约 40 台),这使得这个单机数据库令人难以置信的缓慢变得更加烦人。我想利用所有这些功能来加快数据库的速度。我考虑过构建一个分布式哈希表,但这会使仅查询键的一个子集变得困难。 BigTable/HBase 之类的东西似乎是一个不错的解决方案,但我还不确定不存在更简单的解决方案。

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

最佳答案

我建议您收听此播客,了解有关分布式数据库的一些重要信息。 episode-109-ebays-architecture-principles-with-randy-shoup

关于database - 关于构建快速分布式数据库的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/930811/

相关文章:

sql - mysql强制一条记录到顶部

database - 化学 react ER图

SQL Server 规范化策略 : varchar vs int Identity

mysql - 数据库架构问题,产品类型

python - 自定义 Django 数据库前端

java - 如何将列表转换为UpdatableRecord?

sql - 使用日期维度表比直接存储日期有什么优势?

haskell - 如何在Morte上创建 `enumFromTo`函数?

python - 您将如何在 Python 中表示扫雷器网格?

java - 文本编辑器的 Clojure zipper 结构(带有映射和数组)