【IT168 案例】内存数据库,顾名思义就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。同时,内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多,一般都在10倍以上。内存数据库的最大特点是其“主拷贝”或“工作版本”常驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。
为什么需要内存数据库?
传统的数据库系统是关系型数据库,开发这种数据库的目的,是处理永久、稳定的数据。关系数据库强调维护数据的完整性、一致性,但很难顾及有关数据及其处理的定时限制,不能满足工业生产管理实时应用的需要,因为实时事务要求系统能较准确地预报事务的运行时间。对磁盘数据库而言,由于磁盘存取、内外存的数据传递、缓冲区管理、排队等待及锁的延迟等使得事务实际平均执行时间与估算的最坏情况执行时间相差很大,如果将整个数据库或其主要的“工作”部分放入内存,使每个事务在执行过程中没有I/O,则为系统较准确估算和安排事务的运行时间,使之具有较好的动态可预报性提供了有力的支持,同时也为实现事务的定时限制打下了基础。这就是内存数据库出现的主要原因。
内存数据库主要解决解决传统的性能问题。传统的磁盘数据库满足不了性能要求,OLAP数据处理不够快,如报表生成批处理、报表即席查询、ETL、CEP;OLTP业务处理不够快,如物联网、大数据量应用、网上业务、CRM。传统的磁盘数据库受到IO瓶颈的限制性能无法提升,在高性能需求的系统中磁盘数据库无法满足性能要求,数据访问成为系统的瓶颈;如果需要在传统数据库上提升性能,则需要购买更强劲的硬件设备,同时不可避免的出现更多的维护、优化工作。
什么时候使用内存数据库?
当磁盘数据库无法满足性能需求时,高性能的内存数据库成为了代替磁盘数据库的选择。当数据量访问、更新请求快速增长,而硬件保障设施又无法跟上的时候需要内存数据库。
毫秒级实时业务处理技术挑战
内存数据库的技术挑战主要有以下几个方面:
快速的响应时间。实际环境中,有各种不用的应用和网络环境,而存在于不同应用不用网络之间的用户期望得到立刻的响应时间,而数据访问是一个主要的瓶颈。所以如何确保快速的响应时间。
2、如何确定正确的数据是可靠的,也就是确保数据的安全问题。机器宕机了如何确保数据的不丢失等问题;服务质量协议要求提供99.999%的不间断服务,但是传统的软件和硬件解决方案太昂贵了,需要有高可用方案保证业务的连续性。
如何灵活地适应各种变化的需求。动态的数据使用模式,正在改变的架构需要一个灵活的数据管理解决方案。
4、如何能够让开发人员尽快上手?开发人员能快速入手,不用更改sql语句就能使用,需要支持标准的SQl规范依据ODBC、JDBC接口。
方案逻辑图
技术路线
按照计算与存储的关系,我们可以将计算架构分为四代:
第一代,基于磁盘的单一系统:计算过程中需要从磁盘读取数据。小型机、大型机是其中的佼佼者,将单一系统的性能做到极致。
第二代,基于磁盘的分布式集群系统:计算过程中需要从磁盘读取数据,但通过分布系统将数据分散到不同的服务器磁盘上,提高整个系统的处理能力。目前很多大型互联网和电子商务公司采用基于x86服务器的分布式集群系统,依靠海量的x86服务器部署解决高流量并发的问题。
第三代,基于内存的单一系统:将整个数据库放在内存中,计算过程不需要从磁盘读取数据。整个系统的性能取决于单一系统的性能。传统的内存数据库就是这样的系统,对于企业级的应用可以很好地解决访问速度的问题,但面对海量数据或是海量并发访问的扩展性问题就无能为力。
第四代,基于内存的分布式集群系统:并 行计算是其关键技术之一,因而可以通过增加服务器部署规模,在内存计算的基础上,线性扩展性能。
服务器采用曙光x86 架构的高性能服务器,可有效减少瓶颈,提高吞吐量和性能,海量内部存储空间为企业级核心应用提供强大的的性能保障,同时增加多项 RAS特性,大幅提高可靠性。该服务器能稳定运行 Windows、Redhat Linux、Suse Linux、Vmware 等多种主流操作系统,是能适应核心级应用的新一代服务器。它具有处理速度快、可用性强、易管理、可靠性高等特点。
内存计算模块采用曙光I980-G10认证的GemFire内存数据库系统,该系统提供快速、安全、可靠和可扩展的数据访问以支持现代企业应用程序和云应用程序,支持交付数据丰富并且无论所服务的终端用户数量如何都能连续可用的高性能应用程序。主要面向现代应用程序的快如闪电、高度可用和可扩展的数据访问(运行应用程序的速度可加快 4-40 倍),可并行执行数据以实现极高的吞吐量,针对低延迟而设计,可跨节点和群集进行数据复制以实现高可用性,可跨区域对数据分区以实现横向扩展,可靠的事件通知(当数据更改、应用程序自动更新时),持续查询(在可预测的低延迟下更新结果),“无共享”磁盘持久性可确保一个节点上的磁盘故障不会导致数据丢失,可在基于 Java、C++ 和 C# 的应用程序之间共享数据,可在进行 WAN 扩展的同时保持性能、可靠性和数据一致性。
利用内存数据库在内存中管理数据,避免所花费的 CPU 周期、网络流量、数据库访问延迟等造成的高数据库事务成本,可以提高开发人员工作效率;利用数据库式的持久性实现高性能和可靠性;采用分布式集群架构,跨整个系统的动态数据分区可均衡负载以实现高可扩展性,协同定位的事务可以将瘦客户端性能提高2-3倍,广域网 (WAN) 支持可跨远程站点进行扩展:通过将数据通信并行化和选择同步或异步确认来实现高性能和低延迟。这些功能可以很好的解决内存数据库面临的挑战,从而满足实际应用的需求。
方案收益
曙光x86 架构的高性能服务器,可有效减少瓶颈,提高吞吐量和性能,大幅提高可靠性,同时能稳定运行 Windows、Redhat Linux、Suse Linux、Vmware 等多种主流操作系统,是能适应核心级应用的新一代服务器。它具有处理速度快、可用性强、易管理、可靠性高等特点。
利用内存计算技术将降低总体拥有成本,利用内存数据管理概念,所需分析功能可直接融入企业的运营系统之中,企业系统将变得更简便、更易于维护,从而减少对硬件维护和 IT 资源的需求。内存数据管理在运营系统中直接将大容量事务处理能力和分析能力整合。计划、预测、定价优化以及其他以前需要在分离的分析系统上执行的流程,均会得到显著改进,并会得到全新应用程序的支持。内存企业系统可为决策者提供查看业务状况的全新方式。他们可以快捷、方便地访问所需信息,也可以对运营数据进行交互式的模拟、假设分析和计划操作。同时,可以即时获取相关信息,降低对IT资源的依赖。此外,组织内部和跨组织间的协作也得以简化和增强。这样可以形成一种更加动态化的管理风格。一旦问题出现,就立即加以处理。
总之,该方案能够降低总体拥有成本,易于部署和管理,满足毫秒级实时业务处理的需求。