1. 程式人生 > >關於NoSQL資料庫你應該知道的10件事

關於NoSQL資料庫你應該知道的10件事

關係資料庫模型已經流行了幾十年了,但是一種新型別的資料庫——被稱為NoSQL,正在引起企業的注意。下面是關於它的優勢和劣勢的一個概述。二十多年以來,對資料庫管理來說,關係資料庫(RDBMS)模型一直是一個佔統治地位的資料庫模型。但是,今天,非關係資料庫,“雲”資料庫,或“NoSQL”資料庫作為關係資料庫以外的一些選擇,正在引起大家的廣泛關注。在這篇文章裡,我們將主要關注那些非關係的NoSQL資料庫的十大利弊:包括五大優勢和五大挑戰。

NoSQL的五大優勢

1,靈活的可擴充套件性

多年以來,資料庫管理員們都是通過“縱向擴充套件”的方式(當資料庫的負載增加的時候,購買更大型的伺服器來承載增加的負載)來進行擴充套件的,而不是通過“橫向擴充套件”的方式(當資料庫負載增加的時候,在多臺主機上分配增加的負載)來進行擴充套件。但是,隨著交易率和可用性需求的增加,資料庫也正在遷移到雲端或虛擬化環境中,“橫向擴充套件”在commodity hardware方面的經濟優勢變得更加明顯了,對各大企業來說,這種“誘惑”是無法抗拒的。

在commodity clusters上,要對RDBMS做“橫向擴充套件”,並不是很容易,但是各種新型別的NoSQL資料庫主要是為了進行透明的擴充套件,來利用新節點而設計的,而且,它們通常都是為了低成本的commodity hardware而設計的。

2,大資料

在過去的十年裡,正如交易率發生了翻天覆地的增長一樣,需要儲存的資料量也發生了急劇地膨脹。O’Reilly把這種現象稱為:“資料的工業革命”。為了滿足資料量增長的需要,RDBMS的容量也在日益增加,但是,對一些企業來說,隨著交易率的增加,單一資料庫需要管理的資料約束的數量也變得越來越讓人無法忍受了。現在,大量的“大資料”可以通過NoSQL系統(例如:Hadoop)來處理,它們能夠處理的資料量遠遠超出了最大型的RDBMS所能處理的極限。

3,“永別了”!DBA們!(再見?)

在過去的幾年裡,雖然一些RDBMS供應商們聲稱在可管理性方面做出了很多的改進,但是高階的RDBMS系統維護起來仍然十分昂貴,而且還需要訓練有素的DBA們的協助。DBA們需要親自參與高階的RDBMS系統的設計,安裝和調優。

NoSQL資料庫從一開始就是為了降低管理方面的要求而設計的:從理論上來說,自動修復,資料分配和簡單的資料模型的確可以讓管理和調優方面的要求降低很多。但是,DBA的死期將至的謠言未免有些過於誇張了。總是需要有人對關鍵性的資料庫的效能和可用性負責的。

4,經濟

NoSQL資料庫通常使用廉價的commodity servers叢集來管理膨脹的資料和事務數量,而RDBMS通常需要依靠昂貴的專有伺服器和儲存系統來做到這一點。使用NoSQL,每GB的成本或每秒處理的事務的成本都比使用RDBMS的成本少很多倍,這可以讓你花費更低的成本儲存和處理更多的資料。

5,靈活的資料模型

對於大型的生產性的RDBMS來說,變更管理是一件很令人頭痛的事情。即使只對一個RDBMS的資料模型做了很小的改動,也必須要十分小心地管理,也許還需要停機或降低服務水平。NoSQL資料庫在資料模型約束方面是更加寬鬆的,甚至可以說並不存在資料模型約束。NoSQL的主鍵值資料庫和文件資料庫可以讓應用程式在一個數據元素裡儲存任何結構的資料。即使是規定更加嚴格的基於“大表”的NoSQL資料庫(例如:Cassandra, HBase)通常也允許建立新列,這並不會造成什麼麻煩。

應用程式變更和資料庫模式的變更並不需要作為一個複雜的變更單元來管理。從理論上來說,這可以讓應用程式迭代的更快,但是,很明顯,如果應用程式無法維護資料的完整性,那麼這會帶來一些不良的副作用。

NoSQL的五大挑戰

NoSQL的種種承諾引發了一場熱潮,但是在它們得到主流的企業的青睞以前,它們還有許多困難需要克服。下面是NoSQL需要面對的一些挑戰。

1,成熟度

RDBMS系統已經發展很長時間了。NoSQL的擁護者們認為,RDBMS系統那超長的發展的年限恰恰表示它們已經過時了,但是對於大多數的CIO們來說,RDBMS的成熟度更加令它們放心。大多數情況下,RDBMS系統更加穩定,而且功能也更加豐富。相比之下,大多數的NoSQL資料庫都是pre-production版本,許多關鍵性的功能還有待實現。

對於大多數開發者來說,處於技術的最前沿的確是很令人興奮的,但是企業應該懷著極端謹慎的態度來處理此事。

2,支援

企業都希望能得到這樣的保證:如果一個關鍵性的系統出現問題了,他們可以獲得及時有效的支援。所有的RDBMS供應商都在竭盡全力地提供高水平的企業支援。

相反,大多數的NoSQL系統都是開源專案,雖然對於每個NoSQL資料庫來說,通常也會有一個或多個公司對它們提供支援,但是那些公司通常是小型的創業公司,在支援的範圍,支援的資源,或可信度方面,它們和Oracle, Microsoft或IBM是無法相提並論的。

3,分析和商業智慧化

NoSQL資料庫現在已經可以滿足現代的Web2.0應用程式的高度的可擴充套件性的要求了。這直接導致的結果是,它們的大多數功能都是面向這些應用程式而設計的。但是,在一個應用程式中,具有商業價值的資料早就已經超出了一個標準的Web應用程式需要的“插入-讀取-更新-刪除”的範疇了。在公司的資料庫中進行商業資訊的挖掘可以提高企業的效率和競爭力,而且對於所有的中到大型的公司來說,商業智慧化(BI)一直是一個至關重要的IT問題。

NoSQL資料庫幾乎沒有提供什麼專用的查詢和分析工具。即使是一個簡單的查詢,也要求操作者具有很高超的程式設計技術,而且,常用的BI工具是無法連線到NoSQL的。

像HIVE或PIG那樣的新出現的一些解決方案在這方面可以提供一些幫助,它們可以讓訪問Hadoop叢集中的資料變得更加容易,最後也許還會支援其他的NoSQL資料庫。Quest軟體已經開發了一個產品——Toad for Cloud Databases——它給各種NoSQL資料庫提供了專用的查詢功能。

4,管理

NoSQL的設計目標是提供一個“零管理”的解決方案,但是目前來說,還遠遠沒有達到這個目標。安裝NoSQL還是需要很多技巧的,同時,維護它也需要付出很多的努力。

5,專業知識

毫不誇張地說,全世界有數百萬的開發者,他們都對RDBMS的概念和程式設計方法很熟悉,在每個業務部門中都有這樣的開發者。相反,幾乎每一個NoSQL開發者都正處於學習狀態中。雖然這種情況會隨著時間的推移而改變,但是現在,找到一些有經驗的RDBMS程式設計師或管理員要比找到一個NoSQL專家容易的多。

結論

NoSQL資料庫正在逐漸地成為資料庫領域中不可或缺的一部分,如果使用方法得當的話,能獲得很多的好處。但是,企業應該謹慎行事,要充分地認識到這些資料庫的一些限制和問題。

相關推薦

關於NoSQL資料庫應該知道10

關係資料庫模型已經流行了幾十年了,但是一種新型別的資料庫——被稱為NoSQL,正在引起企業的注意。下面是關於它的優勢和劣勢的一個概述。二十多年以來,對資料庫管理來說,關係資料庫(RDBMS)模型一直是一個佔統治地位的資料庫模型。但是,今天,非關係資料庫,“雲”資料庫,或“

關於MySQL密碼應該知道的那些 • cenalulu's Tech Blog

本文將介紹MySQL使用者密碼相關的一些知識,以及5.6中對於安全性的一些改進 MySQL使用者密碼是如何生成和儲存的 如果你已經接觸MySQL一段時間了,那麼想必你一定知道MySQL把所有使用者的使用者名稱和密碼的密文存放在mysql.user表中。大致的形式如下: mysql [l

用友雲開發者中心,應該知道的那些

bcb 過程 自定義環境 bfd 生產環境 log 灰度 查找 了解 2018開發者中心產品不斷進行架構升級優化,同時也在不斷完善產品能力,目前已支撐內部大量雲產品的運行,下面給大家介紹一下新增的幾大能力:一、一體化的計算資源管理1.提供資源池使用率看板,資源池的內存分配和

HTTP1.0,HTTP1.1,HTTP2.0,SPDY,HTTPS應該知道的一些

作為一個經常和web打交道的程式設計師,瞭解這些協議是必須的,本文就向大家介紹一下這些協議的區別和基本概念,文中可能不侷限於前端知識,還包括一些運維,協議方面的知識,希望能給讀者帶來一些收穫,如有不對之處還請指出。 1. HTTP1.0

轉載需要知道的關於NoSQL資料庫10

1. 成熟度 RDBMS已經存在了很長一段時間. NoSQL的支持者認為它們的年紀是它們過時的象徵,但是,對於大部分CIO(資訊長)來講,RDBMS的成熟度是可以讓人放心的.通常,RDBMS 系統都很穩定,功能也很豐富.相比而言,大部分NoSQL的替代品都還處於前-生產環境

關於Docker應該知道10

如果你在企業IT工作,那你會聽說過Docker。即使在是像Puppet、Hadoop和MongoDB這樣的熱門技術中,Docker也會脫穎而出。 但正是因為Docker正處於炒作期,因此這並不意味著它適合你。正如我們Tech  Pro Research

關於微軟Silverlight,應該知道10

對於任何成長中的企業來說,設計一個合適的網站是一件非常重要的事情,但是如何讓你的網站具有富網際網路應用程式(Rich Internet Applications,RIA)的體驗卻不是那麼簡單。為了在這方面為開發者減輕負擔,微軟最近推出了Silverlight——這是一個針對W

Docker – 應該知道10

容器並不是一個全新的技術,但這並不妨礙Docker如風暴一樣席捲整個世界。如果你在IT圈裡,你一定聽說過Docker。就算與其他熱門技術,如:Puppet/Chef,Hadoop或者MongoDB放在一起,Docker仍然讓你耳目一新。不過就算Docker現在怎

關於IE 10 應該知道的6

1. 不再有條件註釋 幾乎所有Web開發人員和設計師至少使用過一次條件註釋。過去,我們經常需要修復該IE的bug。在這裡條件註釋隨手可得。如果使用者執行一個IE版本,你可以將一個額外的樣式表或指令碼檔案收錄,且其他瀏覽器不受影響。可以這樣做:<script type

關於 Token,應該知道的十

敏感信息 you load 冒充 tro hex 服務器 xhr cors 轉自:http://ju.outofmemory.cn/entry/134189 原文是一篇很好的講述 Token 在 Web 應用中使用的文章,而這是我和 Special 合作翻譯的譯文。 1.

關於 Java 知道10

類型提升 有用 like 實例 對象 情況 return keyword for 作為 Java 書呆子,比起實用技能,我們會對介紹 Java 和 JVM 的概念細節更感興趣。因此我想推薦 Lukas Eder 在 jooq.org 發表的原創作品給大家。 你是從很早開始就

作為一個新晉測試經理,在軟體測試計劃之前必須知道10

有人喜歡創造世界,他們做了開發者;有的人喜歡開發者,他們做了測試員。什麼是軟體測試?軟體測試就是一場本該在使用者面前發生的災難提前在自己面前發生了,這會讓他們生出一種救世主的感覺,拯救了使用者,也就拯救者這個軟體,避免了他們被解除安裝的命運。 軟體測試在提供滿足業務和技術要求的軟體產品中起著至關重要的作用。

關於NoSQL必須知道的九

作者:周思遠 連結:https://www.zhihu.com/question/20059632/answer/14981332 來源:知乎When to use MongoDB or other document oriented database systems?http://stackoverflow

關於IPv6需要知道10

在過去的幾年裡,IPv6已經逐漸慢慢地成為主流,但許多IT專業人士在面臨IPv6時還手足無措,的確,IPv6和IPv4存在很大的不同,本文為此而寫,希望能幫助你消除IPv6恐懼症。 1、IPv6地址是128位十六進位制數 IPv4地址是有4個數字位組(總共32位)組成的,IP

關於 JDK 9 中的 JShell,應該瞭解的 10

開發十年,就只剩下這套架構體系了! >>>   

去韓國之前要知道10

第一次去韓國旅行?利用這些有用的旅行技巧,充分利用韓國文化。   韓語字母表就像A -B-C一樣容易。 韓語(翻譯為“偉大的指令碼”)是韓國語的官方字母。與漢語不同,它是語音的,意思是它是由可以被髮音的字母組成,而不是必須記住的字元。乍一看,指令碼可能會被理解

django 資料庫遷移(migrate)應該知道的一些

命令 首先資料庫遷移的兩大命令: python manage.py makemigrations & python manage.py migrate 前者是將model層轉為遷移檔案migration,後者將新版本的遷移檔案執行,更新資料庫。

使用Docker時應該避免這10

容器可以解決很多問題,並且具有諸多優勢,當你投身其中時便會發現其奧妙所在。

Rxjava關於Disposable應該知道

相關文章:Rxjava關於Disposable你應該知道的事 Composite  [kəmˈpɑ:zət]  adj.混合成的,綜合成的;[建]綜合式的;[數]可分解的;[植]菊科的 n.合成物,混合物,複合材料;[植]菊科植物 disposable&nb

Android Notification 應該知道

1. 介紹 Notification :通知是可以顯示到你的應用程式的正常UI的使用者之外的訊息。當您告訴系統發出通知時,它首先會在通知區域顯示為一個圖示。要檢視通知的詳細資訊,使用者開啟通知抽屜。通知區域和通知抽屜都是使用者可以隨時檢視的系統控制區域。