1. 程式人生 > >關系數據庫和NOSQL比較

關系數據庫和NOSQL比較

2個 二級 需求 主鍵 比較 無法 需要 strong ron

關系數據庫 NOSQL

功能:
NOSQL
功能簡單
基本只支持主鍵查詢,有的NOSQL支持非主鍵查詢(不過非主鍵查詢時,其性能也很慢),很少有NOSQL支持二級索引
不支持關聯查詢,如果有復雜關聯查詢的需求,NOSQL無法支持
不支持ACID,僅僅支持單記錄級的原子操作,如果有高一致性要求的場景,NOSQL很難支持
no schema 多條記錄可以有不同數量的字段,存儲方便
自身可以分片 擴容比較方便
關系數據庫
功能復雜
支持主鍵查詢和其他字段查詢(建立二級索引)
支持關聯查詢
支持ACID
有schema約束
自身無分片功能
性能:
NOSQL
性能比較高
關系數據庫
性能較低,因為其要保證事務一致性要做很多檢查、加鎖等操作,所以很慢,而且關聯查詢也很復雜,導致效率較低,經常有查詢業務不走索引,查詢速度也很慢,主要還是因為功能復雜導致的性能較低

總結


選擇NOSQL需要下面2個必要條件:
1.不需要ACID
2.不需要關聯查詢

如果需要以上兩個功能,無法選擇NOSQL

下面是選擇NOSQL的充分條件:
1表結構不固定 【因為關系數據庫表結構是固定的,這個是NOSQL唯一比關系數據庫好的能力點(筆者個人認知,因為NOSQL的高性能是犧牲一致性等功能為代價的)】

關系數據庫和NOSQL比較