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