分类:
2008-09-09 17:01:08
数据能够存在于Exchange 上的三个地方:内存、日志文件和数据库。但是我们对Exchange 和ESE通过这三个地方移动数据的底层步骤有一些混淆。
该文章的目的是提供一个容易理解的过程解释和将来灾难恢复的一个快速参考指南。然而,它也解释了.edb和.stm数据库文件的细节信息,更准确地说,如何以及为什么在这两者之间做数据移动。
什么是ESE?
ESE是一个DLL,Exchange 过程用它在Exchange 数据库内存储记录和创建索引。它是Microsoft Exchange 信息存储服务和实际数据库之间的中间技术。
ESE允许应用程序存储记录和创建索引,以不同的方式来访问这些记录。尽管ESE不直接接受结构化查询语言(SQL)请求,它处理从客户端传递给它的事务,在这种情况下,Exchange 是代表实际数据操作的组件。因为该引擎是多线程和基于JET技术,对于快速数据存储和检索它是最优化的。
什么是事务?
事务是一系列必须一起完成的操作。如果这些操作中的某个失败的话,整个事务是无效的。和大多数数据库事务类似,最后一个操作后面跟着COMMIT 声明,说明该事务是完整的。因此事务中一个或多个操作失败,COMMIT 声明将从不运行,数据库将不会收到该事务。
事务的一个例子是将邮件从一个文件夹移动到另一个文件夹。这样的操作也许对终端用户来说很容易,但实际上有一系列的事务组成了从Microsoft Outlook 看起来简单的动作。不管什么时候像这样简单的事情发生在Exchange 环境中,ESE一般要执行多个事务来完成该请求。
事务是如何发起的?
事务是从客户端请求发起的。客户端请求不来自终端用户,如Outlook 客户端。它们直接来自Exchange。因此在这种情况下,Exchange 或具体的Microsoft Exchange 信息存储服务是客户端。
例如,当在Outlook 中执行一个操作,一个远程过程调用(RPC)对Exchange 生成,然后组成事务并传递给ESE来处理。只有当它能保证数据是持续或持久的,并受到保护不会失败,紧接着一系列子组件确保Exchange提交了一个事务。这些相同的组件确保这些事务如下:
●Atomic 所有的操作都发生或它们都没有发生发生
●Consistent 数据库从一个正确的状态转换到另一个状态
●Isolated 更改直到它们被提交后才可见
●Durable 提交的事务保护在数据库中,即使系统出现故障。
为了准确理解ESE是如何完成这些事务,在它们从Microsoft Exchange 信息存储传递给ESE来处理后,您需要研究这些事务发生怎样的变化。
[1]