Java 数据存储之我见

Java 数据存储之我见,java,tomcat,data-structures,storage,Java,Tomcat,Data Structures,Storage,我有一个即将到来的项目,它的核心将是存储两个整数之间的映射。(A列中的1234映射到B列中的4567)。大约有1000个映射。每次用户点击站点上的某个url时,都会对映射进行查找 将它插入到关系数据库中似乎有些过分。在每次点击时选择它的开销似乎很高。另一方面,将其存储为一个XML文件,并在每次点击时从磁盘加载该平面文件,似乎也不太理想 所以我的问题是:什么是理想的数据结构和方法来保持这种映射 系统架构为tomcat+apache+mysql。代码将在tomcat中运行 编辑: 映射是静态的,我不

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

将它插入到关系数据库中似乎有些过分。在每次点击时选择它的开销似乎很高。另一方面,将其存储为一个XML文件,并在每次点击时从磁盘加载该平面文件,似乎也不太理想

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

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

编辑:
映射是静态的,我不需要更改它们。看起来hashmap中的XML文件就是一种方法

我会使用属性文件或XML文件,在启动时将其加载到内存中(作为
HashMap
),然后从HashMap开始服务


如果您需要在执行时更改映射,您可以立即将其写回,或者可能只是以增量方式写入更改(并更新内存中的映射),并在启动时统一原始文件和更改。当然,如果您需要扩展到多个服务器,那么这种方法就不能很好地工作。此时,您需要确定您需要什么样的一致性等。数据库可能是最简单的处理方法,但它取决于实际需求。

我会使用属性文件或XML文件,将其加载到内存中(作为一个
HashMap
)启动时,然后从HashMap开始服务


如果您需要在执行时更改映射,您可以立即将其写回,或者可能只是增量地写入更改(并更新内存中的映射),在启动时统一原始文件和更改的过程。如果需要扩展到多个服务器,这当然不太管用-在这一点上,您需要确定需要什么样的一致性等。数据库可能是最简单的处理方式,但它取决于实际需求。

我同意国家数据库似乎有点过头了。你可能想看看NoSQL数据库。这是我个人最喜欢的,但有很多。在
NoSQL数据库上搜索一下


< P>我同意一个关系数据库看起来有点过火。你可能想看一个NoSQL数据库。是我的朋友。我很喜欢,但是还有很多。在
NoSQL数据库上搜索一下


一个NoSQL数据库将允许您将此映射存储为一个简单的文档,具有非常快的搜索和更新数据的能力。显然,这是您的堆栈中的另一个技术,因此这是您需要考虑的事情。

< P>您可以尝试使用内存中的OR数据库。内存hashmap和文件,但从好处看,您可以使用SQL进行查询和更新,不需要担心并发访问。

您可以尝试使用内存中的数据库,如或。内存占用可能比内存中的hashmap和文件大,但从好处看,您可以使用SQL进行查询和更新,而不需要使用SQL担心并发访问。

我从未使用过您的系统体系结构,但如果我尝试在.NET中执行相同的操作,我可能会在应用程序启动时加载一个XML文件并保存在内存中(可能在哈希表中)。当然,这种方法假设请求之间的映射不会发生变化,但如果它们发生变化,使用关系数据库也不会过分。我从未使用过您的系统体系结构,但如果我尝试在.NET中执行相同的操作,我可能会在应用程序启动时加载一个XML文件并将其保存在内存中(可能是在哈希表中)。当然,这种方法假定映射不会在请求之间更改,但如果它们更改,则使用关系数据库并不是过分的。为其使用NoSQL更是过分的。:-)根据提供的信息,我不认为您可以评论它是否是过度杀伤力。如果您要搜索整数,并行更新它们,添加和删除新映射,那么很可能不是。使用NoSQL更是过度杀伤力。:-)根据所提供的信息,我认为你不能评论这是否过火。如果您要搜索整数,并行更新它们,添加和删除新映射,那么很可能不会。