如何坚持键值映射以进行快速查找?

时间:2015-01-14 09:31:39

标签: java

我想为ID和指定名称之间的快速查找创建一个hashmap类型的东西。

参赛人数将达数十万。因此,我不想把一切都留在记忆中。无论如何,由于这个过程中的性能很重要,我不想为每个ID进行数据库查询。

那么,我的机会是什么?如何在大型数据集上快速查找?

4 个答案:

答案 0 :(得分:3)

快速搜索发现了这些:

生产就绪:

可能也没有生产准备,但值得一看:

答案 1 :(得分:1)

我心中有几种解决方案!

1)转到lucene - >存储在文件中

2)在数据库中创建view - >存储在数据库中

所以你要为之奋斗!!

答案 2 :(得分:1)

几年前我有类似的要求,并且避免使用数据库,认为它会有很高的查看时间。与您类似,我有大量的值,因此无法在内存数据结构中使用。所以我决定顺序解析文件系统。它有点慢,但我无能为力。

然后我在DB上探索了更多,并将DB用于我的应用程序,只是为了测试。最初它与文件系统相比速度较慢。但在索引表和优化数据库之后。事实证明它至少比文件系统快10-15倍。我无法记住确切的性能结果,但是从大型数据集中读取数据只需要150-200毫秒(文件系统上的数据大小约为700 MB),而文件系统的数据则为3.5秒。

我使用DB2数据库和this guide来进行DB2的性能调优

除了设置数据库之外,您还可以通过网络将其重复用于多个应用程序。

答案 3 :(得分:0)

如果你看快速解决方案。回答in-memory database

Redis,Memcached,Hazelcast,VoltDB等。