我们知道,Exchange Server的数据库由edb文件、stm文件和众多的log文件组成。在这些文件内部,微软使用了名为“B+树”的内部数据结构,ESE引擎的任务之一,就是当Information Store服务请求访问数据库的时候,把这些请求转化成对内部数据结构的读写访问。B+树的特点是能够对存储在磁盘上的数据提供快速的访问能力。微软选用 B+树作为ESE后台结构的一个原因,就是尽可能提高访问数据时的I/O性能。这些B+树的结构对于Exchange Server Store服务来说是透明的,Store只需要把请求发给ESE即可,ESE会对这些数据结构进行操作。
另外,作为一个数据库系统,ESE有责任提供事务(Transaction)级别操作的支持,并维护整个数据库的完整性和一致性。对于现代数据库系统,当我们提到事务时,一般用ACID这样的缩写来描述事务的特点:
我们会在后面的篇幅中详细的讨论Exchange Server和ESE是怎样实现上述的要求的。
对于Information Store Service来说,ESE封装了对数据库操作的所有细节,IS只要根据ESE提供的接口进行调用既可。在Exchange Server 2000中,IS服务对应的进程是store.exe,每一个Storage Group会在store.exe进程中产生一个ESE引擎的实例。
Exchange Server 2000/2003 存储系统的新特点
在微软发布Exchange Server 2000时,Exchange Server的存储系统得到了很大的更新和改进。
从ESE引擎的角度来看,ESE的版本由5.5中的ESE97升级为ESE98,并且在如下方面得到了改进:
1.I/O性能得到进一步的优化和提高
2.对日志文件增加了计算校验和的操作,进一步降低了数据库出错的可能性
3.提高了ESEUtil等维护工具的速度
相比幕后的ESE引擎,Information Store方面的更新更加引人注意,例如:
1.在每台Server上提供多个Storage Group和Store的支持,这是区别于5.5的最大特征之一
2.数据库中stm流文件格式的引入,提高了操作Internet邮件的性能
3.Web Storage System的引入,用户可以使用多种协议访问数据库 EDB文件和STM文件的关系
在Exchange Server 5.5中,数据库只有扩展名为edb的文件。在Exchange Server 5.5发布的时候,微软的重点还是企业内部的邮件传输系统,当时主推的协议是MAPI协议,这是微软的私有邮件协议,edb格式的数据库为此协议作了专门的优化。因此,Exchange Server 5.5为了支持Internet标准的SMTP邮件格式,必须在每次处理Internet邮件时将其转化为edb可以识别的格式,这样做带来的巨大的性能损失。