1. 程式人生 > >為什麼使用Nosql:Nosql和SQL的區別

為什麼使用Nosql:Nosql和SQL的區別

1、概念:

 SQL(Structured Query Language)資料庫,指關係型資料庫。主要代表:SQL Server、Oracle、MySQL、PostgreSQL。

NoSQL(Not Only SQL)泛指非關係型資料庫。主要代表:MongoDB、Redis、CouchDB。

2、誕生原因:

 

隨著網際網路的不斷髮展,各型別的應用層出不窮,在這個雲端計算的時代,對技術提出了更多的需求,主要體現在這四個方面:

  ①低延遲的讀寫速度:應用快速的反應能極大地提升使用者的滿意度。

  ②海量的資料和流量:對於搜尋這樣大型應用而言,需要利用PB級別的資料和能應對百萬級的流量。

  ③大規模叢集的管理:系統管理員希望分散式應用能更簡單的部署和管理。

  ④龐大運營成本的考量:IT經理們希望在硬體成本、軟體成本和人力成本能夠有大幅度地降低。

 

目前世界上主流的儲存系統大部分還是採用了關係型資料庫,其主要有以下優點:

①事務處理——保持資料的一致性。

②由於以標準化為前提,資料更新的開銷很小

③可以進行join等複雜查詢

 

雖然關係型資料庫已經在業界的資料儲存方面佔據了不可動搖的地位,但是由於其天生的幾個限制,使其很難滿足上面這幾個要求:

①擴充套件困難:由於存在類似join這要多表查詢機制,使得資料庫在擴充套件方面很艱難

②讀寫慢:這種情況主要發生在資料量達到一定規模時由於關係型資料庫的系統邏輯非常複雜,使得其非常容易發生死鎖等的併發問題,所以導致其讀寫速度下滑非常嚴重。

③成本高:企業級資料庫的License價格很驚人,並且隨著系統的規模而不斷上升。

④有限的支撐容量:現有關係型解決方案還無法支撐Google這樣海量的資料儲存。

 

2、NoSQL優缺點:

優點:

①簡單的擴充套件:典型例子是Cassandra,由於其架構是類似於經典的P2P,所以能通過輕鬆地新增新的節點來擴充套件這個叢集。

②快速的讀寫:主要例子有Redis,由於其邏輯簡單,而且純記憶體操作,使得其效能非常出色,單節點每秒可以處理超過10萬次讀寫操作。

③低廉的成本:這是大多數分散式資料庫共有的特點,因為主要都是開源軟體,沒有昂貴的License成本。

 

缺點:

①不提供對SQL的支援:如果不支援SQL這樣的工業標準,將會對使用者產生一定的學習和應用遷移成本。

②支援的特性不夠豐富:現有產品所提供的功能都比較有限,大多數NoSQL資料庫都不支援事務,也不像MSSQL Server和Oracle那樣能提供各種附加功能,比如BT和報表等。

③現有產品的不夠成熟:大多數產品都還處於初創期。

 

3、NoSQL使用場景

①資料庫表schema經常變化

②資料庫表字段是複雜資料型別

③高併發資料庫請求

④海量資料的分散式儲存。

 

4、NoSQL與SQL的區別:

SQL資料庫:

在使用之前需要定義表的一個模式

在表中儲存相關聯的資料

支援join多表查詢

提供事務

使用一個強宣告性語言查詢

提供足夠的支援,專業技能和工具

 

NoSQL資料庫:

將相關聯的資料儲存在類似JSON格式,名稱-值

可以儲存沒有指定格式的資料

保證更新一個文件,但不是多個文件

提供出色的效能和可伸縮性

使用JSON資料物件查詢