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