关于数据存储的意见

时间:2011-03-04 13:23:58

标签: java tomcat data-structures storage

我有一个即将推出的项目,它的核心是存储两个整数之间的映射。 (A列中的1234映射到B列中的4567)。大约有1000个映射。每次用户点击网站上的某个网址时,都会对映射进行查找。

似乎将它插入我们的关系数据库是过度的。在每次击中时选择它的开销似乎很高。另一方面,将它存储为XML文件并在每次击中时从磁盘加载该平面文件也似乎不是最佳的。

所以我的问题是:保持这种映射的理想数据结构和方法是什么?

系统架构是tomcat + apache + mysql。代码将在tomcat中运行。

编辑: 映射是静态的,我不需要改变它们。看起来像hashmap中的XML文件是要走的路。

3 个答案:

答案 0 :(得分:4)

我会使用属性文件或XML文件,在启动时将其加载到内存中(作为HashMap<Integer, Integer>),然后从hashmap中提供。

如果您需要在执行时更改映射,您可以立即将其写回或者可能只是逐步写入更改(并更新内存中的映射),并使用一个进程来统一原始文件和启动时的更改。如果你需要扩展到多个服务器,这当然不能很好地工作 - 那时你需要弄清楚你需要什么样的一致性等等。数据库可能是最简单的方法继续,但这取决于实际要求。

答案 1 :(得分:2)

我同意关系数据库似乎有点矫枉过正。您可能想要查看NoSQL数据库。 MongoDB是我个人的最爱,但那里有很多。在NoSQL databases上搜索。

NoSQL数据库允许您将此映射存储为简单文档,并且可以极快地搜索和更新数据。显然,它是你堆栈中的另一种技术,所以你需要考虑的事情。

答案 2 :(得分:0)

您可以尝试使用内容数据库,例如H2HSQLDB。内存占用可能比内存中的hashmap和文件更大,但从好的方面来说,您可以使用SQL进行查询和更新,而不必担心并发访问。