MongoDB存储大关键字表查询性能

时间:2017-11-24 04:54:23

标签: java mongodb indexing mongodb-query mongodb-indexes

我需要存储一个包含大量关键字对象的集合示例:

{ key: "tokyo", someMeta: "meta.." }

db.keyword.createIndex({ key: 1 }, { unique: 1 })

我会将它用作查找词典,因此会经常调用它。

据我所知,这个查找需要O(log n)复杂度,所以从HashSet O(1)查找起来并不快。

我是否应该使用此索引查询来执行查找,还是应该从集合中查询所有对象,将其放入HashSet中,然后从该哈希集中查找?

假设我在该集合中有超过一百万个对象..

1 个答案:

答案 0 :(得分:0)

我在大约一年前对相同的任务进行了基准测试。瓶颈不是B-tree(因为一些DBMS允许创建HASH索引),而是jdbc-driver,网络堆栈等等。

Java的原生Hashmap比Oracle / MySQL(即使是内存表),Postgres,Mongo快300-500 ++倍 - 都位于同一台服务器上。

与内存中的Mysql相比,Hashmap还需要两倍 LESS 内存。

对于有3百万条记录的地图,Hashmap大约有1GB的RAM。

另外,令人惊讶的是,Mongo并不是最快的。我预计Mongo将在DBMS中领先

RAM消费的赢家是PostgreSQL和MySQL,共有350MB,Mongo 650MB。