天天看點

關于 NoSQL 資料庫你應該了解的 10 件事

四分之一個世紀以來,關系型資料庫(rdbms)一直是主流資料庫模型。但是現在非關系型資料庫,“雲”或者“nosql”資料庫,正在作為一種替代資料庫模型獲得越來越多的占有率。本文中我們将關注非關系型 nosql 資料庫的 10 個關鍵特征:排在前 5 位的優點和前 5 位的挑戰。

多年來,資料庫負載需要增加時,資料管理者隻能依賴于縱向擴充(scale-up)--買更多更強的伺服器,而不是依賴橫向擴充(scale-out)--将資料庫分布在多台主機上。無論如何,随着交易頻率、可用性要求的提高,和資料庫向雲上和虛拟環境中遷移的需求的提出,基于商業硬體的橫向擴充所帶來的經濟效益已經變得無法拒絕。

相對于 rdbms 系統不能輕松的在商業叢集上進行橫向擴充,新生的 nosql 資料設計上就是要能夠透明的利用新節點進行擴充。nosql 資料庫的設計通常要考慮利用低成本的商業硬體。

就像過去二十年中交易率的提高已經超出了人們的想象,被存儲的資料的規模也極大的增加了。o'reilly 聰明的稱這種現象為“資料的工業革命”。rdbms 系統的能力也在提高去适應這種增長,但就像交易率上的限制一樣,單個 rdbms 系統實際能管理的資料規模已經無法滿足一些企業的需求。今天,nosql 系統,例如 hadoop,已經能過處理“大資料”級别的資料容量;而這種資料容量遠超過最大的 rdbms 系統的處理能力。

盡管這些年 rdbms 供應商聲稱有很多易管理性上的提高措施,進階 rdbms 系統上的維護還是離不開訓練有素但昂貴的 dba 們。 dba 需要緊密的參與進階 rdbms 系統的設計、安裝和持續的調優。

理論上講,nosql 資料庫通常從最基本的設計就要求更少的管理:自動化修複和資料分布、更簡單的資料模型帶來更少的管理操作和調優需求。實際上,dba 已死的說法多少有點誇張。總要有人為關鍵業務資料存儲的性能和可用性負責。

nosql 資料庫通常使用廉價伺服器叢集去管理迅猛發展的資料和交易容量,而 rdbms 傾向依賴昂貴的專業伺服器和存儲系統。結果就是,nosql 系統的每千兆位元組成本或者每秒的交易成本要很多倍的低于 rdbms 系統,這使得你可以非常低的成本去存儲和處理更多的資料。

變更管理對于大型 rdbms 産品是很頭疼的。 在 rdbms 中,即使是微小的資料模型變更也需要非常小心的處理,而且可能要求系統停機或者降低服務級别。

nosql 資料庫的資料模型限制則輕松的多 — 或者根本就沒有。nosql 的鍵值存儲和文檔資料庫允許應用在一個資料元素中存儲任何結構的資料。即使是相對嚴格的基于 bigtable 的 nosql 資料庫(cassandra,hbase)通常也允許沒有太多限制的建立新列。

結果就是,應用或者資料庫模式的改變不需要作為一個複雜的變更單元進行管理。理論上講,這允許應用可以更快的疊代,當然,很清楚的一點是,如果應用不能保證資料的完整性這可能帶來不良的副作用

nosql 資料庫的前景很被看好,但是要應用到主流的企業還有許多困難需要克服。這裡是幾個首先要解決的問題。

rdbms 系統已經存在很長時間了。而 nosql 的擁護者認為存在時間的增長就是它退化的信号。但是對大多數 cio 來說 rdbms 是穩定的。多數情況下, rdbms 系統是穩定且多功能的。相比較而言, 大多數 nosql 産品的一些關鍵元件還有待實作。

大多數的開發者都渴望生活在科技的前沿,但是企業卻必須小心謹慎。

企業要保證,如果一個關鍵系統崩潰,他們能夠得到及時的有支援。所有 rdbm 提供商都付出很大的力量用以朝代高水準的企業支援。

相比之下,大部分 nosql 系統都是開源項目,盡管每一個 nosql 資料庫通常都有一家或多家公司提供支援,但這些公司通常是小公司,缺少全球影響力,支援資源和像 oracle,microsoft,或者 ibm 一樣的信譽。

為了滿足流行的 web 2.0 應用對可擴充的要求,nosql 資料庫應運而生。因而,它們的功能集都是頃向于為這些應用服務。但是在 web 應用增删改查的業務中産生的資料具有商業價值。從這些資料庫中挖掘潛在的商業資訊提高企業的效率和競争力以及商業智能(bi)對所有企業來講都是 it 所面昨的關鍵的問題。

nosql 資料庫缺少即席查詢和資料分析工具。即便一個簡單的查詢都需要專業的程式設計技能,并且傳統的 bi 工具不提供對 nosql 的連接配接。

hive 和 pig 是為解決這個問題而出現的,他們提供了更友善的資料通路方式,可以通路存儲在 hadoop 叢集上的資料甚至其他 nosql 資料庫。quest software 已經開發了一個雲資料庫産品 — toad — 可以為多種 nosql 提供即席查詢能力。

nosql 的設計目标可能是零管理方案,對現實離這一目标太遠。目前 nosql 的安裝和維護都需要掌握技術。

熟悉關系資料庫概念和程式設計的開發者遍布全球各領域,但是幾乎每一個非關系資料庫的開發者都仍然處在學習當中。随着時間推移,這種情況當然會被解決,但是就現在而言,找一個關系資料庫的開發人員或者是管理人員,顯然更加容易

nosql 資料庫正在成為資料庫領域中越來越重要的組成部分,如果得到正确的使用,它将會帶來真正的益處。然而,對于企業來說,使用 nosql 資料庫的時候應當時刻注意相關法律問題。