跟大家講解下有關nosql是什么,相信小伙伴們對這個話題應該也很關注吧,現在就為小伙伴們說說nosql是什么,小編也收集到了有關nosql是什么的相關資料,希望大家看到了會喜歡。
nosql是什么
一、nosql的簡介
NoSQL,指的是非關系型的數據庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同于傳統的關系型數據庫的數據庫管理系統的統稱。NoSQL用于超大規模數據的存儲。這些類型的數據存儲不需要固定的模式,無需多余操作就可以橫向擴展。
二、Nosql和關系型數據庫的區別
1.存儲方式
關系型數據庫是表格式的,因此存儲在表的行和列中。他們之間很容易關聯協作存儲,通常存儲在數據集中,就像文檔、鍵值對或者圖結構。
2.存儲結構
關系型數據庫對應的是結構化數據,數據表都預先定義了結構(列的定義),結構描述了數據的形式和內容。這一點對數據建模至關重要,雖然預定義結構帶來了可靠性和穩定性,但是修改這些數據比較困難。而Nosql數據庫基于動態結構,使用與非結構化數據。因為Nosql數據庫是動態結構,可以很容易適應數據類型和結構的變化。
3.存儲規范
關系型數據庫的數據存儲為了更高的規范性,把數據分割為最小的關系表以避免重復,獲得精簡的空間利用。雖然管理起來很清晰,但是單個操作設計到多張表的時候,數據管理就顯得有點麻煩。而Nosql數據存儲在平面數據集中,數據經常可能會重復。單個數據庫很少被分隔開,而是存儲成了一個整體,這樣整塊數據更加便于讀寫。
4.存儲擴展
這可能是兩者之間最大的區別,關系型數據庫是縱向擴展,也就是說想要提高處理能力,要使用速度更快的計算機。因為數據存儲在關系表中,操作的性能瓶頸可能涉及到多個表,需要通過提升計算機性能來克服。雖然有很大的擴展空間,但是最終會達到縱向擴展的上限。而Nosql數據庫是橫向擴展的,它的存儲天然就是分布式的,可以通過給資源池添加更多的普通數據庫服務器來分擔負載。
5.查詢方式
關系型數據庫通過結構化查詢語言來操作數據庫(就是我們通常說的SQL)。SQL支持數據庫CURD操作的功能非常強大,是業界的標準用法。而Nosql查詢以塊為單元操作數據,使用的是非結構化查詢語言(UnQl),它是沒有標準的。關系型數據庫表中主鍵的概念對應Nosql中存儲文檔的ID。關系型數據庫使用預定義優化方式(比如索引)來加快查詢操作,而Nosql更簡單更精確的數據訪問模式。
6.事務
關系型數據庫遵循ACID規則(原子性(Atomicity)、一致性(Consistency)、(基本可用(Basically Availble)、軟/柔性事務(Soft-state )、最終一致性(Eventual Consistency))。由于關系型數據庫的數據強一致性,所以對事務的支持很好。關系型數據庫支持對事務原子性細粒度控制,并且易于回滾事務。而Nosql數據庫是在CAP(一致性、可用性、分區容忍度)中任選兩項,因為基于節點的分布式系統中,很難全部滿足,所以對事務的支持不是很好,雖然也可以使用事務,但是并不是Nosql的閃光點。
7.性能
關系型數據庫為了維護數據的一致性付出了巨大的代價,讀寫性能比較差。
而Nosql存儲的格式都是key-value類型的,并且存儲在內存中,非常容易存儲,
而且對于數據的 一致性是 弱要求。Nosql無需sql的解析,提高了讀寫性能。
8.授權方式
關系型數據庫通常有SQL Server,Mysql,Oracle。主流的Nosql數據庫有redis,成本較大,而Nosql數據庫通常都是開源的。
三、為什么使用NoSQL ?
今天我們可以通過第三方平臺(如:Google,Facebook等)可以很容易的訪問和抓取數據。用戶的個人信息,社交網絡,地理位置,用戶生成的數據和用戶操作日志已經成倍的增加。我們如果要對這些用戶數據進行挖掘,那SQL數據庫已經不適合這些應用了,NoSQL數據庫的發展也卻能很好的處理這些大的數據。
以上就是nosql是什么的詳細內容,更多請關注php中文網其它相關文章!
來源:php中文網