论文部分内容阅读
随着大规模Web应用和极限事务处理需求的不断增长,传统的关系型数据库越来越不能满足人们的需求。因为兼具内存数据库和NoSQL数据库的优点,内存数据网格(In-memory Data Grid)受到了越来越广泛的关注和支持。一方面,内存数据网格在内存中存取数据,具有极高的性能。另一方面,内存数据网格遵循key/value数据模型,按照一致性哈希的方法将数据分配到服务器集群中,具有极高的拓展性。内存容量的不断扩大和价格的不断下降使得内存数据网格的广泛应用成为可能。然而,有些问题仍在阻碍内存数据网格的进一步发展,比如事务处理、数据一致性、数据备份与持久化等。缺乏对高级结构化数据访问语言的支持也是其中极为重要的一个方面。
目前,内存数据网格产品(如Oracle Cohereance,IBM WXS和Hazelcast)提供的数据访问接口是非常简单的,不能满足复杂的业务需求。遗留系统从关系型数据库迁移到内存数据网格的时候,一条简单的SQL语句可能需要经过复杂的改写才能完成同样的功能,这大大增加了熟悉SQL的程序员的负担和系统迁移的代价。另外,众多的内存数据网格产品有各自的不同的数据访问接口,这些不统一的数据访问接口减弱了程序的可移植性,加重了开发人员的学习负担。
为了解决这一问题,本文设计和实现了支持SQL的内存数据网格数据访问引擎。引擎提供了自动数据加载、SQL语句解析和执行、数据持久化等功能,支持了包含Join操作在内的常用的SQL接口。在系统启动的时候,自动数据加载模块可以将后台关系型数据库中的数据自动加载到内存数据网格。当内存数据网格中数据发生更新的时候,数据持久化模块可以以同步或者异步的方式将数据持久化到后台关系型数据库。通过内存数据网格数据访问引擎,可以实现遗留系统从关系型数据库到内存数据网格的无缝迁移,同时能够带来巨大的性能提升。
内存数据网格和本文设计与实现的内存数据网格数据访问引擎可以构成一个内存数据网格层。传统的Web应用系统架构中,可以在应用服务器和后台关系型数据之间无缝的加入内存数据网格层。我们用TPC-W基准对这一应用模式进行性能测试。实验表明,在同样的硬件配置下,加入内存数据网格层与不加入内存数据网格层相比,可以在提高42%的吞吐率的同时减少91%的响应延时。