NoSql是什麼?

一、nosql的簡介

   Nosql的全稱是Not Only Sql,這個概念早起就有人提出,
而我們常用的都是關係型數據庫。就像我們常用的mysql,sqlserver一樣,
這些數據庫一般用來存儲重要信息,應對普通的業務是沒有問題的。
但是,隨着互聯網的高速發展,傳統的關係型數據庫在應付超大規模,
超大流量以及高併發的時候力不從心。而就在這個時候,Nosql得到的告訴的發展。


二、Nosql和關係型數據庫的區別
1.存儲方式

  關係型數據庫是表格式的,因此存儲在表的行和列中。他們之間很容易關聯協作存儲,
Nosql通常存儲在數據集中,就像文檔、鍵值對或者圖結構。

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數據庫的發展也卻能很好的處理這些大的數據
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章