Berkeley DB概述
Berkeley DB是由美國Sleepycat Software公司開發(fā)的一套開放源碼的嵌入式數(shù)據(jù)庫的程序庫(database library), 它為應(yīng)用程序提供可伸縮的、高性能的、有事務(wù)保護(hù)功能的數(shù)據(jù)管理服務(wù)。Berkeley DB為數(shù)據(jù)的存取和管理提供了一組 簡潔的函數(shù)調(diào)用API接口。
它是一個(gè)經(jīng)典的C-library模式的toolkit,為程序員提供廣泛豐富的函數(shù)集,是為應(yīng)用程序開發(fā)者提供工業(yè)級強(qiáng)度的 數(shù)據(jù)庫服務(wù)而設(shè)計(jì)的。其主要特點(diǎn)如下:
嵌入式(Embedded):它直接鏈接到應(yīng)用程序中,與應(yīng)用程序運(yùn)行于同樣的地址空間中,因此,無論是在網(wǎng)絡(luò)上不同 計(jì)算機(jī)之間還是在同一臺計(jì)算機(jī)的不同進(jìn)程之間,數(shù)據(jù)庫操作并不要求進(jìn)程間通訊。
Berkeley DB為多種編程語言提供了API接口,其中包括C、C++、Java、Perl、Tcl、Python和PHP,所有的數(shù)據(jù)庫操作 都在程序庫內(nèi)部發(fā)生。多個(gè)進(jìn)程,或者同一進(jìn)程的多個(gè)線程可同時(shí)使用數(shù)據(jù)庫,有如各自單獨(dú)使用,底層的服務(wù)如加鎖、 事務(wù)日志、共享緩沖區(qū)管理、內(nèi)存管理等等都由程序庫透明地執(zhí)行。
輕便靈活(Portable):它可以運(yùn)行于幾乎所有的UNIX和Linux系統(tǒng)及其變種系統(tǒng)、Windows操作系統(tǒng)以及多種嵌入式實(shí) 時(shí)操作系統(tǒng)之下。它在32位和64位系統(tǒng)上均可運(yùn)行,已經(jīng)被好多高端的因特網(wǎng)服務(wù)器、臺式機(jī)、掌上電腦、機(jī)頂盒、網(wǎng)絡(luò) 交換機(jī)以及其他一些應(yīng)用領(lǐng)域所采用。一旦Berkeley DB被鏈接到應(yīng)用程序中,終端用戶一般根本感覺不到有一個(gè)數(shù)據(jù)庫 系統(tǒng)存在。
可伸縮(Scalable):這一點(diǎn)表現(xiàn)在很多方面。Database library本身是很精簡的(少于300KB的文本空間),但它 能夠管理規(guī)模高達(dá)256TB的數(shù)據(jù)庫。它支持高并發(fā)度,成千上萬個(gè)用戶可同時(shí)操縱同一個(gè)數(shù)據(jù)庫。Berkeley DB能以足夠小 的空間占用量運(yùn)行于有嚴(yán)格約束的嵌入式系統(tǒng),也可以在高端服務(wù)器上耗用若干GB的內(nèi)存和若干TB的磁盤空間。
Berkeley DB在嵌入式應(yīng)用中比關(guān)系數(shù)據(jù)庫和面向?qū)ο髷?shù)據(jù)庫要好,有以下兩點(diǎn)原因: (1)因?yàn)閿?shù)據(jù)庫程序庫同應(yīng)用程序在相同的地址空間中運(yùn)行,所以數(shù)據(jù)庫操作不需要進(jìn)程間的通訊。在一臺機(jī)器的 不同進(jìn)程間或在網(wǎng)絡(luò)中不同機(jī)器間進(jìn)行進(jìn)程通訊所花費(fèi)的開銷,要遠(yuǎn)遠(yuǎn)大于函數(shù)調(diào)用的開銷;
(2)因?yàn)?span lang="EN-US">Berkeley DB對所有操作都使用一組API接口,因此不需要對某種查詢語言進(jìn)行解析,也不用生成執(zhí)行計(jì)劃, 大大提高了運(yùn)行效.
BerkeleyDB系統(tǒng)結(jié)構(gòu)
Berkeley DB由五個(gè)主要的子系統(tǒng)構(gòu)成.包括: 存取管理子系統(tǒng)、內(nèi)存池管理子系統(tǒng)、事務(wù)子系統(tǒng)、鎖子系統(tǒng)以及日志子系統(tǒng)。 其中存取管理子系統(tǒng)作為Berkeley DB數(shù)據(jù)庫進(jìn)程包內(nèi)部核心組件,而其他子系統(tǒng)都存在于Berkeley DB數(shù)據(jù)庫進(jìn)程包的外部。
每個(gè)子系統(tǒng)支持不同的應(yīng)用級別。
1.數(shù)據(jù)存取子系統(tǒng) 數(shù)據(jù)存?。?span lang="EN-US">Access Methods)子系統(tǒng)為創(chuàng)建和訪問數(shù)據(jù)庫文件提供了多種支持。Berkeley DB提供了以下四種文件存儲方法: 哈希文件、B樹、定長記錄(隊(duì)列)和變長記錄(基于記錄號的簡單存儲方式),應(yīng)用程序可以從中選擇最適合的文件組織結(jié)構(gòu)。 程序員創(chuàng)建表時(shí)可以使用任意一種結(jié)構(gòu),并且可以在同一個(gè)應(yīng)用程序中對不同存儲類型的文件進(jìn)行混合操作。
在沒有事務(wù)管理的情況下,該子系統(tǒng)中的模塊可單獨(dú)使用,為應(yīng)用程序提供快速高效的數(shù)據(jù)存取服務(wù)。 數(shù)據(jù)存取子系統(tǒng)適用于不需事務(wù)只需快速格式文件訪問的應(yīng)用。
2.內(nèi)存池管理子系統(tǒng) 內(nèi)存池(Memory pool)子系統(tǒng)對Berkeley DB所使用的共享緩沖區(qū)進(jìn)行有效的管理。它允許同時(shí)訪問數(shù)據(jù)庫的多個(gè)進(jìn)程或者 進(jìn)程的多個(gè)線程共享一個(gè)高速緩存,負(fù)責(zé)將修改后的頁寫回文件和為新調(diào)入的頁分配內(nèi)存空間。 它也可以獨(dú)立于Berkeley DB系統(tǒng)之外,單獨(dú)被應(yīng)用程序使用,為其自己的文件和頁分配內(nèi)存空間。 內(nèi)存池管理子系統(tǒng)適用于需要靈活的、面向頁的、緩沖的共享文件訪問的應(yīng)用。
3.事務(wù)子系統(tǒng) 事務(wù)(Transaction)子系統(tǒng)為Berkeley DB提供事務(wù)管理功能。它允許把一組對數(shù)據(jù)庫的修改看作一個(gè)原子單位, 這組操作要么全做,要么全不做。在默認(rèn)的情況下,系統(tǒng)將提供嚴(yán)格的ACID事務(wù)屬性,但是應(yīng)用程序可以選擇不使用系統(tǒng)所作的 隔離保證。該子系統(tǒng)使用兩段鎖技術(shù)和先寫日志策略來保證數(shù)據(jù)庫數(shù)據(jù)的正確性和一致性。
它也可以被應(yīng)用程序單獨(dú)使用來對其自身的數(shù)據(jù)更新進(jìn)行事務(wù)保護(hù)。事務(wù)子系統(tǒng)適用于需要事務(wù)保證數(shù)據(jù)的修改的應(yīng)用。 4.鎖子系統(tǒng) 鎖(Locking)子系統(tǒng)為Berkeley DB提供鎖機(jī)制,為系統(tǒng)提供多用戶讀取和單用戶修改同一對象的共享控制。 數(shù)據(jù)存取子系統(tǒng)可利用該子系統(tǒng)獲得對頁或記錄的讀寫權(quán)限;事務(wù)子系統(tǒng)利用鎖機(jī)制來實(shí)現(xiàn)多個(gè)事務(wù)的并發(fā)控制。 該子系統(tǒng)也可被應(yīng)用程序單獨(dú)采用。鎖子系統(tǒng)適用于一個(gè)靈活的、快速的、可設(shè)置的鎖管理器。 5.日志子系統(tǒng) 日志(Logging)子系統(tǒng)采用的是先寫日志的策略,用于支持事務(wù)子系統(tǒng)進(jìn)行數(shù)據(jù)恢復(fù),保證數(shù)據(jù)一致性。 它不大可能被應(yīng)用程序單獨(dú)使用,只能作為事務(wù)子系統(tǒng)的調(diào)用模塊。
以上幾部分構(gòu)成了整個(gè)Berkeley DB數(shù)據(jù)庫系統(tǒng)。各部分的關(guān)系如下圖所示: 在這個(gè)模型中,應(yīng)用程序直接調(diào)用的是數(shù)據(jù)存取子系統(tǒng)和事務(wù)管理子系統(tǒng),這兩個(gè)系統(tǒng)進(jìn)而調(diào)用更下層的內(nèi)存管理子系統(tǒng)、 鎖子系統(tǒng)和日志子系統(tǒng)。 由于幾個(gè)子系統(tǒng)相對比較獨(dú)立,所以應(yīng)用程序在開始的時(shí)候可以指定哪些數(shù)據(jù)管理服務(wù)將被使用??梢匀渴褂茫?/font> 也可以只用其中的一部分。例如,如果一個(gè)應(yīng)用程序需要支持多用戶并發(fā)操作,但不需要進(jìn)行事務(wù)管理,那它就可以 只用鎖子系統(tǒng)而不用事務(wù)。有些應(yīng)用程序可能需要快速的、單用戶、沒有事務(wù)管理功能的B樹存儲結(jié)構(gòu),那么應(yīng)用程序 可以使鎖子系統(tǒng)和事務(wù)子系統(tǒng)失效,這樣就會減少開銷。
BerkeleyDB存儲功能概述 Berkeley DB所管理數(shù)據(jù)的邏輯組織單位是若干個(gè)獨(dú)立或有一定關(guān)系的數(shù)據(jù)庫(database), 每個(gè)數(shù)據(jù)庫由若干記錄組成,這些記錄全都被表示成(key,value)的形式.
如果把一組相關(guān)的(key,value)對也看作一個(gè)表的話,那么每一個(gè)數(shù)據(jù)庫只允許存放一個(gè)table, 這一點(diǎn)不同于一般的關(guān)系數(shù)據(jù)庫。實(shí)際上,在Berkeley DB中所提到的“數(shù)據(jù)庫”,相當(dāng)于一般關(guān)系數(shù)據(jù)庫系統(tǒng)中的表; 而“key/data”對相當(dāng)于關(guān)系數(shù)據(jù)庫系統(tǒng)中的行(rows);Berkeley DB不提供關(guān)系數(shù)據(jù)庫中列直接訪問的功能, 而是在“key/data”對中的data項(xiàng)中通過實(shí)際應(yīng)用來封裝字段(列)。
在物理組織上,每一個(gè)數(shù)據(jù)庫在創(chuàng)建的時(shí)候可以由應(yīng)用程序根據(jù)其數(shù)據(jù)特點(diǎn)來選擇一種合適的存儲結(jié)構(gòu)。 可供選擇的四種文件存儲結(jié)構(gòu)分別是:哈希文件、B樹、定長記錄(隊(duì)列)和變長記錄(基于記錄號的簡單存儲方式)。
一個(gè)物理的文件中可以只存放一個(gè)單獨(dú)的數(shù)據(jù)庫,也可以存放若干相關(guān)或不相關(guān)的數(shù)據(jù)庫,而且這些數(shù)據(jù)庫 可以分別采用除隊(duì)列之外任意不同的組織方式,以隊(duì)列組織的數(shù)據(jù)庫只能單獨(dú)存放于一個(gè)文件,不能同其他存儲類型混合存放。
一個(gè)文件除了受最大文件長度和存儲空間的約束之外,理論上可以存儲任意多個(gè)數(shù)據(jù)庫。 因此系統(tǒng)定位一個(gè)數(shù)據(jù)庫通常需要兩個(gè)參數(shù)——“文件名”和“數(shù)據(jù)庫名”,這也是Berkeley DB不同于 一般關(guān)系數(shù)據(jù)庫的地方。
Berkeley DB存儲系統(tǒng)為應(yīng)用程序提供了一系列的接口函數(shù),用于對數(shù)據(jù)庫的管理和操作。其中包括: (1)數(shù)據(jù)庫的創(chuàng)建、打開、關(guān)閉、刪除、重命名等,以及對數(shù)據(jù)的檢索和增刪改操作; (2)提供一些附加的功能,例如讀取數(shù)據(jù)庫狀態(tài)信息、讀取所在文件的信息、讀取所在數(shù)據(jù)庫環(huán)境的信息、 清空數(shù)據(jù)庫的內(nèi)容、數(shù)據(jù)庫的同步備份、版本升級、提示出錯(cuò)信息等等; (3)系統(tǒng)還提供了游標(biāo)機(jī)制,用于存取和訪問成組的數(shù)據(jù),以及對兩個(gè)或多個(gè)相關(guān)數(shù)據(jù)庫進(jìn)行關(guān)聯(lián)和等值連接操作; (4)系統(tǒng)還給出了一些接口函數(shù)用于對存取策略進(jìn)行優(yōu)化配置,比如應(yīng)用程序可以自己設(shè)置B樹的排序比較函數(shù)、 每頁中存放key的最少數(shù)目,哈希桶的填充因子、哈希函數(shù)、哈希表最大長度,隊(duì)列的最大長度,數(shù)據(jù)庫存放的字節(jié)順序, 底層存儲頁的大小,內(nèi)存分配函數(shù),高速緩存的大小,定長記錄的大小和填充位,變長記錄所用的分隔符等等。
Firebird DB 簡介
Firebird Embeded Database。作為一款單文件型小型數(shù)據(jù)庫,Firebird 具有很多吸引人的特征,比如支持事務(wù)、支持存儲過程、觸發(fā)器等,而且 Embeded 版本的 Firebird 在 .NET 開發(fā)中只需要拷貝兩個(gè)文件:一個(gè) fbembed.dll (非托管但不需要注冊的動態(tài)鏈接庫)和一個(gè) ADO.NET Data Provider 的 FirebirdSql.Data.Firebird.dll。這些特征都非常適合那些需要在客戶端存儲一些數(shù)據(jù),但又不想安裝數(shù)據(jù)庫(比如MSDE)軟件的情形。
據(jù)稱,在國外,需要使用客戶端數(shù)據(jù)庫的情況中,有30%左右的開發(fā)者選擇Access,有30%的開發(fā)者選擇MSDE 2000,有30%的開發(fā)者選擇Embedded Firebird,剩余10%選擇其他小型數(shù)據(jù)庫,如SQLite,MySQL 等。
上面所說的Access,MSDE 2000,Embedded Firebird,SQLite等都是可以免費(fèi)再分發(fā)(free redistributable)的數(shù)據(jù)庫。相比而言,MSDE 2000 顯著缺點(diǎn)是需要安裝,最大優(yōu)點(diǎn)是和服務(wù)器端的 SQL Server 編程模型一致,開發(fā)便利。Access的顯著缺點(diǎn)是功能較少,不支持事務(wù)等常用功能,最大優(yōu)點(diǎn)是簡單、多數(shù)開發(fā)者都很熟悉,部署也很方便。SQLite支持事務(wù),也是一款單文件數(shù)據(jù)庫,比較不足的是 .NET Data Provider 還不是很成熟。Firebird則同時(shí)具有:單文件、部署簡單不需安裝(只需 XCOPY 兩個(gè)文件)、支持事務(wù)、存儲過程、觸發(fā)器,.NET Data Provider比較穩(wěn)定成熟等優(yōu)點(diǎn)。
Firebird 本身有SuperServer和Embedded版本之分,后者只能本機(jī)訪問,不接受TCP連接。對于開發(fā)者而言,從Embedded數(shù)據(jù)庫切換到SuperServer,只需更改數(shù)據(jù)庫連接串中的ServerType值就行。
SQLite DB
SQLite的源代碼是C,其源代碼完全開放。SQLite第一個(gè)Alpha版本誕生于2000年5月。今年5月,SQLite又迎來了一個(gè)新的里程一SOLite 3。
SQLite有以下特性:支持ACID事務(wù);零配置一無需安裝和管理配置;儲存在單一磁盤文件中的一個(gè)完整的數(shù)據(jù)庫;數(shù)據(jù)庫文件可以在不同字節(jié)順序的機(jī)器間自由共享;支持?jǐn)?shù)據(jù)庫大小至2TB;足夠小,全部源碼大致3萬行c代碼,250KB;比目前流行的大多數(shù)數(shù)據(jù)庫對數(shù)據(jù)的操作要快;提供了對事務(wù)功能和并發(fā)處理的支持,應(yīng)用Transaction既保證了數(shù)據(jù)的完整性,也會提高運(yùn)行速度,因?yàn)槎鄺l語句一起提交給數(shù)據(jù)庫的速度會比一條一條的提交方式更快;獨(dú)立,沒有額外依賴。SQL語言很大程度上實(shí)現(xiàn)了ANSI SQL92標(biāo)準(zhǔn),特別是支持視圖、觸發(fā)器、事務(wù),支持嵌套SQL
eXtremeDB 內(nèi)存式實(shí)時(shí)數(shù)據(jù)庫
eXtremeDB 是美國 McObject 公司的產(chǎn)品。該公司位于華盛頓州,在編譯器、實(shí)時(shí)編程、數(shù)據(jù)管理及內(nèi)核級驅(qū)動程序方面有 30 多年的從業(yè)經(jīng)驗(yàn)。 McObject 產(chǎn)品包括 eXtremeDB 內(nèi)存式數(shù)據(jù)庫、 SQL 功能支持 eXtremeSQL 、交易日志支持 eXtremeLog 、高可用性支持 eXtremeHA 及 eXtremeWS 嵌入式 Web Server 等。其中 eXtremeDB 是其基本產(chǎn)品; eXtremeSQL 提供 SQL 支持功能; eXtremeLog 提供交易日志支持功能; eXtremeHA 為 eXtremeDB 提供高可用性功能; eXtremeWS 與 eXtremeDB 無縫集成,使得用戶可以通過 Web 方式訪問、使用數(shù)據(jù)庫
eXtremeDB 與同類產(chǎn)品不同之處首先在于它不基于任何文件系統(tǒng)。 實(shí)時(shí)數(shù)據(jù)庫不是一個(gè)特別新的概念,主要以管理實(shí)時(shí)數(shù)據(jù)為目的。這些實(shí)時(shí)數(shù)據(jù)管理系統(tǒng)大多借鑒企業(yè)數(shù)據(jù)庫的概念,進(jìn)行面向?qū)崟r(shí)應(yīng)用的優(yōu)化,如通過 RAM Disk 或 Cache 等機(jī)制減少對磁盤的訪問從而提高數(shù)據(jù)庫的性能。這種優(yōu)化一定程度上改進(jìn)了數(shù)據(jù)庫的速度,但由于不是特地為實(shí)時(shí)數(shù)據(jù)管理而設(shè)計(jì),依然要保留諸如緩存、文件 I/O 操作等機(jī)制,對實(shí)時(shí)性能的提升幅度有限,不能完全滿足實(shí)際工作的需要,大多數(shù)用戶還是使用自己設(shè)計(jì)的數(shù)據(jù)庫管理程序管理實(shí)時(shí)數(shù)據(jù)。歷史上,為了管理實(shí)時(shí)數(shù)據(jù), McObject 公司經(jīng)常要進(jìn)行企業(yè)數(shù)據(jù)庫的裁減。由于這樣的工作量很大,最終促使 McObject 公司推出了 eXtremeDB 這一專門以實(shí)時(shí)數(shù)據(jù)管理為市場的新產(chǎn)品。
eXtremeDB 與同類產(chǎn)品不同之處還在于 eXtremeDB 是內(nèi)聯(lián)庫結(jié)構(gòu),而大多數(shù)同類產(chǎn)品采用的是 C/S 結(jié)構(gòu)。 C/S 結(jié)構(gòu)管理實(shí)時(shí)數(shù)據(jù)的一個(gè)不利之處在于由此引入的任務(wù)間通信不確定性。而內(nèi)聯(lián)庫剔除了這種不定性。
作為實(shí)時(shí)數(shù)據(jù)庫, eXtremeDB 是如何提高其實(shí)時(shí)性能的? 作為面向?qū)崟r(shí)數(shù)據(jù)管理的數(shù)據(jù)庫系統(tǒng), eXtremeDB 通過以下措施提高其實(shí)時(shí)性能:
根據(jù)用戶數(shù)據(jù)特征生成 API ;數(shù)據(jù)存儲在內(nèi)存中不基于任何文件系統(tǒng),取消了文件 I/O 操作的開銷;省略了 Cache 開銷;由于不基于文件系統(tǒng),系統(tǒng)優(yōu)化不再以減少文件訪問為目的,而是以減少 CPU 開銷為目的,因此是更高層次的優(yōu)化;如同實(shí)時(shí)操作系統(tǒng)一樣,交易賦予優(yōu)先級,保證關(guān)鍵交易的實(shí)時(shí)性。
是的, eXtremeDB 是嵌入式數(shù)據(jù)庫。其基本開銷可以小到 60K 字節(jié)左右;管理實(shí)時(shí)數(shù)據(jù)的空間的額外開銷只有 20 %。由于 API 是根據(jù)用戶數(shù)據(jù)特征產(chǎn)生的,調(diào)用這些 API 就可以使用 eXtremeDB 管理實(shí)時(shí)數(shù)據(jù),因此, eXtremeDB 天然地與用戶程序集成在一起。所以, eXtremeDB 是嵌入式數(shù)據(jù)庫。這里,有一點(diǎn)要補(bǔ)充說明一下,有些基于文件系統(tǒng)的數(shù)據(jù)庫由于尺寸可以剪裁,因此,在運(yùn)行的時(shí)候可以在 Flash 或 RAM Disk 上工作。這樣的數(shù)據(jù)庫可以說是可嵌入的;而 eXtremeDB 不依賴文件系統(tǒng)、完全嵌入在應(yīng)用程序中,因此才是真正嵌入式的。
嵌入式系統(tǒng)通常是緊湊系統(tǒng),即小系統(tǒng)。對于大量實(shí)時(shí)數(shù)據(jù)需要管理的情形, eXtremeDB 是否勝任?
這一點(diǎn)要特別指出: eXtremeDB 首先是一個(gè)實(shí)時(shí)數(shù)據(jù)庫,而后才是嵌入式數(shù)據(jù)庫。由于實(shí)時(shí)數(shù)據(jù)管理對時(shí)間空間效率的要求非常高,完成同樣工作的資源要求更少。因此,在資源緊湊型系統(tǒng)中, eXtremeDB 就的優(yōu)點(diǎn)就顯示出來了。所以, eXtremeDB 開銷超小并與應(yīng)用程序天然集成實(shí)現(xiàn)嵌入,這并不意味著 eXtremeDB 只能管理小系統(tǒng)中的數(shù)據(jù)。 eXtremeDB 是嵌入式的,但并不要求應(yīng)用系統(tǒng)是嵌入式的。應(yīng)用系統(tǒng)可以是嵌入式系統(tǒng)如手機(jī)、家庭網(wǎng)管、機(jī)頂盒、數(shù)字電視等,也可以是桌面系統(tǒng)或服務(wù)器系統(tǒng)如核心路由器、呼叫中心、金融交易系統(tǒng)等。大系統(tǒng)的實(shí)時(shí)數(shù)據(jù)管理更是 eXtremeDB 的長處,這一點(diǎn)已經(jīng)在國內(nèi)外的實(shí)際使用中得到了印證。
mSQL嵌入式數(shù)據(jù)庫
mSQL(mini SQL)是一個(gè)單用戶數(shù)據(jù)庫管理系統(tǒng),個(gè)人使用免費(fèi),商業(yè)使用收費(fèi)。由于它的短小精悍,使其開發(fā)的應(yīng)用系統(tǒng)特別受到互聯(lián)網(wǎng)用戶青睞。mSQL(mini SQL)是一種小型的關(guān)系數(shù)據(jù)庫,性能不是太好,對SQL語言的支持也不夠完全,但在一些網(wǎng)絡(luò)數(shù)據(jù)庫應(yīng)用中是足夠了。由于mSQL較簡單,在運(yùn)行簡單的SQL語句時(shí)速度比MySQL略快,而MySQL在線程和索引上下了功夫,運(yùn)行復(fù)雜的SQL語句時(shí)比mSQL,PostgreSQL等都要快一些。MSQL的網(wǎng)址是:http://www. ,最新版本是2005年5月8日發(fā)布的3.7。MSQL的標(biāo)志是一個(gè)鹿。
mSQL的技術(shù)特點(diǎn):
安全性方面,mSQL通過ACL文件設(shè)定各主機(jī)上各用戶的訪問權(quán)限,缺省是 全部可讀/寫。mSQL缺乏 ANSI SQL 的大多數(shù)特征,它僅僅實(shí)現(xiàn)了一個(gè)最最少的API,沒有事務(wù)和參考完整性。mSQL與Lite(一種類似C的腳本語言,與分發(fā)一起發(fā)行)緊密結(jié)合,可以得到一個(gè)稱為 W3-mSQL的一個(gè)網(wǎng)站集成包,它是JDBC、ODBC、Perl和PHP API。
|