
eXtremeDB的主要目标是为适用eXtremeDB的各种应用程序提供高性能。这些应用程序不同于工资单或库存等普通数据库商业应用程序。首先,基于eXtremeDB的应用程序运行在只有少量内存和缺少永久存储设备的廉价处理设备上。其次,即使在速度很慢的处理器上数据访问依然需要保持比较高的速度,简单查询和事务最多不超过几毫秒,与企业级数据库相比,这些设备上的数据存储量比较小,事务所持续的时间通常也非常短。此外,需要存储的数据可能是复杂的,实际上它差不多总是动态变化的。因此,当设计eXtremeDB内核时我们应遵循以下几项主要原则:
◆最小化支持持久数据所必须的资源——实质上就是将内存资源减到最小。对象都以很小的尺寸保存在数据库中——eXtremeDB引进的额外开销不但非常低,而且这些开销在应用程序中也是可控制的;另外,数据层提供了对对象数据的压缩。
◆保持极小的必要堆空间——在某些配置上eXtremeDB只需要不到1K的堆空间
◆维持极小的代码体积
◆通过紧密的集成持久存储和宿主应用程序语言消除额外的代码层。通常目标应用程序使用大量小规模的数据库操作而非大数据量的操作。这意味着通过指向对象的指针或引用来从对象中获得数据的操作必须非常迅速快捷,否则额外开销(例如发送一个消息的开销)会高得让人无法接受。eXtremeDB的数据存取方法使得对持久对象的引用能够和引用临时数据一样快速。
◆提供对动态数据结构的本地支持,例如变长字符串、链表和树。eXtremeDB通过以一种高效(快速)、安全(事务)、紧凑(内存)的方式来支持动态数据,从而 “扩展”了“C”语言。
1. 内存数据库,eXtremeDB将数据以程序直接使用的格式保存在主内存之中,不仅剔除了文件I/O的开销,也剔除了文件系统数据库所需的缓冲和Cache机制。其结果是每个交易一微秒甚至更少的极限速度,相比于类磁盘数据库而言,速度成百上千倍地提高。作为内存数据库,eXtremeDB不仅性能高,而且数据存储的效率也非常高。为了提高性能并方便程序使用,数据在eXtremeDB中不做任何压缩,100M的空间可以保存高达70M以上的有效数据,这是其他数据库所不可想象的。