哪个noSQL DB适合快速查询可变多个字段?

时间:2012-06-28 11:23:21

标签: java performance indexing nosql

我拥有1B用户的DB,每个用户都有多个属性。例如:

{userid : 1, emails : {xx@xx.com, yy@yy.com, zz@zz.com}, countries : {Italy, France, USA}, food : {pasta}}

每个属性都可以包含多个值。

在网络应用的生命周期中,我想添加更多属性,例如:汽车,颜色....

一般来说,我将拥有1B用户,每个用户拥有3-20个属性 - 每个用户都有自己的属性子集,在20个可能的属性中。

最重要的是:

  1. 要尽快执行以下查询: 找到我所有用户的电子邮件地址为email=xx@xx.com或汽车=梅赛德斯或食品=面食或颜色=黑色或颜色=蓝色或用户名= 10或用户名= 20。 在每个查询中,我将查询不同的属性子集。

  2. 能够非常轻松地向DB添加新属性。即在某一天,我还想添加“性别”属性,我希望这个属性的查询速度很快。

  3. 每个用户只有属性的子集

  4. 查询将为'property = value'。我不需要诸如'property> value'或'property start with value'之类的查询。我将所有值视为常量键。

  5. 在很多情况下,我会添加新用户,但最重要的是快速查询。

  6. 应具有持久性,可扩展性,并具有故障转移功能

  7. 如果有问题,我的网络应用程序将用Java编写

1 个答案:

答案 0 :(得分:1)

快你是什么意思?

大多数数据库都会尽可能快地执行您想要的操作。除非你有特定的延迟要求,否则我会选择一个流行的nosql数据库,如mongodb。

为了获得更高的性能,您可以使用专为此类查询设计的LDAP数据库。如果您拥有每秒100K +查询和100K +用户的订单,它们特别有用。