SQL是什么?、NoSQL又是什么?業務系統如何數據庫技術選型呢?
來源:北大青鳥總部
2020年09月07日 13:57
摘要:
SQL是什么?、NoSQL又是什么?業務系統如何數據庫技術選型呢?
隨著云計算、大數據、物聯網時代的到來,越來越多的網民涌入互聯網,越來越多的應用系統需要支撐海量數據存儲,還需要隨著業務需求滿足高并發、高可靠、高擴展性等要求,傳統的關系型數據庫已經不能完全滿足需求了,因此NoSQL應運而生。
那么 SQL是什么 ?、 NoSQL又是什么 ? 業務系統如何數據庫技術選型呢 ?
NoSQL!= NO SQL,而是NotOnlySQL,作為關系型數據庫的補充而出現。關系型數據庫即采用了關系模型來組織的數據庫,簡單來說,就是二維表格模型,包含關系(表名)、元組(二維表中的一行)、屬性(二維表中的一列)、域(屬性的取值范圍)、關鍵字(唯一能標識元組的屬性)、關系模式(表結構,對關系的描述)等概念。以一個用戶信息表來說,用戶信息表就是整個關系,元組就是姓名、性別、年齡、電話、地域組成的一行記錄,屬性則是單獨的地域列、年齡列等,域就是地域是中國全省市等,關鍵字就是用戶ID、能唯一標識這個用戶,關系模式就是這整個表,包含姓名、性別、年齡、電話、地域屬性。
對于 關系型數據庫 來說,一直非常流行的原因有如下四個:1、強事務一致性,數據庫的ACID(原子性、一致性、隔離性、持久性)保障了所有記錄的數據全是準確的,對于早期互聯網來說,大家都不完全信任看不到摸不著的東西,所以這個特點非常重要;
3、使用方便,通用的sql語言使得操作關系型數據庫非常方便;
4、容易維護,在設計的時候采用了實體完整性、參照完整性等理念,減少了數據冗余和數據不一致。常用的關系型數據庫有Mysql、Oracle等。
然而隨著互聯網海量數據的增加,關系型數據庫也產生了 瓶頸 ,具體表現如下:
1、無法應對高并發的讀寫請求,關系型數據庫是以行結構來存儲的,比如我們想獲取某個地域的用戶名單,需要按行讀取,再獲取其中的用戶名字這一屬性,對于磁盤的IO消耗非常大;
2、無法彈性伸縮,關系型數據庫無法像webserver那樣簡單的通過增加更多的硬件和服務節點來擴展性能,對于數據庫海量劇增的今天、服務需要24小時提供的企業來說,這非常難受;
3、不再需要事務強一致性、讀寫實時性,早期這是關系型數據庫的優點,而隨著互聯網業務覆蓋范圍的廣泛,用戶可以接受一定的延遲、一定的錯誤。
因此 NoSQL關系型數據庫 出現了,作為關系型數據庫的補充,再根據互聯網時代的需求不同,可以分為:
1、支持高性能并發讀寫的Key-Value數據庫,如Redis;
2、支持海量數據訪問的文檔數據庫,如MongoDB、CouchDB;
3、支持大數據存儲和分析的列式數據庫,如HBase;
4、支持全文搜索的搜索引擎數據庫,如ElasticSearch。