主要分析了關係型資料庫和非關係型資料庫進行了比較。
關係型資料庫:
書中的解釋是:在實體以及實體間的聯絡用關係來表示,在乙個給定的應用領域中,所有關係的集合構成乙個關聯式資料庫。關聯式資料庫的值是這些關係模式的某乙個時刻對應的關係的集合,通常稱為關聯式資料庫。
關係型資料庫以行和列的二元形式儲存資料。
常見的有mysql,sql server,oracle,還有db2,access(我只了解mysql,sql server,所以很多還在不斷地學習中)
關係型資料庫通常包含下列元件:
客戶端應用程式(client)
資料庫伺服器(server)
資料庫(database)
特點基於單一關係模型,結構化儲存,有完整性約束 通過二維表建立資料間的聯絡 採用結構化查詢語言進行資料讀寫 操作儲存資料的一致性(事務處理)
優點保持資料的一致性。由於高併發,資料同步需要採用鎖來保證一致性 資料更新的開銷很小 可以進行join等複雜查詢 sql語言使得運算元據庫方便 易於維護:豐富的完整性(實體完整性、參照完整性和使用者定義的完整性),減低了資料冗餘和資料不一致的概率
缺點為了維護一致性就會使讀寫效能變差; 固定的表結構,不適合為有資料更新的表做索引或表結構變更; 不適用高併發讀寫需求,讀寫效能不足; 不適用海量資料的寫入處理; 為保證資料一致性,需要加鎖,影響併發操作,開銷大; 涉及聯表查詢會變得複雜和慢。
非關係型資料庫
又稱為nosql(not only sql,即不僅僅是sql)。
採用key-value的方式儲存資料,即無關聯(no relational)。
典型的nosql資料庫有
臨時性鍵值儲存(memcached,redis) 永久性鍵值儲存(roma、redis) 面向文件的資料庫(mongodb) 面向列的資料庫(cassandra,hbase)
鍵值儲存
資料以鍵值形式儲存的,只能通過鍵的完全一致查詢獲取資料,根據資料的儲存方式可分為臨時性、永久性和兩者兼具。
(1)臨時性——memcached
資料有可能丟失 在記憶體中儲存資料(memcached把所有資料都儲存在記憶體中) 儲存和讀取速度非常快
(2)永久性
資料不會丟失 在硬碟上儲存資料 儲存和讀取處理速度較快(但無法與memcached相比)
(3)兩者兼備——redis
同時在記憶體和硬碟上儲存資料 可以進行非常快速的儲存和讀取處理 儲存在硬碟上的資料不會消失(可以恢復) 適合於處理陣列型別的資料
面向文件的資料庫
mongodb、couch db屬於這種型別。
(1)不定義表結構
(2)可以使用複雜的查詢條件
面向列的資料庫
cassandra、hbae、hypertable屬於這種型別。
普通的關係型資料庫是以行為單位儲存資料,以行為單位的讀入處理,比如特定條件資料的獲取。
因此,關係型資料庫也被稱為面向行的資料庫。相反,面向列的資料庫是以列為單位儲存資料的,
擅長以列為單位讀入資料。
特性使用鍵值key-value儲存資料; 分布式 一般不支援acid特性 非關係型資料庫嚴格上來說不是一種資料庫,是一種資料結構化儲存方法的集合,每個資料都可以有不同的結構;
優點無需經過sql層的解析,讀寫效能高; 基於鍵值對,資料沒有耦合性,易於擴充套件和查詢; 儲存資料的格式:key-val形式、文件形式、形式等等,而關係型資料庫則支援基礎型別; 降低了一致性的要求,查詢速度很快 可以處理海量資料,可執行在便宜的pc伺服器集群上,而
缺點不提供sql支援; 無事務處理,附加功能表和報表等。
關係型資料庫和非關係型資料庫對比
1.關係型資料庫 關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間...
關係型資料與非關係型資料庫
關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個...
關係型資料庫與非關係型資料庫
關係型資料庫與非關係型資料庫的區別 非關係型資料庫的優勢 1.效能 nosql是基於鍵值對的,可以想象成表中的主鍵和值的對應關係,而且不需要經過sql層的解析,所以效能非常高。2.可擴充套件性 同樣也是因為基於鍵值對,資料之間沒有耦合性,所以非常容易水平擴充套件。關係型資料庫的優勢 1.複雜查詢 可...