數(shù)據(jù)庫(kù)采購(gòu)指南之細(xì)說數(shù)據(jù)庫(kù)的類型和功能
原創(chuàng)【51CTO獨(dú)家譯文】如今市面上的數(shù)據(jù)管理產(chǎn)品真的是數(shù)不勝數(shù),選擇余地***地廣泛。除了傳統(tǒng)的商用關(guān)系數(shù)據(jù)庫(kù)外,有許多優(yōu)秀的開源產(chǎn)品可供選擇,另外還有一大批云數(shù)據(jù)庫(kù)和NoSQL數(shù)據(jù)庫(kù)可以考慮。
由于選擇如此之多,采購(gòu)數(shù)據(jù)庫(kù)的買家該如何是好?辦法跟你在購(gòu)買任何大宗商品之前一樣:調(diào)查市場(chǎng),把選擇范圍縮小到符合自身要求和預(yù)算情況的幾種產(chǎn)品,一旦你準(zhǔn)備作出明智的決定,就可以找商家洽談了。這正是本文的初衷:旨在幫助你把潛在候選者的范圍縮小到最終名單,之后你可以更深入地比較一下。
選擇哪種類型的數(shù)據(jù)庫(kù)?
數(shù)據(jù)庫(kù)主要有三種類型,各自有其優(yōu)缺點(diǎn)。貴企業(yè)的需求、預(yù)算、技術(shù)專長(zhǎng)和場(chǎng)地限制都會(huì)對(duì)數(shù)據(jù)庫(kù)平臺(tái)的選擇起到影響。三種主要的數(shù)據(jù)庫(kù)類型是桌面數(shù)據(jù)庫(kù)、服務(wù)器數(shù)據(jù)庫(kù)和Web版數(shù)據(jù)庫(kù),以及Cloud DBaaS。
1.桌面數(shù)據(jù)庫(kù)
你可能熟悉至少一款桌面數(shù)據(jù)庫(kù)產(chǎn)品。主導(dǎo)這個(gè)市場(chǎng)的是像微軟Access、FileMaker Pro和Lotus Approach這些知名廠商。這些產(chǎn)品的價(jià)格相對(duì)便宜,很適合個(gè)人用戶或非交互式Web應(yīng)用。
2.服務(wù)器數(shù)據(jù)庫(kù)
如果你打算使用一種任務(wù)密集型的數(shù)據(jù)庫(kù)應(yīng)用(如電子商務(wù)網(wǎng)站)或一種多用戶數(shù)據(jù)庫(kù),那么就要選購(gòu)大牌廠商的產(chǎn)品。微軟SQL Server和甲骨文等服務(wù)器數(shù)據(jù)庫(kù)提供了強(qiáng)大的功能,不過售價(jià)相應(yīng)也很高。
3.Web版數(shù)據(jù)庫(kù)
現(xiàn)在,幾乎每種數(shù)據(jù)庫(kù)應(yīng)用都需要某種Web交互性。許多人以為,如果你打算將數(shù)據(jù)庫(kù)放到互聯(lián)網(wǎng)上,就需要使用服務(wù)器數(shù)據(jù)庫(kù)。其實(shí)未必如此。價(jià)格便宜得多的桌面數(shù)據(jù)庫(kù)也許能滿足你的要求。
Cloud DBaaS
云服務(wù)(包括數(shù)據(jù)庫(kù)即服務(wù),簡(jiǎn)稱DBaaS)由第三方托管的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)組成。在這種環(huán)境下,有許多架構(gòu)模式和商業(yè)模式可供選擇。這種選擇具有的一些優(yōu)點(diǎn)包括:自動(dòng)備份、具有擴(kuò)展性,另外可通過簡(jiǎn)單的Web界面獲得巨大的計(jì)算資源和存儲(chǔ)容量。此外,這種環(huán)境便于使用復(fù)制機(jī)制,為生產(chǎn)型數(shù)據(jù)庫(kù)增強(qiáng)了可用性和可靠性,而且便于向外擴(kuò)展來處理繁重流量,而不是僅限于單一數(shù)據(jù)庫(kù)的容量。我們以后會(huì)詳細(xì)介紹云數(shù)據(jù)庫(kù)。
商用還是開源?
與大多數(shù)軟件一樣,數(shù)據(jù)庫(kù)分為商用版和開源版。這方面主要的決定性因素是支持問題。雖然開源數(shù)據(jù)庫(kù)有在線社區(qū),可以齊心協(xié)力解決出現(xiàn)的問題;但對(duì)一些人來說,沒有什么比簽一份正式的支持合同以求安心更重要的了。
甲骨文等商用數(shù)據(jù)庫(kù)具有的一些專門功能是開源數(shù)據(jù)庫(kù)所沒有的。僅舉幾個(gè)例子,一些高級(jí)功能包括觸發(fā)器、視圖、繼承、序列、存儲(chǔ)過程、游標(biāo)和用戶定義的數(shù)據(jù)類型。商用產(chǎn)品的穩(wěn)定性也往往更勝一籌。
存儲(chǔ)機(jī)制
數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)的方式并不是都一樣。存儲(chǔ)機(jī)制實(shí)際上有幾種類型,包括ISAM/MyISAM、BDB(BerkeleyDB)和MERGE(又叫MRG_MyISAM),以及比較先進(jìn)的InnoDB。選擇一種存儲(chǔ)機(jī)制時(shí),確保你完全清楚自己打算實(shí)施的所有功能。我為寫這篇文章搜集素材時(shí),發(fā)現(xiàn)一些功能存在于某些存儲(chǔ)機(jī)制,另一些存儲(chǔ)機(jī)制就沒有這些功能。尤其是,InnoDB和BDB是少數(shù)事務(wù)安全型的存儲(chǔ)類型中的兩個(gè)。想了解數(shù)據(jù)庫(kù)存儲(chǔ)引擎的更多信息,MySQL開發(fā)網(wǎng)站上有一份全面的總結(jié)(http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html)。
數(shù)據(jù)完整性
任何數(shù)據(jù)庫(kù)引擎的關(guān)鍵功能之一是數(shù)據(jù)完整性。符合事務(wù)的原子性、一致性、獨(dú)立性及持久性(ACID)是確保數(shù)據(jù)完整性的一個(gè)先決條件。ACID實(shí)際上意味著,當(dāng)事務(wù)在數(shù)據(jù)庫(kù)里面處理時(shí),不是整個(gè)事務(wù)成功處理、信息寫入到數(shù)據(jù)庫(kù),就是什么都不寫入到數(shù)據(jù)庫(kù)。有些數(shù)據(jù)庫(kù)支持符合ACID的事務(wù)功能,PostgreSQL、MySQL、甲骨文和Sybase就是幾個(gè)例子。
那些數(shù)據(jù)庫(kù)還支持事務(wù)的局部回滾,萬(wàn)一出現(xiàn)死鎖,就可以采取糾正錯(cuò)誤。比如說,MySQL使用傳統(tǒng)的行級(jí)鎖。多版本并發(fā)性控制(MVCC)是另一種記錄鎖。MVCC與行級(jí)鎖有點(diǎn)不一樣,原因在于它根據(jù)數(shù)據(jù)快照來處理數(shù)據(jù)庫(kù)上的事務(wù),然后序列化。
支持的語(yǔ)言
SQL是基本的ANSI標(biāo)準(zhǔn),可用于訪問關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)。許多數(shù)據(jù)庫(kù)支持額外的語(yǔ)言特性和提供專門功能的變種。比如說,T-SQL是微軟SQL Server使用的專有形式的SQL。它包括了類型轉(zhuǎn)換函數(shù)(cast和convert)和日期函數(shù)(date)等有用的函數(shù),但這些函數(shù)不是ANSI標(biāo)準(zhǔn)的一部分。Transact-SQL/T-SQL是Sybase為其數(shù)據(jù)庫(kù)服務(wù)器而開發(fā)的,后來微軟購(gòu)買了它的許可證。你可能還會(huì)遇到plSQL,這是甲骨文自己的SQL版本。還有其他一些版本,比如微軟Access使用的Jet SQL。
值得一提的是,連SLQ這個(gè)ANSI標(biāo)準(zhǔn)也有不同版本,通常以發(fā)布的年份來命名,比如92或99。不同的數(shù)據(jù)庫(kù)引擎在宣傳時(shí)自稱“大部分與ANSI-92兼容”,或者“與ANSI-99完全兼容”,把任何例外情況記入文檔。一條經(jīng)驗(yàn)法則是,ANSI版本越是最近發(fā)布的,這種語(yǔ)言的功能越強(qiáng)大。
還可以用其他語(yǔ)言來編寫過程和觸發(fā)器,比如PL/TCL、PL/Perl和PL/python。這些額外語(yǔ)言分為兩種基本類型:安全的和不安全的。安全語(yǔ)言只允許該編程語(yǔ)言訪問主機(jī)系統(tǒng)的資源,比如文件系統(tǒng)。
正如所你見,在購(gòu)買數(shù)據(jù)庫(kù)管理系統(tǒng)之前有好多方面要考慮;實(shí)際上要考慮的方面太多了,下一個(gè)部分會(huì)介紹需要考慮的更多因素。
原文鏈接:http://www.databasejournal.com/news/article.php/3930406/Database-Buyers-Guide-Database-Types-and-Features.htm
【編輯推薦】