论文部分内容阅读
数据库技术作为以计算机为中心的信息系统与应用系统的核心技术和重要基础,在当今以信息技术为代表的第三次工业革命、大数据统治世界的基础下,成功的解决了海量数据信息的管理。相应地,数据库作为当前计算机软件开发中必不可少的一环,即各类应用软件根据用户需求需要与数据库进行交互,从而获取用户所需数据,各类计算机应用软件以何种方式与数据库交互成为了一个新的挑战。因为面向对象开发技术和底层关系型数据库对数据的描述方式之间的不同,业界称之为对象和关系模型之间的“阻抗不匹配”问题,并且为了解决这种不匹配的现象,对象关系映射技术(Object Relational/Mapping,ORM)由此产生。而随着ORM技术的规范,ORM框架发展的也越来越成熟成熟。ORM框架提供了基于OID和sql条件查询的两类检索方式,通常来说,缓存的应用对于软件系统性能的优化是至关重要的,ORM框架也为两者配置了相应的缓存机制以提升系统性能。本课题研究是基于Hibernate ORM框架的Query Cache机制本身的弊端进行的系统性能优化,并根据实际的业务需求进行相应的实验,并封装AQC数据持久化框架供开发者使用。本篇论文中,我们提出了“reference column(s)”的概念,其来源于“reference data”概念。“reference column(s)”是建立在数据库表某一 column(或某些columns)级别上的概念,指不被修改或者很少修改的非主键的唯一索引。在实际的业务中,存在很多基于“referencecolumn(s)”进行检索的业务,如人员管理系统中的基于人员编号进行的检索需求。Hibernate ORM框架的Query接口对上述业务提供了完美的支持。但是Hibernate ORM框架的Query Cache机制却存在着弊端,即用户对“referencecolumn(s)”进行条件查询时,Hibernate ORM框架将检索的数据存储在Query Cache中,但是当更新Query Cache中的任意一个数据后,Cache中与被更新数据属于同一个数据库表的数据将会失效。故,对其余被缓存的数据进行查询时,Hibernate ORM框架只能从数据库重新获取数据,尽管Cache中的数据并未发生更新。由于ORM框架Query Cache机制对基于“referencecolumn(s)”的条件查询的不足之处,本论文通过分析研究Query Cache的内部机制,提出了在数据库端构建辅助表的方案。通过将从原始表格中提取出来的“reference column(s)”进行某种计算得到唯一的值作为主键进而创建辅助表。这种方案将“reference column(s)”条件查询转换成了两次OID的查询,从而避免了 Query Cache对于“reference column(s)”条件查询的弊端。本文使用电子商务平台的商品数据集对辅助表的检索方式进行了多方面的相关性实验,并将实验结果使用多种方式进行展示。实验最终得出的实验结果证明了该方案的可行性,其可以有效的提升软件系统的性能。本文中我们基于业界当前主流的ORM框架构建了一个非侵入式的Java持久化框架AQC。该框架对ORM框架的数据持久化接口进行了相应的封装,并完成了基于辅助表的查询方案策略的实现。开发人员仅仅需要配置某些基础信息,而无需关注Java事务,及具体的数据访问过程,便可以透明的方式完成数据的持久化。