數據分類
了解SQL和NoSQL之前,我們先了解下數據有幾種分類:結構化數據、非結構化數據、半結構化數據。結構化數據就是由行和列組成的,可以用二維表來存儲,非結構化數據比如文本、圖片、視頻音頻等;半結構化數據類似XML和JSON,有語義標記對記錄進行分割。
關系數據庫
關系數據庫存儲的就是結構化數據,,使用SQL進行操作,支持ACID特性。經過幾十年發展已非常成熟,但是關系數據庫也有缺點。
1、數據按行存儲,無法存儲數據結構,比如說列表。
2、數據按行存儲,即使只操作一列也需要將整行讀入內存,IO較高
3、表結構擴展不方便,表結構schema是固定的,修改需要執行DDL語句,修改期間可能導致鎖表
4、全文搜索功能弱
非關系數據庫
非關系數據庫也稱NoSQL數據庫,NoSQL = Not Only SQL,是對關系數據庫的一種補充。針對以上4個缺點,分別有4種不同非NoSQL數據庫
1、K-V存儲
K-V存儲以redis為代表,value可以是數據結構,比如string、hash、list、set、sorted set、bitmap。Redis數據基于內存,讀寫效率高,KV型數據,查詢速度快,時間復雜度O(1),但是Redis是不支持完整的ACID。所以Redis應用場景是讀大于寫,并且可以容忍數據丟失的。
2、列式存儲
列式存儲以HBase為代表,按照列來存儲,所以查詢的時候只有指定的列會被讀取,不會讀取所有的列,因為一列中數據大多都類似,所以有更高的壓縮率,節省存儲空間。列式存儲不適合頻繁更新多個列的場景,隨機寫的效率比較低。列式存儲適用于離線大數據分析和統計場景。
3、文檔存儲
文檔型代表就是MongoDB了,以JSON存儲數據解決表結構擴展不方便的情況。但是文檔存儲無法進行join,join需要多次操作,不支持事務操作,4.0版本支持了,但是沒有大量使用過。
4、全文搜索引擎
全文搜索引擎以ElasticSearch為代表,主要技術原理就是倒排索引來解決全文搜索的問題
總結

希望對大家有所幫助,有幫助記得點贊哦!可以關注下,后面持續分享技術文章,謝謝!