【必知必會】面對不同的業務場景,如何選擇NOSQL和SQL?

赤裸裸的浪費


NoSQL和SQL看上去很像,以至於不少人把兩者混為一談,其實這兩者完全是兩類東西,雖然在開發中經常看見兩者配合使用,但兩者的定位不同,服務場景也是不同的。

隨著NoSQL數據庫的興起,不少人覺得未來NoSQL會取代傳統的數據庫,也有人認為NoSQL和SQL最終會融合在一起。未來的事情不好猜測,但在這裡我們可以分析下兩者的定位。

什麼是NoSQL?什麼是SQL?

1、NoSQL不能光看字面意思,不能理解為“沒有SQL”,其實它是“Not Only SQL”的簡稱,它是非關係型數據庫的統稱,它的特點就是:非關係型、半結構化、分佈式、無ACID特性。

NoSQL代表有:Redis、MemCache、MongoDB等。

2、SQL本意是指結構化查詢語句,它其實是一種特殊的編程語言,是用於關係型數據庫的查詢語言。只不過現在很多不嚴謹的開發者將SQL視為數據庫的統稱。

SQL數據庫代表有:MySQL、Orache、SQL Server。

NoSQL與SQL數據庫的各自特點

1、NoSQL數據庫

  • 存儲數據不需要特定的模式;

  • 使用類JSON格式的文檔(半結構化)來存儲鍵值對;

  • 沒有 原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)這4種特性。

NoSQL數據庫更適合存儲非結構化數據、不確定需求的數據,數據是碎片化的。數據一般是存儲在內存中的(個別的支持持久化到硬盤上),操作速度極快。

2、SQL數據庫

  • 存儲數據前需明確定義字段模式;

  • 使用表來存儲結構化的數據;

  • 保證數據的事務性、一致性要求。

關係型數據庫更適合存儲結構化數據、數據要求嚴謹,數據模式是固定不變的。數據是存儲在硬盤上的,數據量過大時操作速度會受到影響。

NoSQL與SQL數據庫如何選擇?

在開頭時就提及NoSQL與SQL的爭議,我更傾向於說未來NoSQL和SQL可能會融合在一起。在如今的技術架構中我們通常也都是這樣去搭配使用的:SQL數據庫作為最終數據落地存儲方案,而NoSQL則用來緩存熱點數據,提升數據查詢和操作速度。


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

網絡圈


作為一名IT從業人員,我來回答下這個問題。

NOSQL是非關係型數據庫,通常是指沒有ACID的特性,沒有表結構,非關係型的,

SQL是大家所熟知的數據庫,由表構成,數據嚴謹。

NOSQL的代表數據庫是Redis、mongdb。Redis大家都不陌生,通常作為一種熱緩存存在於項目過程中,Redis中是按照鍵值對進行存儲數據的,方便讀取與修改。緩存的目的就是用於減少與數據庫之間的交互過程。而Mongdb的話是一種Bson文檔存儲格式,mongdb存儲的時候插入刪除修改操作可以快速大批量的完成,通常作為接口間的緩存。

NOSQL的業務場景一般都是沒有嚴謹的表結構,只是方便數據的插入修改,後期對數據存儲的表可能會進行修改。

而sql的代表數據庫就是MySQL、oracle等大型應用型數據庫,這一類數據庫都有嚴謹的表結構,一經生成,修改表是很困難的,使用的業務場景就是大型數據存儲,保證事務一致性的進行。數據模式固定不變,數據庫更穩定。



希望回答對您有所幫助。

我本人從事多年互聯網Java開發,感興趣的朋友可以關注私聊,共同努力,共同進步。

謝謝!


分享到:


相關文章: