Access,MSDE 2000,Embedded Firebird,SQLite等都是可以免費(fèi)再分發(fā)(free redistributable)的數(shù)據(jù)庫(kù)。
相比而言,MSDE 2000 顯著缺點(diǎn)是需要安裝,最大優(yōu)點(diǎn)是和服務(wù)器端的 SQL Server 編程模型一致,開(kāi)發(fā)便利。
Access的顯著缺點(diǎn)是功能較少,不支持事務(wù)等常用功能,最大優(yōu)點(diǎn)是簡(jiǎn)單、多數(shù)開(kāi)發(fā)者都很熟悉,部署也很方便。
SQLite支持事務(wù),也是一款單文件數(shù)據(jù)庫(kù),比較不足的是 .NET Data Provider 還不是很成熟。
Firebird則同時(shí)具有:?jiǎn)挝募?、部署?jiǎn)單不需安裝(只需 XCOPY 兩個(gè)文件)、支持事務(wù)、存儲(chǔ)過(guò)程、觸發(fā)器,.NET Data Provider比較穩(wěn)定成熟等優(yōu)點(diǎn)。
這個(gè)星球上的數(shù)據(jù)庫(kù)實(shí)在不勝枚舉,這里只列一些我接觸過(guò)的常見(jiàn)的。
可以稍微夸張點(diǎn)說(shuō),有交互的應(yīng)用,起碼得用一下數(shù)據(jù)保存,即便是自定義結(jié)構(gòu)的數(shù)據(jù)保存,還是最常見(jiàn)的INI、XML等,都可以算是“數(shù)據(jù)庫(kù)”,真正點(diǎn)的,如DBase系列、FoxBase、FoxPro、MSAccess、InterBase、MS SQL Server、Oracle、DB2等,這些是商業(yè)化的數(shù)據(jù)庫(kù),前面幾個(gè)只能算是數(shù)據(jù)庫(kù),后面幾個(gè)是RMDBS(關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng))。
對(duì)應(yīng)商業(yè)化的,有開(kāi)源的:SQLite、SimpleSQL、Berkely DB、Minosse、Firebird( 前身是是Borland公司的InterBase)、PostgreSQL、MySQL等。
□SQLite:大家可以看我的SQLite系列隨筆,C編寫(xiě)的,可以跨操作平臺(tái),支持大部分ANSI SQL 92,它是嵌入式的輕量級(jí)關(guān)系形數(shù)據(jù)庫(kù)引擎,只需要一個(gè)DLL,體積為250k,數(shù)據(jù)庫(kù)也只是一個(gè)文件,零配置,便可工作。既然開(kāi)源,你甚至可以把它嵌入你的程序中。核心開(kāi)發(fā)人員只有一個(gè),最近加入了另外一個(gè),也就是2個(gè)人而已,實(shí)在佩服,目前發(fā)展到3.1.0,相當(dāng)高效穩(wěn)定,有開(kāi)源驅(qū)動(dòng)在sourceforge.net上有其ADO.NET Data Provider for SQLite :https://sourceforge.net/projects/adodotnetsqlite/ 。
□SimpleSQL:相對(duì)SQLite要大幾倍,但也是輕量級(jí)的,功能稍微強(qiáng)大一點(diǎn),C++編寫(xiě),有OLE、Java等版本。
□Berkely DB:C++編寫(xiě)的大型關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),還額外地支持XML(把XML當(dāng)成數(shù)據(jù)庫(kù)),號(hào)稱(chēng)2百萬(wàn)的安裝量,MySQL也只不過(guò)號(hào)稱(chēng)5百萬(wàn)安裝量而已,跨平臺(tái)。
□Minosse:純C#編寫(xiě)的大型關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),理想是超越MS SQL Server!最新版本:0.2.0,真難得,純Java寫(xiě)的看得多了,純C#的,不是移植別人的,還是第一個(gè),佩服作者:包含C/S和嵌入式版本,并可跨越大部分平臺(tái),因?yàn)樗挥?span lang="EN-US">Windows的東西,可以在Mono下編譯。
□Firebird:這個(gè)東西太牛了,目前有1.5穩(wěn)定版本已經(jīng)擁有大量特性,完全支持ANSI SQL92、98等,一些超酷的特性讓人瘋狂(1.0特性、1.5特性,從這里開(kāi)始研究),主要開(kāi)發(fā)人員是一個(gè)俄羅斯人,目前開(kāi)發(fā)隊(duì)伍已經(jīng)擴(kuò)大到近100人,有3種模式,單機(jī)獨(dú)立,典型C/S,超級(jí)服務(wù)器。2.0版本和3.0版本將在近期推出,看完其路線(xiàn)圖(2.0、3.0)你就會(huì)瘋掉。有.NET驅(qū)動(dòng),目前是1.7beta版。主要特性:
◆A.C.I.D;
◆MGA(任何版本的引擎都可以處理同一數(shù)據(jù)庫(kù)記錄);
◆PSQL(存儲(chǔ)過(guò)程)超級(jí)強(qiáng)大,ms sql相對(duì)的太次,它啥都能在服務(wù)器端實(shí)現(xiàn)并推送到客戶(hù)端成為強(qiáng)大的報(bào)表,存儲(chǔ)過(guò)程;
◆觸發(fā)器都可以在客戶(hù)端獲取監(jiān)控追蹤;
◆自動(dòng)只讀模式;
◆創(chuàng)新的事務(wù)保證絕對(duì)不會(huì)出錯(cuò);
◆24*7運(yùn)行中仍然可以隨時(shí)備份數(shù)據(jù)庫(kù);
◆統(tǒng)一觸發(fā)器:任何操作都可以讓某表唯一的觸發(fā)器來(lái)總控;
◆大部分語(yǔ)言都可以寫(xiě)plug-in,并直接在存儲(chǔ)過(guò)程中調(diào)用函數(shù);
◆c->c++,更加少的代碼但更加快的速度;
◆3種運(yùn)行模式,甚至可以嵌入式;
◆主流語(yǔ)言都可以調(diào)用它;
◆動(dòng)態(tài)sql執(zhí)行;
◆事務(wù)保存點(diǎn);
□PostgreSQL:POSTGRES數(shù)據(jù)庫(kù)的后開(kāi)源版本,號(hào)稱(chēng)擁有任何其他數(shù)據(jù)庫(kù)沒(méi)有的大量新特性,似乎目標(biāo)是要做超大型的OO關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),目前已經(jīng)發(fā)展到8.0,有.NET驅(qū)動(dòng),中文官方網(wǎng)站有詳細(xì)介紹。
□MySQL:這個(gè),不用說(shuō)了吧?號(hào)稱(chēng)全球最受歡迎的開(kāi)源數(shù)據(jù)庫(kù),但讓我奇怪的是,PostgreSQL都有簡(jiǎn)體中文的支持:包括內(nèi)核、管理工具、QA等等,在最新版本MySQL中,我卻沒(méi)有發(fā)現(xiàn)... ,有.NET驅(qū)動(dòng),其中MySQL Connector/Net就是原來(lái)在sf.net上的ByteFX.Data項(xiàng)目,作者已經(jīng)加入了MySQL團(tuán)隊(duì),參看《感慨 20 之開(kāi)源的前途/錢(qián)圖?(1數(shù)據(jù)庫(kù))》。