簡介
ESE提供事務型數據更新和恢復。它包含一種崩潰恢復機制,因此能保證系統崩潰下的數據一致性。ESE中的事務高度並發的,因此ESE適合於伺服器應用程式。ESE會智慧型快取數據,從而確保對數據的高性能訪問。此外,ESE很輕便,適用用於輔助應用程式。
ESE運行時(ESENT.DLL)自Windows 2000起預裝在每個Windows版本中。自Windows XP和Windows Server 2003的64位版本開始,ESE運行時擁有原生64位版本。Microsoft Exchange截至Exchange 2003時僅包含32位版本。在Exchange 2007中,它開始搭載64位版本。
資料庫
資料庫既是數據的物理存在,也是它的邏輯分組。ESE資料庫看上去就只是一個Windows上的檔案。在資料庫內部,它是一個2、4、8、16或32KB的頁面的集合(16和32 KB頁面選項僅在Windows 7和Exchange 2010中可用),布置在一個平衡的B樹結構中。這些頁面包含元數據,用以描述資料庫中包含的數據、數據本身、數據索引,以及其他信息。這些信息在資料庫檔案中混合存在,但數據會儘量集中。一個ESE資料庫可能包含最多2個頁面,或16TB的數據(如果使用8KB的頁面)。
ESE資料庫將組織為稱作“實例”的組。大多數應用程式只使用單個實例,但所有應用程式也都可以使用多個實例。實例的重要性在於,它將單個恢復日誌系列與一個或多個資料庫相關聯。目前來說,可以隨時將最多6個用戶資料庫連線到ESE實例。使用ESE的每個單獨進程最多可能有1024個ESE實例。
ESE資料庫是可移植的,它可以從一個正在運行的ESE實例中分離,然後連線到相同或不同的運行實例。在分離時,資料庫可以使用標準的Windows工具複製。當ESE主動使用資料庫時,無法複製資料庫,因為ESE將獨占打開資料庫檔案。資料庫可以物理駐留在Windows上支持直接定址I/O操作的任何設備上。
表
一個表是一系列同質的記錄集合,其中每個記錄具有相同的列。每個表由其表名標識,其範圍是包含該表所分配的空間。資料庫中分配給表的磁碟空間量由使用CreateTable操作創建表時給出的參數決定。表會隨數據的創建而自動增長。
表可以有一個或多個索引。記錄數據必須至少有一個聚集索引。
日誌和崩潰恢復
ESE的日誌和恢復功能支持將在系統崩潰時保證數據的完整性和一致性。日誌記錄會在日誌檔案中冗餘地記錄資料庫的更新操作的過程。日誌檔案的結構對於系統崩潰是非常健壯。恢復是在系統崩潰後使用此日誌將資料庫恢復到一個一致的狀態。
事務操作將在每次提交到事務級別0時記錄並將日誌刷新到磁碟。這使恢復過程能撤銷由事務級別0的事務所做的更新,以及撤消未提交到事務級別0的事務所做的更改。這種恢複方案通常被稱為“前滾/後退”恢複方案。日誌可以保留數據,直到通過下述的備份流程安全複製數據,也可以在不需要在系統崩潰從中恢復的情況下以循環方式重新使用日誌。循環記錄有助最小化日誌所耗用的磁碟空間量,但將影響在介質故障後重新找回數據的可能性。
備份和恢復到不同硬體
當創建ESENT資料庫時,物理磁碟扇區的大小會存儲在資料庫中。該物理扇區大小預期在會話期間保持一致,否則將會報告一個錯誤。當將驅動器映像從一個物理驅動器克隆或恢復到另一個使用不同物理扇區大小的驅動器後,ESENT將報告錯誤。
這是一項已知的問題,並且微軟已為此問題提供了相應補丁。Windows Vista或Windows Server 2008見KB2470478。Windows 7或Windows Server 2008 R2見KB982018。
相較JET Red
雖然兩者具有共同的血統,但JET Red與ESE有著很大區別。
•JET Red是一種檔案共享技術,而ESE旨在嵌入到伺服器應用程式中,並且不已分享檔案。
•JET Red盡最大努力恢復檔案內容,而ESE則採用提前記錄和快照隔離來確保故障恢復。
•JET Red在4.0版本之前僅支持頁面級鎖定,而ESE和JET Red 4.0及之後版本支持記錄級鎖定。
•JET Red支持各種查詢接口,包括ODBC和OLE DB。ESE不附帶查詢引擎,而是依賴於應用程式將自己的查詢寫為CISAM代碼。
•JET Red的最大資料庫檔案大小為2GiB,而ESE的最大資料庫檔案大小為8TiB(4KiB頁面)或16 TiB(8 KiB頁面)。