版權歸原作者所有,如有侵權,請聯系我們

[科普中國]-可擴展存儲引擎

科學百科
原創(chuàng)
科學百科為用戶提供權威科普內容,打造知識科普陣地
收藏

可擴展存儲引擎Extensible Storage Engine,縮寫ESE)也稱JET Blue,它是微軟的一個ISAM(有索引順序訪問方法)數據存儲技術。ESE是Microsoft Exchange Server、Active Directory、Branch Cache和Windows搜索的核心組件。它也被眾多Windows組件使用,包括Windows Update客戶端和幫助和支持中心。它的目的是允許應用程序通過索引和順序訪問來存儲和檢索數據。

簡介ESE提供事務型數據更新和恢復。它包含一種崩潰恢復機制,因此能保證系統崩潰下的數據一致性。ESE中的事務高度并發(fā)的,因此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位版本。1

數據庫數據庫既是數據的物理存在,也是它的邏輯分組。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操作的任何設備上。1

表一個表是一系列同質的記錄集合,其中每個記錄具有相同的列。每個表由其表名標識,其范圍是包含該表所分配的空間。數據庫中分配給表的磁盤空間量由使用CreateTable操作創(chuàng)建表時給出的參數決定。表會隨數據的創(chuàng)建而自動增長。

表可以有一個或多個索引。記錄數據必須至少有一個聚集索引。1

日志和崩潰恢復ESE的日志和恢復功能支持將在系統崩潰時保證數據的完整性和一致性。日志記錄會在日志文件中冗余地記錄數據庫的更新操作的過程。日志文件的結構對于系統崩潰是非常健壯?;謴褪窃谙到y崩潰后使用此日志將數據庫恢復到一個一致的狀態(tài)。

事務操作將在每次提交到事務級別0時記錄并將日志刷新到磁盤。這使恢復過程能撤銷由事務級別0的事務所做的更新,以及撤消未提交到事務級別0的事務所做的更改。這種恢復方案通常被稱為“前滾/后退”恢復方案。日志可以保留數據,直到通過下述的備份流程安全復制數據,也可以在不需要在系統崩潰從中恢復的情況下以循環(huán)方式重新使用日志。循環(huán)記錄有助最小化日志所耗用的磁盤空間量,但將影響在介質故障后重新找回數據的可能性。2

備份和恢復到不同硬件當創(chuàng)建ESENT數據庫時,物理磁盤扇區(qū)的大小會存儲在數據庫中。該物理扇區(qū)大小預期在會話期間保持一致,否則將會報告一個錯誤。當將驅動器映像從一個物理驅動器克隆或恢復到另一個使用不同物理扇區(qū)大小的驅動器后,ESENT將報告錯誤。

這是一項已知的問題,并且微軟已為此問題提供了相應補丁。Windows Vista或Windows Server 2008見KB2470478。Windows 7或Windows Server 2008 R2見KB982018。2

相較JET Red雖然兩者具有共同的血統,但JET Red與ESE有著很大區(qū)別。

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頁面)。2

本詞條內容貢獻者為:

王沛 - 副教授、副研究員 - 中國科學院工程熱物理研究所