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