eXtremeDB的主要目標(biāo)是為適用eXtremeDB的各種應(yīng)用程序提供高性能。這些應(yīng)用程序不同于工資單或庫(kù)存等普通數(shù)據(jù)庫(kù)商業(yè)應(yīng)用程序。首先,基于eXtremeDB的應(yīng)用程序運(yùn)行在只有少量?jī)?nèi)存和缺少永久存儲(chǔ)設(shè)備的廉價(jià)處理設(shè)備上。其次,即使在速度很慢的處理器上數(shù)據(jù)訪(fǎng)問(wèn)依然需要保持比較高的速度,簡(jiǎn)單查詢(xún)和事務(wù)最多不超過(guò)幾毫秒,與企業(yè)級(jí)數(shù)據(jù)庫(kù)相比,這些設(shè)備上的數(shù)據(jù)存儲(chǔ)量比較小,事務(wù)所持續(xù)的時(shí)間通常也非常短。此外,需要存儲(chǔ)的數(shù)據(jù)可能是復(fù)雜的,實(shí)際上它差不多總是動(dòng)態(tài)變化的。因此,當(dāng)設(shè)計(jì)eXtremeDB內(nèi)核時(shí)我們應(yīng)遵循以下幾項(xiàng)主要原則:
◆最小化支持持久數(shù)據(jù)所必須的資源——實(shí)質(zhì)上就是將內(nèi)存資源減到最小。對(duì)象都以很小的尺寸保存在數(shù)據(jù)庫(kù)中——eXtremeDB引進(jìn)的額外開(kāi)銷(xiāo)不但非常低,而且這些開(kāi)銷(xiāo)在應(yīng)用程序中也是可控制的;另外,數(shù)據(jù)層提供了對(duì)對(duì)象數(shù)據(jù)的壓縮。
◆保持極小的必要堆空間——在某些配置上eXtremeDB只需要不到1K的堆空間
◆維持極小的代碼體積
◆通過(guò)緊密的集成持久存儲(chǔ)和宿主應(yīng)用程序語(yǔ)言消除額外的代碼層。通常目標(biāo)應(yīng)用程序使用大量小規(guī)模的數(shù)據(jù)庫(kù)操作而非大數(shù)據(jù)量的操作。這意味著通過(guò)指向?qū)ο蟮闹羔樆蛞脕?lái)從對(duì)象中獲得數(shù)據(jù)的操作必須非常迅速快捷,否則額外開(kāi)銷(xiāo)(例如發(fā)送一個(gè)消息的開(kāi)銷(xiāo))會(huì)高得讓人無(wú)法接受。eXtremeDB的數(shù)據(jù)存取方法使得對(duì)持久對(duì)象的引用能夠和引用臨時(shí)數(shù)據(jù)一樣快速。
◆提供對(duì)動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)的本地支持,例如變長(zhǎng)字符串、鏈表和樹(shù)。eXtremeDB通過(guò)以一種高效(快速)、安全(事務(wù))、緊湊(內(nèi)存)的方式來(lái)支持動(dòng)態(tài)數(shù)據(jù),從而 “擴(kuò)展”了“C”語(yǔ)言。
1. 內(nèi)存數(shù)據(jù)庫(kù),eXtremeDB將數(shù)據(jù)以程序直接使用的格式保存在主內(nèi)存之中,不僅剔除了文件I/O的開(kāi)銷(xiāo),也剔除了文件系統(tǒng)數(shù)據(jù)庫(kù)所需的緩沖和Cache機(jī)制。其結(jié)果是每個(gè)交易一微秒甚至更少的極限速度,相比于類(lèi)磁盤(pán)數(shù)據(jù)庫(kù)而言,速度成百上千倍地提高。作為內(nèi)存數(shù)據(jù)庫(kù),eXtremeDB不僅性能高,而且數(shù)據(jù)存儲(chǔ)的效率也非常高。為了提高性能并方便程序使用,數(shù)據(jù)在eXtremeDB中不做任何壓縮,100M的空間可以保存高達(dá)70M以上的有效數(shù)據(jù),這是其他數(shù)據(jù)庫(kù)所不可想象的。