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#)無法滿足高可擴展性和高可用性的需求
##關係資料庫的關鍵功能在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指的是:
Tolerance of Network Partition
#):
分區容忍性,是指當出現網路分區的情況時(即係統中的一部分節點無法和其他節點進行通訊),分離的系統也能夠正常運作,也就是說,系統中任意資訊的遺失或失敗不會影響系統的繼續運作。
###### ###CAP######理論告訴我們,一個分散式系統不可能同時滿足一致性、可用性和分區容忍性這三個需求,最多只能同時滿足其中兩個,正所謂「魚和熊掌不可兼得」。 #####################當處理######CAP######的問題時,可以有幾個明顯的選擇:## ####CA:也就是強調一致性(C)和可用性(A),放棄分區容忍性(P),最簡單的做法是把所有與交易相關的內容都放到同一台機器上。很顯然,這種做法會嚴重影響系統的可擴展性。傳統的關聯式資料庫(MySQL、SQL Server和PostgreSQL),都採用了這種設計原則,因此,擴展性都比較差
#CP:也就是強調一致性(C)和分區容忍性(##P),放棄可用性(##A ),當出現網路分割區的情況時,受影響的服務需要等待資料一致,因此在等待期間就無法對外提供服務
:也就是強調可用性(##A)和分割區容忍性(P),放棄一致性(C),允許系統傳回不一致的資料
##BASE
前面說到ACID ,現在要淺談一下BASE(
##Basically Availble, Soft-state, Eventual consistency)
ACIDBASE |
原子性 |
Atomicity)#基本上可用 ( |
Basically Available) #一致性 |
Consistency)軟體狀態 / |
柔性交易 (Soft state) |
隔離性(#Isolation) |
最終一致性(#Eventual consistency) |
持久性(Durable) |
# BASE#的基本意義是基本上可用(Basically Availble)、軟狀態(S oft-state)和最終一致性(Eventual consistency):
基本上可用,是指一個分散式系統的一部分發生問題變得不可用時,其他部分仍然可以正常使用,也就是允許分割區失敗的情形出現
「軟狀態( soft-state)」是與「硬狀態(hard-state)」相對應的一種提法。資料庫保存的資料是「硬狀態」時,可以保證資料一致性,即確保資料一直是正確的。 「軟狀態」是指狀態可以有一段時間不同步,具有一定的滯後性
#最終一致性
一致性的類型包括強一致性與弱一致性,二者的主要差異在於高併發的資料存取操作下,後續操作是否能夠取得最新的資料。對於強一致性而言,當執行完一次更新操作後,後續的其他讀取操作就可以保證讀到更新後的最新數據;反之,如果不能保證後續訪問讀到的都是更新後的最新數據,那麼就是弱一致性。而最終一致性只不過是弱一致性的一種特例,允許後續的存取操作可以暫時讀不到更新後的數據,但是經過一段時間之後,必須最終讀到更新後的數據。
更多程式相關知識,請造訪:程式設計教學! !
以上是nosql資料庫的特點是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!