1.2.2 内存数据网格

内存数据网格是另一种主流的内存数据处理技术,与内存数据库一样,数据也是加载到内存中处理,与内存数据库的SMP架构不同,内存数据网格通常采用MPP架构,SMP和MPP架构如图1-1所示。同时内存数据网格的目标是实现更高的可用性和可扩展性,因此非常适合于大数据量高性能并行处理。

图1-1 SMP和MPP架构

内存数据网格通常采用分布式对象存储方式实现,应用以键值对的方式存储和访问对象。传统的数据库通常只能使用字符串作为键或值,而内存数据网格的键值对取值可以使用任意的对象,这带来了更大的灵活性,同时由于无须额外的数据组织和分解,应用在业务逻辑的处理上更加简捷。可以直接操作对象也是内存数据网格和内存数据库的主要区别之一。与内存数据库可以独立运行不同,内存数据网格的后端通常需要传统磁盘数据库的支撑,以实现对象关系映射和数据的持久化存储。

内存数据网格的另一个特点是极佳的横向可扩展性,这得益于其底层的分布式架构。通过添加数据节点,内存数据网格可以实现近线性的处理性能和容量扩展,数据通常只在数据节点本地处理,节点之间几乎没有通信,只有在数据复制或增加节点引发数据重新分布时,节点间才有大量的数据交互。

内存数据网格通过锁机制可以实现事务处理和对数据的并发访问,尽管一些数据网格产品也实现了类SQL和简单的SQL处理,但总地来说,对于SQL的支持通常不如传统数据库完备和强大,正因为如此,从应用开发的角度看,如果是从传统数据库移植到内存数据库,应用的改动比较少,而迁移到内存数据网格时,通常需要更多的工作量。

典型的内存数据网格产品包括Oracle Coherence、Pivotal GemFire、Apache Geode、Hazelcast、GridGain和Apache Ignite。