白皮书 & 分析报告

'20X倍速'的SQL. Caché 是如何做到的?

那些从关系型数据库转向Caché的客户报告说:在相同的硬件条件下,不对应用程序做任何改变, 他们的平均性能就能提高了20倍。 为什么 Caché能让应用程序跑的如此之快呢?

A) 多维数据引擎

Caché以多维数组的形式存储数据,取代了传统的两维表的形式。 存储在多维数组中的数据常常被程序员所选的许多参数交叉应用。 在多维数据库中不需要像传统数据库那样进行复杂而耗时的表联接就可以访问或者更新数据。 在数据库上的处理随之降低了,所以应用程序跑得更快。

通过使用稀疏数组方案,InterSystems使得多维数据引擎更加有效。 Caché数据库中空值单元不占磁盘空间。 查找数据或者加载数据到本地内存的时间大大减少,因为没有“空”数据单元。

B) 事务型位图索引

在一个位图索引中,一个类的属性(对表而言是列)由一组位描述:对每个可能的值都有一串位值 来代表类中的各个对象(对表而言是行)。 “1”表示这个对象含有这个属性值,“0”表示没有。位图索引的优势是复杂的查询可以通过索引Boolean运算(AND,OR)来完成——创建一个临时索引,判断符合要查询条件的实例(或者行),这样就不需要搜索整个数据库。

尽管众所周知位图索引能够显著提供复杂查询的查询响应,但他们创建他们却比较慢, 这样就使得他们除了在数据仓库应用程序中应用之外,在其他应用程序中都因为太麻烦而不用。 然而,Caché新的位图索引很敏捷甚至可以在快速变化的事务数据上使用它。

C) 企业缓存协议

InterSystems公司的企业缓存协议(ECP:Enterprise Cache Protocol)可以提高分布系统的性能,优化当今最常使用的瘦客户端构架。

但信息在整个网络上请求时,答复包不仅包括所需的数据,而且包括该数据存储所在地的这个数据块。 自然数据的关系本质上是对象的, Caché多维数据模型使得这些“额外”数据在某个方面是和原始的请求相关的。

这些“额外”的数据缓存在应用服务器上,可以满足来自客户端, 实际上是来自联接在应用服务器上的任何客户端的后续请求。 ECP能够自动维护数据库块,把数据变化传回数据服务器等。

从ECP获益的高性能和高延展性是动态的。客户端享受快速的响应, 因为他们常常使用缓存在本地的数据。 网络通信量大大降低,所以这样的网络就可以支持更多的应用服务器和客户端。