該如何使用SQL資料庫、NoSQL資料庫還是兩者都用?網路圈2019-04-13 16:05:01

我們知道,技術是會一直髮展的,而我們常說的關係型資料庫、NoSQL其實都是技術發展的產物,都是為了讓我們更好的解決問題而生的。

在當下的專案開發時,我們的技術選型也不像以前那樣單一

,對於存在資料落地場景的,那像MySQL/Oracle/SQL Server這類的資料庫則是必須的。而我們發現,

NoSQL使用與否都不會影響專案功能

,有些專案會使用,有些則沒有使用。

所以有不少朋友會有這方面的質疑,關係型資料庫和NoSQL是單獨使用還是搭配使用?或者什麼場景下要使用關係型資料庫,什麼時候又該使用NoSQL呢?在這裡結合我的實際經驗談下我的看法以供大家參考:

1、

資料庫是資料落地的基礎,是必須的

但凡我們的專案中存在資料,而且這些資料需要儲存,不管資料量的大小,資料庫都是必須要使用的。

試想一下,如果沒有資料庫軟體,我們的資料如何有效存取?

2、

NoSQL推薦使用

在這裡說下,NoSQL不能單從字面上理解為“沒有SQL、不是SQL、不需要SQL”,NoSQL的含義是Not Only SQL,不僅僅是SQL。

NoSQL是一類非關係型資料庫的統稱,最常用的就是:Redis、Memcached了

。像我們最常使用的Redis是一款記憶體型K/V資料庫,它具備以下優點:

記憶體型資料庫存入、讀取資料都比從硬碟中讀取要快,效能很高

。同時它支援資料持久化,可以將記憶體中的資料落地到硬碟中;

Redis的資料型別豐富

,不光光當成“快取”來使用,還可以當成佇列來使用;

站在架構角度去說,我們建議專案採用NoSQL+關係型資料庫這種形式來部署。

資料庫相對於NoSQL來說還是偏重了,

特別是在高併發專案中,資料庫的I/O開銷和查詢效率都是很大的

。當NoSQL推出時,

我們一般將熱點資料也存入NoSQL,下次查詢時直接從NoSQL中查詢這樣就減少了資料庫的壓力,加快了系統的處理響應速度。

以上就是我的觀點,對於這個問題大家是怎麼看待的呢?歡迎在下方評論區交流 ~ 我是科技領域創作者,十年網際網路從業經驗,歡迎關注我瞭解更多科技知識!

該如何使用SQL資料庫、NoSQL資料庫還是兩者都用?三石科技觀察2018-03-16 11:03:48

首先明確一點,NoSQL不是Not SQL,而是Not Only SQL,兩者都是處理資料的,但是應用環境還是有比較大的區別的。

首先,SQL一般用來處理關係型資料,資料也都是結構化儲存的,比如我們建立一個表,那麼這個表裡的所有行的欄位都是一樣的,當然,現在不少SQL資料庫也支援一些非結構化資料了,比如XML、Json等,不過,原則上,我們還是把SQL劃入結構化儲存的範疇。

NoSql一般用來處理非結構化的資料,資料量一般是超級大的,動輒幾億條甚至幾十上百億條。資料的每一行(假如有這個概念的話)都可以有不同的列,儲存格式也不一樣,有的是鍵值對、有的json、有的列儲存;現在流行的有Redis、Mongodb、Cassandra等十幾種,每種資料庫都各有千秋,其中最特殊的是Mongodb,這貨是最像關係型資料庫的非關係型資料庫,應用範圍很廣,深受傳統關係型資料庫轉到非關係型資料庫使用者的喜愛。

兩者特點總結如下:

RDBMS

高度組織化結構化資料

結構化查詢語言(SQL)

資料和關係都儲存在單獨的表中。

資料操縱語言,資料定義語言

嚴格的一致性- 基礎事務

NoSQL

代表著不僅僅是SQL

沒有宣告性查詢語言

沒有預定義的模式

鍵 - 值對儲存,列儲存,文件儲存,圖形資料庫

最終一致性,而非ACID屬性

非結構化和不可預知的資料

CAP定理

高效能,高可用性和可伸縮性

總之,各有特點,需要根據具體的業務情況來選擇,也是可以並用的。