nosql特點:1、靈活的可延伸性;nosql去掉了關聯式資料庫的關係型特性,資料之間無關係,很簡單就能夠擴充套件。2、靈活的資料模型;NoSQL採用鍵/值、列族等非關係模型,允許在一個資料元素裡儲存不同型別的資料。3、NoSQL可以憑藉自身良好的橫向擴充套件能力,充分自由利用雲端計算基礎設施,很好地融人到雲端計算環境中。4、nosql有著非常高的讀寫效能,特別是在巨量資料量之下。5、高可用。
千萬級資料並行如何處理?進入學習
本教學操作環境:windows7系統、Dell G3電腦。
NoSQL是一種不同於關聯式資料庫的資料庫管理系統設計方式,是對非關係型資料庫的統稱,它所採用的資料模型並非傳統關聯式資料庫的關係模型,而是類似鍵/值、列族、檔案等非關係模型。NoSQL資料庫沒有固定的表結構,通常也不存在連線操作,也沒有嚴格遵守ACID約束。因此,與關聯式資料庫相比,NoSQL具有靈活的水平可延伸性,可以支援海量資料儲存。
什麼是ACID?
(1)靈活的可延伸性
傳統的關係型資料庫由於自身設計機理的原因,通常很難實現「橫向擴充套件」,在面對資料庫負載大規模增加時,往往需要通過升級硬體來實現「縱向擴充套件」。NoSQL資料庫在設計之初就是為了滿足「橫向擴充套件」的需求,因此天生具備良好的水平擴充套件能力。
(2)靈活的資料模型
關聯式資料庫具有規範的定義,遵守各種嚴格的約束條件。這種做法雖然保證了業務系統對資料一致性的需求,但是過於死板的資料模型,也意味著無法滿足各種新興的業務需求。相反,NoSQL資料庫採用鍵/值、列族等非關係模型,允許在一個資料元素裡儲存不同型別的資料。
(3)與雲端計算緊密融合
雲端計算具有很好的水平擴充套件能力,可以根據資源使用情況進行自由伸縮,各種資源可以動態加人或退出,NoSQL資料庫可以憑藉自身良好的橫向擴充套件能力,充分自由利用雲端計算基礎設施,很好地融人到雲端計算環境中,構建基於NoSQL的雲資料庫服務。
(4)巨量資料量,高效能
nosql資料庫都有著非常高的讀寫效能,特別是在巨量資料量之下,一樣也表現的非常的優秀,這主要得益於它的無關係性,資料庫的結構簡單。
通常的nosql使用Query Cache。
nosql的Cache是記錄級的,是一種細粒度的Cache,所以說,nosql從這個方面來說的話,效能就要高了很多了。
(5)高可用
高可用也是nosql很明顯的一個特點,nosql在不太影響效能的情況之下,就能夠非常方便的實現高可用的架構,典型的例如:Cassandra、HBase模型,通過模型的話也可以實現高可用。
1、關聯式資料庫已經無法滿足Web2.0的需求。主要表現在以下幾個方面:
(1)無法滿足海量資料的管理需求
對於上述網站而言,很快就可以產生超過10億條的記錄,對於關聯式資料庫來說,在一張10億條記錄的表裡進行SQL查詢,效率極其低下。
(2)無法滿足資料高並行的需求
(3)無法滿足高可延伸性和高可用性的需求
2、關聯式資料庫的關鍵特性在Web 2.0時代成為「雞肋」
關聯式資料庫的關鍵特性包括完善的事務機制和高效的查詢機制。但是,關聯式資料庫引以為傲的兩個關鍵特性,到了Web2.0時代卻成了雞肋,主要表現在以下幾個方面:
(1) Web 2.0網站系統通常不要求嚴格的資料庫事務
對於許多Web 2.0網站而言,資料庫事務已經不是那麼重要。資料庫事務通常有一套複雜的實現機制來保證資料庫一致性,需要大量系統開銷,對於包含大量頻繁實時讀寫請求的Web 2.0網站而言,實現事務的代價是難以承受的。
(2)Web 2.0並不要求嚴格的讀寫實時性
對於關聯式資料庫而言,一旦有一條資料記錄成功插人資料庫中,就可以立即被查詢。
對於Web 2.0而言,沒有這種實時讀寫需求。
(3)Web 2.0通常不包含大量複雜的SQL查詢
複雜的SQL查詢通常包含多表連線操作。但是,Web 2.0網站在設計時就已經儘量減少甚至避免這類操作,通常只採用單表的主鍵查詢,因此關聯式資料庫的查詢優化機制在Web 2.0中也就難以有所作為。
RDBMS:關聯式資料庫
NoSQL與關聯式資料庫比較 小結:
(1)關聯式資料庫
優勢:以完善的關係代數理論作為基礎,有嚴格的標準,支援事務ACID四性,藉助索引機制可以實現高效的查詢,技術成熟,有專業公司的技術支援
劣勢:可延伸性較差,無法較好支援海量資料儲存,資料模型過於死板、無法較好支援Web2.0應用,事務機制影響了系統的整體效能等
(2)NoSQL資料庫
優勢:可以支援超大規模資料儲存,靈活的資料模型可以很好地支援Web2.0應用,具有強大的橫向擴充套件能力等
劣勢:缺乏數學理論基礎,複雜查詢效能不高,大都不能實現事務強一致性,很難實現資料完整性,技術尚不成熟,缺乏專業團隊的技術支援,維護較困難等
(3)關聯式資料庫和NoSQL資料庫各有優缺點,彼此無法取代
關聯式資料庫應用場景:電信、銀行等領域的關鍵業務系統,需要保證強事務一致性
NoSQL資料庫應用場景:網際網路企業、傳統企業的非關鍵業務(比如資料分析)
採用混合架構
NoSQL資料庫雖然數量眾多,但是,歸結起來,典型的NoSQL資料庫通常包括鍵值資料庫、列族資料庫、檔案資料庫和圖形資料庫
1.鍵值資料庫
鍵值資料庫(Key-Value Database) 的表中有一個特定的Key和一個指標指向特定的Value。Key可以用來定位Value,即儲存和檢索具體的Value。Value對資料庫而言是透明不可見的,不能對Value進行索引和查詢,只能通過Key進行查詢。Value可以用來儲存任意型別的資料,包括整型、字元型、陣列、物件等。
應用場景:一個面向對談的應用程式(如 Web 應用程式)在使用者登入時啟動對談,並保持活動狀態直到使用者登出或對談超時。在此期間,應用程式將所有與對談相關的資料儲存在主記憶體或資料庫中。對談資料可能包括使用者資料資訊、訊息、個性化資料和主題、建議、有針對性的促銷和折扣。每個使用者對談具有唯一的識別符號。除了主鍵之外,任何其他鍵都無法查詢對談資料,因此快速鍵值儲存更適合於對談資料。一般來說,鍵值資料庫所提供的每頁開銷可能比關聯式資料庫要小。
2.列族資料庫
3.檔案資料庫
4.圖形資料庫
5.不同型別資料庫比較分析
所謂的CAP指的是:
CAP理論告訴我們,一個分散式系統不可能同時滿足一致性、可用性和分割區容忍性這三個需求,最多隻能同時滿足其中兩個,正所謂「魚和熊掌不可兼得」。
當處理CAP的問題時,可以有幾個明顯的選擇:
CA:也就是強調一致性(C)和可用性(A),放棄分割區容忍性(P),最簡單的做法是把所有與事務相關的內容都放到同一臺機器上。很顯然,這種做法會嚴重影響系統的可延伸性。傳統的關聯式資料庫(MySQL、SQL Server和PostgreSQL),都採用了這種設計原則,因此,擴充套件性都比較差
CP:也就是強調一致性(C)和分割區容忍性(P),放棄可用性(A),當出現網路分割區的情況時,受影響的服務需要等待資料一致,因此在等待期間就無法對外提供服務
AP:也就是強調可用性(A)和分割區容忍性(P),放棄一致性(C),允許系統返回不一致的資料
BASE
前面說到ACID ,現在淺談一下BASE(Basically Availble, Soft-state, Eventual consistency)
ACID | BASE |
原子性(Atomicity) | 基本可用(Basically Available) |
一致性(Consistency) | 軟狀態/柔性事務(Soft state) |
隔離性(Isolation) | 最終一致性 (Eventual consistency) |
永續性 (Durable) |
BASE的基本含義是基本可用(Basically Availble)、軟狀態(Soft-state)和最終一致性(Eventual consistency):
基本可用,是指一個分散式系統的一部分發生問題變得不可用時,其他部分仍然可以正常使用,也就是允許分割區失敗的情形出現
「軟狀態(soft-state)」是與「硬狀態(hard-state)」相對應的一種提法。資料庫儲存的資料是「硬狀態」時,可以保證資料一致性,即保證資料一直是正確的。「軟狀態」是指狀態可以有一段時間不同步,具有一定的滯後性
最終一致性
一致性的型別包括強一致性和弱一致性,二者的主要區別在於高並行的資料存取操作下,後續操作是否能夠獲取最新的資料。對於強一致性而言,當執行完一次更新操作後,後續的其他讀操作就可以保證讀到更新後的最新資料;反之,如果不能保證後續存取讀到的都是更新後的最新資料,那麼就是弱一致性。而最終一致性只不過是弱一致性的一種特例,允許後續的存取操作可以暫時讀不到更新後的資料,但是經過一段時間之後,必須最終讀到更新後的資料。
更多程式設計相關知識,請存取:!!
以上就是nosql資料庫的特點是什麼的詳細內容,更多請關注TW511.COM其它相關文章!