靈感來自于中國(guó)XML論壇,看到某篇文章的隨想。
XML與數(shù)據(jù)庫相比,處理能力當(dāng)然不能比。但是一個(gè)小型的Web應(yīng)用,是不是非要大動(dòng)干戈的動(dòng)用數(shù)據(jù)庫呢?一旦用上了數(shù)據(jù)庫,就需要建表、配置、寫JDBC代碼。對(duì)于小型的數(shù)據(jù),例如不大于10M的數(shù)據(jù)來說,使用XML作為存儲(chǔ)機(jī)制不見得就比數(shù)據(jù)庫差。而且熟悉XML的人可以很快用DOM/SAX存取XML中的數(shù)據(jù),這些數(shù)據(jù)還可以用DTD/Schema來維護(hù)其有效性。非數(shù)據(jù)庫的XML Web應(yīng)用,應(yīng)該可以在原型系統(tǒng)中發(fā)揮很好的作用。
這里將XML和數(shù)據(jù)庫做一下比較:
1.事務(wù)處理:XML沒有,或者需要手動(dòng)編碼;數(shù)據(jù)庫有事務(wù)處理能力;
2.主鍵:XML可以用Schema設(shè)定,數(shù)據(jù)庫可以直接設(shè)定,相當(dāng);
3.數(shù)據(jù)有效性:XML可以用Schema設(shè)定數(shù)據(jù)的有效性,還包括數(shù)據(jù)結(jié)構(gòu)的有效性;數(shù)據(jù)庫可以對(duì)每個(gè)數(shù)據(jù)進(jìn)行有效性檢測(cè),但是數(shù)據(jù)庫只能維持表格這一種結(jié)構(gòu),能力好像還不及XML;
4.效率:小型數(shù)據(jù),XML有優(yōu)勢(shì),因?yàn)橹皇俏募x寫,數(shù)據(jù)量少幾乎只剩下打開文件的時(shí)間;數(shù)據(jù)庫要建立連接再讀數(shù)據(jù),在處理小型數(shù)據(jù)時(shí)反而效率低。不過數(shù)據(jù)量越大數(shù)據(jù)庫越有優(yōu)勢(shì),對(duì)于海量數(shù)據(jù),用XML簡(jiǎn)直是開玩笑;
5.開發(fā)難易度:?jiǎn)渭円源嫒?shù)據(jù)而言,XML程序是非常容易寫的,而數(shù)據(jù)庫需要的背景知識(shí)和代碼就要多很多,不過也可以用SQL語言一招吃遍天。但是數(shù)據(jù)庫的配置等等也是比較復(fù)雜的。總的來說XML要容易;
6.平臺(tái)無關(guān)性:這個(gè)XML就占了大便宜了,XML是完全徹底的平臺(tái)無關(guān),比JAVA靠虛擬機(jī)來達(dá)到平臺(tái)無關(guān)不知道高尚了多少倍。而數(shù)據(jù)庫哪怕是經(jīng)過ODBC,JDBC一串的轉(zhuǎn)換,恐怕還是和平臺(tái)有很大的關(guān)系,一旦需要移植,不可避免的傷筋動(dòng)骨。
做個(gè)小總結(jié),在數(shù)據(jù)量不超過一個(gè)“臨界值”的時(shí)候,還是用XML作為數(shù)據(jù)存儲(chǔ)方式要合算,但是一旦涉及海量數(shù)據(jù),數(shù)據(jù)庫是唯一的選擇了。
這個(gè)臨界值是多少?我認(rèn)為一是要看程序?qū)?shí)時(shí)性的要求強(qiáng)不強(qiáng),二是要看具體的XML程序本身,它的Schema,它使用的解析器等等。