關於 NoSQL 資料庫你應該瞭解的 10 件事
四分之一個世紀以來,關係型資料庫(RDBMS)一直是主流資料庫模型。但是現在非關係型資料庫,“雲”或者“NoSQL”資料庫,正在作為一種替代資料庫模型獲得越來越多的佔有率。本文中我們將關注非關係型 NoSQL 資料庫的 10 個關鍵特徵:排在前 5 位的優點和前 5 位的挑戰。
提示:點選連結可以下載本文 英文版PDF
NoSQL 的五大有點
1:彈性擴充套件
多年來,資料庫負載需要增加時,資料管理員只能依賴於縱向擴充套件(scale-up)–買更多更強的伺服器,而不是依賴橫向擴充套件(scale-out)–將資料庫分佈在多臺主機上。無論如何,隨著交易頻率、可用性要求的提高,和資料庫向雲上和虛擬環境中遷移的需求的提出,基於商業硬體的橫向擴充套件所帶來的經濟效益已經變得無法拒絕。
相對於 RDBMS 系統不能輕鬆的在商業叢集上進行橫向擴充套件,新生的 NoSQL 資料設計上就是要能夠透明的利用新節點進行擴充套件。NoSQL 資料庫的設計通常要考慮利用低成本的商業硬體。
2: 大資料
就像過去二十年中交易率的提高已經超出了人們的想象,被儲存的資料的規模也極大的增加了。O’Reilly 聰明的稱這種現象為“資料的工業革命”。RDBMS 系統的能力也在提高去適應這種增長,但就像交易率上的限制一樣,單個 RDBMS 系統實際能管理的資料規模已經無法滿足一些企業的需求。今天,NoSQL 系統,例如 Hadoop,已經能過處理“大資料”級別的資料容量;而這種資料容量遠超過最大的 RDBMS 系統的處理能力。
3. 告別DBA(再見?)
儘管這些年 RDBMS 供應商聲稱有很多易管理性上的提高措施,高階 RDBMS 系統上的維護還是離不開訓練有素但昂貴的 DBA 們。 DBA 需要緊密的參與高階 RDBMS 系統的設計、安裝和持續的調優。
理論上講,NoSQL 資料庫通常從最基本的設計就要求更少的管理:自動化修復和資料分佈、更簡單的資料模型帶來更少的管理操作和調優需求。實際上,DBA 已死的說法多少有點誇張。總要有人為關鍵業務資料儲存的效能和可用性負責。
4: 經濟性
NoSQL 資料庫通常使用廉價伺服器叢集去管理迅猛發展的資料和交易容量,而 RDBMS 傾向依賴昂貴的專業伺服器和儲存系統。結果就是,NoSQL 系統的每千兆位元組成本或者每秒的交易成本要很多倍的低於 RDBMS 系統,這使得你可以非常低的成本去儲存和處理更多的資料。
5: 靈活的資料模型
變更管理對於大型 RDBMS 產品是很頭疼的。 在 RDBMS 中,即使是微小的資料模型變更也需要非常小心的處理,而且可能要求系統停機或者降低服務級別。
NoSQL 資料庫的資料模型限制則輕鬆的多 — 或者根本就沒有。NoSQL 的鍵值儲存和文件資料庫允許應用在一個資料元素中儲存任何結構的資料。即使是相對嚴格的基於 BigTable 的 NoSQL 資料庫(Cassandra,HBase)通常也允許沒有太多限制的建立新列。
結果就是,應用或者資料庫模式的改變不需要作為一個複雜的變更單元進行管理。理論上講,這允許應用可以更快的迭代,當然,很清楚的一點是,如果應用不能保證資料的完整性這可能帶來不良的副作用
NoSQL 5 大挑戰
NoSQL 資料庫的前景很被看好,但是要應用到主流的企業還有許多困難需要克服。這裡是幾個首先要解決的問題。
1: 完備
RDBMS 系統已經存在很長時間了。而 NoSQL 的擁護者認為存在時間的增長就是它退化的訊號。但是對大多數 CIO 來說 RDBMS 是穩定的。多數情況下, RDBMS 系統是穩定且多功能的。相比較而言, 大多數 NoSQL 產品的一些關鍵元件還有待實現。
大多數的開發者都渴望生活在科技的前沿,但是企業卻必須小心謹慎。
2: 支援
企業要保證,如果一個關鍵系統崩潰,他們能夠得到及時的有支援。所有 RDBM 提供商都付出很大的力量用以朝代高水平的企業支援。
相比之下,大部分 NoSQL 系統都是開源專案,儘管每一個 NoSQL 資料庫通常都有一家或多家公司提供支援,但這些公司通常是小公司,缺少全球影響力,支援資源和像 Oracle,Microsoft,或者 IBM 一樣的信譽。
3: 資料分析和商業智慧
為了滿足流行的 Web 2.0 應用對可擴充套件的要求,NoSQL 資料庫應運而生。因而,它們的功能集都是頃向於為這些應用服務。但是在 Web 應用增刪改查的業務中產生的資料具有商業價值。從這些資料庫中挖掘潛在的商業資訊提高企業的效率和競爭力以及商業智慧(BI)對所有企業來講都是 IT 所面昨的關鍵的問題。
NoSQL 資料庫缺少即席查詢和資料分析工具。即便一個簡單的查詢都需要專業的程式設計技能,並且傳統的 BI 工具不提供對 NoSQL 的連線。
HIVE 和 PIG 是為解決這個問題而出現的,他們提供了更方便的資料訪問方式,可以訪問儲存在 Hadoop 叢集上的資料甚至其他 NoSQL 資料庫。Quest Software 已經開發了一個雲資料庫產品 — Toad — 可以為多種 NoSQL 提供即席查詢能力。
4: 管理
NoSQL 的設計目標可能是零管理方案,對現實離這一目標太遠。目前 NoSQL 的安裝和維護都需要掌握技術。
5. 專業性
熟悉關聯式資料庫概念和程式設計的開發者遍佈全球各領域,但是幾乎每一個非關聯式資料庫的開發者都仍然處在學習當中。隨著時間推移,這種情況當然會被解決,但是就現在而言,找一個關聯式資料庫的開發人員或者是管理人員,顯然更加容易
總結
NoSQL 資料庫正在成為資料庫領域中越來越重要的組成部分,如果得到正確的使用,它將會帶來真正的益處。然而,對於企業來說,使用 NoSQL 資料庫的時候應當時刻注意相關法律問題。
相關文章
- 關於大資料你應該瞭解的五件事兒大資料
- 關於工業物聯網,你應該瞭解的3件事
- 關於iPhone SE你應該知道的20件事iPhone
- [譯]關於NODE_ENV,哪些你應該瞭解
- 你應該瞭解的流行圖資料庫查詢語言資料庫
- docker – 你應該知道的10件事Docker
- 關於NoSQL,你必須知道的九件事SQL
- 24 個你應該瞭解的 PHP 庫PHP
- 關於JavaScript的作用域你應該瞭解的那點事!JavaScript
- 你應該瞭解的一些資料庫概念!RDBMS vs NoSQL,分散式 vs 叢集 ,分割槽 分表 分片 分庫資料庫SQL分散式
- 關於製造業中物聯網的未來應該瞭解的7件事
- 【譯】你應該瞭解的 CORSCORS
- Ruby開發者應該明瞭的15件事
- 關於Mysql資料儲存,你瞭解多少?MySql
- 關於計算機書籍,你應該知道的五件事。計算機
- 前端你應該瞭解的資料結構與演算法前端資料結構演算法
- 關於MySQL應該學習的6件事MySql
- 關於 Java 你不知道的 10 件事Java
- 關於 Linux 你可能不是非常瞭解的七件事Linux
- 你真的瞭解nosql世界嗎?SQL
- 關於 jwt ,你應該知道的JWT
- 你應該瞭解的 Java SPI 機制Java
- 你應該瞭解的MySQL鎖分類MySql
- 你應該瞭解Nginx的7個原因Nginx
- 你應該瞭解 Nginx 的 7 個原因Nginx
- 理論+應用,帶你瞭解資料庫資源池資料庫
- 你應該知道的10件關於Java 6的事情Java
- 你該瞭解的10個Python 模組Python
- 關於Synchronized你瞭解多少?synchronized
- 關於 jwt 你應該知道的事情JWT
- 刪庫跑路?你應該看看雲資料庫資料庫
- 關於大資料,你應該知道的75個專業術語大資料
- 你應該知道的10件關於Java 6的事情(轉)Java
- 你懂 Linux 嗎?關於 Linux 你可能不是非常瞭解的七件事Linux
- 帶你瞭解資料庫中JOIN的用法資料庫
- 帶你瞭解資料庫中group by的用法資料庫
- 10個應該瞭解的Ruby技術
- NoSQL資料庫概念與NoSQL資料庫家族SQL資料庫