【问题标题】:Which noSQL DB is suitable for fast querying of variable multiple fields?哪个 noSQL DB 适合快速查询可变多字段?
【发布时间】:2012-06-29 21:46:51
【问题描述】:

我有 1B 个用户的数据库,每个用户都有多个属性。例如:

{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 OR car=Mercedes OR food=pasta OR color=black OR color=blue OR userid=10 OR userid=20 找到我的所有用户。 在每个查询中,我都会查询不同的属性子集。

  2. 能够很容易地向数据库添加新属性。 IE。总有一天,我还想添加“性别”属性,并且我希望对这个属性的查询会很快。

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

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

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

  6. 应该是持久的、可扩展的、具有故障转移功能的

  7. 如果有关系,我的 Web 应用程序将用 Java 编写

【问题讨论】:

    标签: java performance indexing nosql


    【解决方案1】:

    你说的快是什么意思?

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

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

    【讨论】:

    • 我必须处理 15K/秒的查询,并在 10 毫秒内回答每个查询。关于 mongodb - 我将不得不为 20 个属性中的每一个创建索引。我不知道这么多索引对数据库大小和整体性能有什么影响
    • 在这种情况下,我会考虑使用 LDAP 数据库。 openldap.org/pub/hyc/mdm-paper.pdf 注意:每台服务器每秒可以处理 20K 到 80K 之间的查询,具体取决于服务器的规格,响应时间为亚毫秒级。我以前使用过 Sun One Directory Server,但任何 LDAP 服务器都应该性能良好。
    • 我会检查的。您能考虑一下适合此任务的其他 noSQL DB 吗? Cassandra、Couchbase、hbase、BigTable?
    • LDAP 数据库专门用于存储和查询基于用户和组的信息。至于其他 noSQL 数据库...nosql-database.org你可以选择。
    • 我看到最后一个打开的 ldap 版本是从 2007 年 10 月开始的......我将不得不寻找不同的 noSQL 解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 2020-07-26
    • 2012-07-21
    • 1970-01-01
    • 2011-05-09
    • 2021-12-30
    相关资源
    最近更新 更多