eXtremeDB 标准版本嵌入式数据库是 McObject 公司的核心产品:一个非常快速的数据库,追求极致性能。基于内存存储,拥有严格的高性能架构。多种数据布局的特点使应用程序中用到的数据可直接以使用到的格式存储,从而去除了数据类型转换相应的开销。典型的增、删、改、查操作可以在微秒级或更少的时间内完成。引擎可重入,允许多个执行线程,且多线程执行时单个线程仍可保持较高的性能来运行。事务支持ACID属性,从而保证了事务与数据的完整性。
eXtremeDB是一款内存嵌入式数据库系统(IMDS),该数据库用于各种嵌入式系统和其它需要高性能、小尺寸、紧密存储、零内存分配或几种属性兼有的应用领域。eXtremeDB内存嵌入式实时数据库以其高性能、低开销、稳定可靠的极速实时数据管理能力在嵌入式数据管理领域及服务器实时数据管理领域独领风骚。 目录eXtremeDB的目标及设计原则eXtremeDB的特点eXtremeDB的应用与实例eXtremeDB的目标及设计原则
eXtremeDB的主要目标是为适用eXtremeDB的各种应用程序提供高性能。这些应用程序不同于工资单或库存等普通数据库商业应用程序。首先,基于eXtremeDB的应用程序运行在只有少量内存和缺少永久存储设备的廉价处理设备上。其次,即使在速度很慢的处理器上数据访问依然需要保持比较高的速度,简单查询和事务最多不超过几毫秒,与企业级数据库相比,这些设备上的数据存储量比较小,事务所持续的时间通常也非常短。此外,需要存储的数据可能是复杂的,实际上它差不多总是动态变化的。
因此,当设计eXtremeDB内核时我们应遵循以下几项主要原则:
◆最小化支持持久数据所必须的资源——实质上就是将内存资源减到最小。对象都以很小的尺寸保存在数据库中——eXtremeDB引进的额外开销不但非常低,而且这些开销在应用程序中也是可控制的;另外,数据层提供了对对象数据的压缩。
◆保持极小的必要堆空间——在某些配置上eXtremeDB只需要不到1K的堆空间
◆维持极小的代码体积
◆通过紧密的集成持久存储和宿主应用程序语言消除额外的代码层。通常目标应用程序使用大量小规模的数据库操作而非大数据量的操作。这意味着通过指向对象的指针或引用来从对象中获得数据的操作必须非常迅速快捷,否则额外开销(例如发送一个消息的开销)会高得让人无法接受。eXtremeDB的数据存取方法使得对持久对象的引用能够和引用临时数据一样快速。
◆提供对动态数据结构的本地支持,例如变长字符串、链表和树。eXtremeDB通过以一种高效(快速)、安全(事务)、紧凑(内存)的方式来支持动态数据,从而 “扩展”了“C”语言。
eXtremeDB的特点 1. 内存数据库,eXtremeDB将数据以程序直接使用的格式保存在主内存之中,不仅剔除了文件I/O的开销,也剔除了文件系统数据库所需的缓冲和Cache机制。其结果是每个交易一微秒甚至更少的极限速度,相比于类磁盘数据库而言,速度成百上千倍地提高。作为内存数据库,eXtremeDB不仅性能高,而且数据存储的效率也非常高。为了提高性能并方便程序使用,数据在eXtremeDB中不做任何压缩,100M的空间可以保存高达70M以上的有效数据,这是其他数据库所不可想象的。
2. 混合数据库,eXtremeDB不仅可以建立完全运行在主内存的内存数据库,更可以建立磁盘/内存混合介质的数据库。在eXtremeDB,我们把这种建立在磁盘、内存或磁盘+内存的运行模式称为eXtremeDB Fusion融合数据库。eXtremeDB Fusion兼顾数据管理的实时性与安全性要求,是实时数据管理的台阶性进步。
3. 嵌入式数据库,eXtremeDB内核以链接库的形式包含在应用程序之中,其开销只有50KB~130KB。无论在嵌入式系统还是在实时系统之中,eXtremeDB都天然地嵌入在应用程序之中,在最终用户毫不知情的情况下工作。eXtremeDB的这种天然嵌入性对实时数据管理至关重要:各个进程都直接访问eXtremeDB数据库,避免了进程间通信,从而剔除了进程间通信的开销和不确定性。同时, eXtremeDB独特的数据格式方便程序直接使用的,剔除了数据复制及数据翻译的开销,缩短了应用程序的代码执行路径。
4. 由应用定制的API,应用程序对eXtremeDB数据库的操作接口是根据应用数据库设计而自动产生,不仅提升了性能,也剔除了通用接口所必不可少的动态内存分配,从而提高了应用系统的可靠性。定制过程简单方便,由高级语言定制eXtremeDB数据库中的表格、字段、数据类型、事件触发、访问方法等应用特征,通过eXtremeDB预编译器自动产生访问该数据库的C/C++ API接口。
5. 可预测的数据管理
eXtremeDB独特的体系结构,保证了数据管理的可预测性。eXtremeDB不仅更快、更小,而且更确定。在80双核CPU的服务器上,eXtremeDB在1TB内存里保存15B条记录;无论记录数多少,eXtremeDB可以在八十分之一微秒的时间内提取一条记录。2.5 Firebird嵌入服务器版(Embedded Server) 从Interbase开源衍生出的Firebird,充满了勃勃生机。虽然它的体积比前辈Interbase缩小了几十倍,但功能并无阉割。为了体现Firebird短小精悍的特色,开发小组在增加了超级服务器版本之后,又增加了嵌入版本,最新版本为2.0。
eXtremeDB的应用与实例 eXtremeDB内存式实时数据库是专为诸如网路通信设备、自动化产品、控制系统、医疗仪器、航空航天、机顶盒、手机及PDA等各行各业管理实时数据而设计的一种数据管理技术。自问世以来,eXtremeDB实时数据库得到了业界的大力欢迎,在包括波音公司的Apache直升机的Longbow雷达系统、F5网路公司的路由器、中国华东电网及华电集团的电力系统、华北电力大学、电力科学研究院、创建伟业公司的呼叫中心、Genesis Microchip/Philipps/DirectTV的机顶盒、Panasonic和Simens的手机,JVC最新便携式播放器等各个领域得到了广泛的应用。
eXtremeDB实时数据库成功帮助中国监测电网状态
华东成千上万的企业及家庭用户今后将拥有更加可靠的电力供应,因为电网中将有一种新型监测系统对电力系统的运行情况进行监测,而这个系统中的实时数据管理将由McObject公司发布的eXtremeDB内存式实时数据库来完成。这种新型的监测系统就是由电力科学研究院研制的基于PMU的发电厂就地监测系统。
这种监测系统工作在发电厂,接收PMU采集的实时数据,对电网状态、尤其是关系电网稳定性的参数进行实时监视。这些实时数据首先保存在本地化eXtremeDB实时数据库中,然后定时保存进历史数据库,以提供安全可靠的电力传输。这种新型监测系统接收PMU内部数据的实时采集速度高达每秒100条。
“在大型电网中,系统故障蔓延速度非常之快,旧的安全设备根本来不及监测,更勿论阻止。而新型基于PMU的监测系统速度大大地加快了,向操作员提前发出危险警报,让操作员有充分的时间排除故障。这样就大大提高了电网的安全性。”电科院资深工程师许勇先生说道。
在这种新型监测系统中,eXtremeDB运行于Red Hat Linux 9之上。
eXtremeDB 的主要特点:
核心内存数据库系统(IMDS)设计:作为一款内存数据库系统(IMDS),eXtremeDB为您提供了剔除了改写和昂贵的新硬件代价的应用速度。它消除了磁盘和文件I/O,缓存管理和其他资源的延迟。eXtremeDB通过直接对内存数据的访问,避免了数据在基于硬盘的数据管理系统(DBMS)之间的复写和迁移的花销。数据库可以创建在共享内存上,让多线程的并发访问变成可能。
超小尺寸(接近150K):小代码尺寸和极少的开销(数据库系统内存开销小到可以是管理数据大小的15%),意味着需要更少的RAM;eXtremeDB的精简的设计使得CPU的花费更少,从而减少您昂贵的硬件花费,也就是达到更低的生产成本。或者在同样的成本下利用节省出来的CPU速度来提供一个比您的竞争者更好的用户体验,并且利用多余的内存来存储更多的数据。
可选磁盘存储或者混合存储:在核心eXtremeDB内存数据存储之外,麦科捷的eXtremeDB混合版添加了混合的存储方式。特定的记录类型可以利用灵活的缓存来被指定给磁盘存储。基于性能、稳定性、成本和结构等要素来选择您最适合的存储介质。
高可用性:承诺99.999%的正常运行时间,或者更好?eXtremeDB高可用性(HA)版本保证了持续的数据库操作,甚至是在面对硬件或者软件失败的时候。eXtremeDB HA的故障转移,支持同步(2-safe)和异步(1-safe)的复制。在2-safe复制中,时间识别的两段式确认协议会来处理超时的情况。
ACID事务属性:eXtremeDB事务支持ACID(原子性、一致性、隔离性、持续性)原则。这通过保证更新要么完整地完成,要么回滚到事务发生前的状态,来保障数据的完整性。eXtremeDB也令开发人员为事务分级成为可能。
支持64位:eXtremeDB64位版扩展为支持千兆字节大小的数据库,来满足实时数据库在商业、社交网络、对象-缓存和其他高度可扩展的应用上得需要。
在已经出版了的性能测试中,一个eXtremeDB-64数据库扩大到1.17千兆字节和155.4亿行,而在其进一步的扩展上,没有明显的限制。性能也随着数据库大小的增加保持着稳定的状态,展示出接近线性的增长。仅对于一个简单的Select操作而言,eXtremeDB-64就可以利用它自己的应用程序接口(API)每秒执行8778万次查询事务,而利用SQL ODBC的API可达到每秒执行2814万个事务。
远程过程调用(RPCs):eXtremeDB生成一个接口可以使远程进程(例如在另外一个网络节点的进程)来读取或者更新eXtremeDB数据库。
防止数据库被破坏的设计:eXtremeDB自己的API是类型安全的:编译时即可捕获数据类型的错误,来避免数据库的破坏。另外,eXtremeDB运行时加入了很多核实陷阱和一致性检查。在应用程序调试后,最优版本的eXtremeDB运行时就可以被应用,移除陷阱、内部检查、修复有价值的时钟周期。
另外,为内存的数据库在“备份和存储”特性中建立了周期性冗余检查,来当加载一个文件时,自动的执行,从而保证数据库在保存时整个被写入,而不被破坏。
提供C/C++,SQL,Java应用程序接口(API):eXtremeDB为开发人员提供了多种应用程序开发接口(API)。通过利用一个快速的,本身导航的API组成的C/C++函数可以来访问eXtremeDB。这类函数既可以以一种类型安全并简单易用的应用指定的API形式出现,又可以以一个在所有工程里都一致的接口标准化的数据访问(UDA)API形式来使用。eXtremeDB的SQL组件既包含了通用的ODBC API,又包含了一个更加简洁易用的专有API。eXtremeDB的Java本地接口(JNI)为Java提供了最快可能性的DBMS解决方案和在完全利用普通传统的Java对象(POJOs)工作时对eXtremeDB的访问能力。
共享内存数据库 :eXtremeDB嵌入式数据库在传统的内存中操作数据。作为补充,eXtremeDB数据库的共享内存版本适用于多进程环境,如Solaris、QNX或Linux。在这个版本中,eXtremeDB数据库在共享内存中被建立,并映射到每个进程的本地地址空间上,从而允许多个进程及每个进程中的多个线程共享eXtremeDB内存数据库。
eXtremeDB XML扩展:eXtremeDB的模式编译器,mcocomp, 为每个类生成新的接口函数,为每个提供对象提供下述功能: 获取以XML编码的对象;从XML文件中建立数据库对象;将数据库中对象的内容更新为XML文件的内容;为数据库中的每个类生成XML模式