我有DB用户,每个用户有多个属性。例如:哪个noSQL DB适合快速查询变量多个字段?
{userid : 1, emails : {[email protected], [email protected], [email protected]}, countries : {Italy, France, USA}, food : {pasta}}
每个属性可以包含多个值。
Web应用程序的生命周期中,我想添加更多的属性,例如:汽车,颜色....
所以一般来说,我会1B用户,每一个与3-20性质 - 每个用户都有自己的属性子集,20个可能的属性。
最重要的事情是:
要尽可能快地执行以下查询: 找到我所有用户[email protected]或汽车=奔驰或食物=面食或颜色=黑色或颜色=蓝色或用户ID = 10或用户ID = 20。 在每个查询中,我将查询属性的不同子集。
能够很容易地向DB添加新属性。即在某一天我还想添加'性别'属性,我希望对这个属性的查询将会很快。
每个用户都有属性
该查询将是“属性=值”的唯一子集。我不需要查询,如'property> value'或'property start with value'。我将所有值视为常量键。
在很多情况下,我会添加新用户,但最重要的是快速查询它们。
应该是持久的,可扩展性,故障转移
如果它的事,我的web应用程序将在Java中
我必须处理15K /秒的查询,并在不到10ms内回答每个查询。关于mongodb - 我将不得不在20个属性中的每一个上创建索引。我不知道如此多的索引对数据库大小和整体性能有什么影响 – Dani
在这种情况下,我会考虑使用LDAP数据库。 http://www.openldap.org/pub/hyc/mdm-paper.pdf注意:每台服务器每秒可处理20K到80K个查询,具体取决于具有亚毫秒响应时间的服务器规格。我之前使用过Sun One Directory Server,但任何LDAP服务器都应该运行良好。 –
我会检查出来。 您是否可以考虑适用于此任务的其他noSQL DB? Cassandra,Couchbase,hbase,BigTable? – Dani