nosql,指的是非關係型的資料庫。nosql有時也稱作not only sql的縮寫,是對不同於傳統的關係型資料庫的資料庫管理系統的統稱,它具有非關係型、分布式、不提供acid的資料庫設計模式等特徵。
nosql用於超大規模資料的儲存。(例如谷歌或facebook每天為他們的使用者收集萬億位元的資料)。這些型別的資料儲存不需要固定的模式,無需多餘操作就可以橫向擴充套件。
nosql是多變的。它最適合於具有不確定需求的資料。典型的使用場景是社交網路,客戶管理和網路分析系統。
1.關係型資料庫和非關係型資料庫
sql (structured query language) 資料庫,指關係型資料庫。主要代表:sql server,oracle,mysql等。
nosql(not only sql)泛指非關係型資料庫,主要代表:mongodb,redis等。
2.關係型資料庫適合儲存結構化資料
1)這些資料通常需要做結構化查詢,比如join,這時候,關係型資料庫就要勝出一籌
2)這些資料的規模、增長的速度通常是可以預期的
3)保證資料的事務性、一致性要求。
3.nosql適合儲存非結構化資料
1)這些資料通常用於模糊處理,如全文搜尋、機器學習
2)這些資料是海量的,而且增長的速度是難以預期的,
3)根據資料的特點,nosql資料庫通常具有無限(至少接近)伸縮性
4)按key獲取資料效率很高,但是對join或其他結構化查詢的支援就比較差
目前許多大型網際網路專案都會選用mysql(或任何關係型資料庫) + nosql的組合方案。
有四種常見的 nosql 資料庫型別:列式、文件、圖形和記憶體鍵值。
1.列式資料
顧名思義,是按列儲存資料的。最大的特點是方便儲存結構化和半結構化資料,方便做資料壓縮,對針對某一列或者某幾列的查詢有非常大的io優勢。
1)對應的nosql: hbase,bigtable等。
2)典型應用場景:按列儲存,針對某一列或者某幾列的查詢有非常大的io優勢。
3)優點:查詢速度快,可擴充套件性強,更容易進行分布式擴充套件。
4)缺點:功能相對侷限。
2.文件資料庫
旨在將半結構化資料儲存為文件,通常採用 json 或 xml 格式。與傳統關聯式資料庫不同的是,每個 nosql 文件的架構是不同的,可讓您更加靈活地整理和儲存應用程式資料並減少可選值所需的儲存。
1)對應的nosql:couchdb, mongodb
2)典型應用場景:儲存類似json格式的內容,可對某些字段建立索引功能,是最像關係型的資料庫。
3)優點:資料結構要求不嚴格,表結構可變,不需要像關係型資料庫一樣需要預先定義表結構。
4)缺點:查詢效能不高,而且缺乏統一的查詢語法。
3.圖形資料庫
可儲存頂點以及稱為邊緣的直接鏈路。圖形資料庫可以在 sql 和 nosql 資料庫上構建。頂點和邊緣可以擁有各自的相關屬性。
1)資料模型:圖結構
4)缺點:很多時候需要對整個圖做計算才能得出需要的資訊,而且這種結構不太好做分布式的集群方案。
4.記憶體鍵值儲存
可以通過key快速查詢到其value。一般來說,儲存不管value的格式,照單全收,是針對讀取密集型應用程式工作負載(例如社交網路、遊戲、**共享和 q&a 門戶)。記憶體快取可將重要資料儲存在記憶體中以實現低延遲訪問,從而提高應用程式效能。
1)對應的nosql:redis,memcached等
2)典型應用場景:內容快取,主要用於處理大量資料的高訪問負載,也用於一些日誌系統等等。
3)優點:查詢速度快。
4)缺點:資料無結構化,通常只被當作字串或者二進位制資料。
NoSQL和SQL的區別及使用場景
osql,指的是非關係型的資料庫。nosql有時也稱作not only sql的縮寫,是對不同於傳統的關係型資料庫的資料庫管理系統的統稱,它具有非關係型 分布式 不提供acid的資料庫設計模式等特徵。nosql用於超大規模資料的儲存。例如谷歌或facebook每天為他們的使用者收集萬億位元的資料 這...
BIO,NIO的區別,使用場景
bio,nio的區別,使用場景。一 什麼是io?i就是input,輸入,o就是output,輸出,合起來就是以流為基本的輸入輸出。二 傳統的io 傳統的伺服器端同步阻塞i o處理 也就是bio,blocking i o 當客戶端有請求到服務端的時候,服務端就會開啟乙個執行緒進行處理,當有多個請求進入...
SQL 和 NoSQL 的區別
sql structured query language 資料庫,指關係型資料庫。主要代表 sql server,oracle,mysql 開源 postgresql 開源 nosql not only sql 泛指非關係型資料庫。主要代表 mongodb,redis,couchdb。sql資料存...