如何存储和查询数十亿个键值对

时间:2014-01-23 19:57:01

标签: mysql database redis bigdata

我正在生成这样的键值对:

KEY                       VALUE
----                      ------
user.varname.2014-01-01   10
user.varname.2014-01-02   10
user.varname.2014-01-03   10  

我需要操作:

  • 按用户名
  • 查询
  • 按varname查询
  • 按日期查询

目前我正在使用mysql并且正在使用精细分割字符串进行查询。

  1. 查询性能怎么样?这是存储和查询数十亿行的好方法吗?
  2. 我应该使用nosql还是其他数据库?

1 个答案:

答案 0 :(得分:3)

(非常)部分答案:

像redis这样的纯键值存储对于按日期搜索等操作的性能非常差,因为在这个特定字段上没有索引(这不是你指定的字段,但是你喜欢到)。

因此redis必须读取所有键才能搜索特定日期,这显然效率不高。

使用您的3个搜索操作规范,如果您想搜索数十亿条记录,我看不出您如何避免拆分为3个字段并将其编入索引。