如何存储和查询数十亿的键值对
Posted
技术标签:
【中文标题】如何存储和查询数十亿的键值对【英文标题】:how to store and query billions of key-value pairs 【发布时间】:2014-01-23 19:57:00 【问题描述】:我正在生成这样的键值对:
KEY VALUE
---- ------
user.varname.2014-01-01 10
user.varname.2014-01-02 10
user.varname.2014-01-03 10
我需要手术:
按用户名查询 按变量名查询 按日期查询目前我正在使用 mysql,并且可以很好地拆分字符串以进行查询。
-
查询性能如何?这是存储和查询数十亿行的好方法吗?
也许我应该使用 nosql 或其他数据库?
【问题讨论】:
【参考方案1】:一个(非常)部分答案:
像 redis 这样的纯键值存储对于按日期搜索等操作的性能非常差,因为在这个特定字段上没有索引(当然它不是您指定的字段,但您希望到)。
所以 redis 必须读取所有键来搜索特定日期,这显然效率不高。
根据您的 3 个搜索操作规范,如果您要搜索数十亿条记录,我看不出您如何避免拆分为 3 个字段并对其进行索引。
【讨论】:
这是真的。阅读和拆分所有项目以进行搜索是一个糟糕的主意。谢谢 你真正在寻找什么你在 sql 中没有的?速度 ?可扩展性?至于速度,可以考虑***.com/questions/10692398/…。如果要扩展到更大的数据集,请查看 hbase 等大数据数据库以上是关于如何存储和查询数十亿的键值对的主要内容,如果未能解决你的问题,请参考以下文章
java问题,我想在java中存储键值对,以便使用,但是键值对的键和值都有重复元素,使用hashmap会产生覆盖。