更新時間:2023年10月24日09時34分 來源:傳智教育 瀏覽次數(shù):
一、數(shù)據(jù)存儲方式和NoSQL
互聯(lián)網(wǎng)時代各種數(shù)據(jù)存儲方式層出不窮,有傳統(tǒng)的關(guān)系型數(shù)據(jù)庫如:MySQL、Oracle等,;有全文檢索框架如:ElasticSearch、Solr;有NoSQL如:Cassandra、Redis
這些存儲方式的特點:
- 關(guān)系型數(shù)據(jù)庫:支持事務(wù),二級索引,SQL語句,支持主從架。
- 全文檢索:分布式,p2p架構(gòu),不支持事務(wù),采用倒排索引提供全文檢索。
- NoSQL:一般基于內(nèi)存,支持分布式,面向列,不支持SQL。
NoSQL,泛指非關(guān)系型的數(shù)據(jù)庫,NoSQL去掉關(guān)系數(shù)據(jù)庫的關(guān)系型特性,數(shù)據(jù)之間無關(guān)系,非常容易擴展。
NoSQL型數(shù)據(jù)庫一般包含一些共同特性:
- 易擴展
NoSQL數(shù)據(jù)庫種類繁多,但是一個共同的特點都是去掉關(guān)系數(shù)據(jù)庫的關(guān)系型特性。數(shù)據(jù)之間無關(guān)系,這樣就非常容易擴展,在架構(gòu)的層面上帶來了可擴展的能力。
- 大數(shù)據(jù)量,高性能
NoSQL數(shù)據(jù)庫都具有非常高的讀寫性能,尤其在大數(shù)據(jù)量下。一般MySQL使用Query Cache。NoSQL的Cache是記錄級的,是一種細粒度的Cache,所以NoSQL在這個層面上來說性能就要高很多。
- 靈活的數(shù)據(jù)模型
NoSQL無須事先為要存儲的數(shù)據(jù)建立字段,隨時可以存儲自定義的數(shù)據(jù)格式。而在關(guān)系數(shù)據(jù)庫里,增刪字段是一件非常麻煩的事情。
- 高可用
NoSQL在不太影響性能的情況,就可以方便地實現(xiàn)高可用的架構(gòu)。比如Cassandra、HBase模型,通過復制模型也能實現(xiàn)高可用。
這一類數(shù)據(jù)庫主要使用[哈希表],這個表中有一個特定的鍵和一個指針指向特定的數(shù)據(jù)。Key/value模型的優(yōu)勢在于簡單、易部署。代表為: Redis。
這類數(shù)據(jù)庫通常是用來應(yīng)對分布式存儲的海量數(shù)據(jù)。鍵仍然存在,但是它們的特點是指向了多個列。這些列是由列家族來安排的。如:Cassandra, HBase。
文檔型數(shù)據(jù)庫和第一種鍵值存儲相類似。該類型的數(shù)據(jù)模型是版本化的文檔,半結(jié)構(gòu)化的文檔以特定的格式存儲,比如JSON。文檔型數(shù)據(jù)庫可以看作是鍵值數(shù)據(jù)庫的升級版,允許之間嵌套鍵值,在處理網(wǎng)頁等復雜數(shù)據(jù)時,文檔型數(shù)據(jù)庫比傳統(tǒng)鍵值數(shù)據(jù)庫的查詢效率更高。如:CouchDB, MongoDb。
圖形結(jié)構(gòu)的數(shù)據(jù)庫同其他行列以及關(guān)系型數(shù)據(jù)庫不同,它是使用靈活的圖形模型,并且能夠擴展到多個服務(wù)器上。