具有快速基本查询和 5 亿项计数的数据库存储

标签 database performance storage bigdata

我正在寻找一种存储解决方案,该解决方案(仅)对于基本查询而言速度很快,并且依赖于大型但简单的数据集;没有其他限制。

数据由 5 亿项组成,形状如下:

{
    a: VARCHAR(100)
    b: VARCHAR(100)
    c: VARCHAR(100)
}

我想快速解决以下基本查询:
“给我第 X 页的项目,其中 a = X AND b = Y AND and C = Z
三个约束中的任何一个都是可选的,例如,a = X 也是一个有效的查询。
所以我只想查询单行内的字段相等性。
(其他查询并不重要。永远不需要连接。)

此外,我希望对每个查询进行快速计数估算
例如,我想知道 a = X 大约有 200 万个项目。

哪些存储解决方案/配置最匹配,为什么?

更新:知道底层数据很少改变也可能是件好事 并以 ± 2000 万件的批处理一次性添加。



我目前尝试将数据提取到 MySQL 数据库,每个列都有索引。我得到了 1 亿个项目,查询性能非常好。但是,服务器变得极不稳定,导入过程随机停止。我正在使用 LOAD DATA

最佳答案

您的术语有多频繁,例如 a、b 和 c 条目是否都不同?如果不是,将它们映射到整数可能是加快查询速度的好主意。

无论如何,我建议您尝试使用免费的开源数据库 MonetDB ( http://www.monetdb.org/ )(披露:我在构建它的研究小组工作),柱状方法在这里可能会很有效。我最近将它用于具有超过 1000 亿行的类似用例,并且效果很好。

关于具有快速基本查询和 5 亿项计数的数据库存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19295796/

相关文章:

mysql - mySQL 是否适合存储更新时间为 250 毫秒、每次更新有 30 字节信息并服务于 Web 的数据流?

2 个表的 SQL 查询百分比

performance - Spark中如何获取从hdfs读取数据的时间成本

caching - 寻找一个FIFO/LRU文件存储系统

java - Java 中的 2D 平铺游戏优化

c# - 从datagridview中删除数据库

mysql - 如果数据库字段已经存在,将其重命名为给定模式的最佳方法是什么?

windows - 无需任何第三方即可自行扩展的 Azure 应用程序的模式是什么?

java - libgdx 简单的游戏很卡顿

ios - FIRStorageErrorDomain 代码=-13010