按照資料結構來組織,儲存和管理資料的倉庫。
是乙個長期儲存在計算機內的,有組織的,可共享的,統一管理的大量資料的集合。
採用了二維**關係模型
來組成資料的資料庫,乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個資料組織
關係型資料庫管理系統 rdbms
mysqloraclemssql
優點:<1,二維表結構,容易理解
<2,通用sql語言,使用方便
<3,支援acid(原子性,一致性,隔離性,永續性),可以維護資料一致性
<4,資料穩定,資料持久化到硬碟,支援海量資料儲存
<5,伺服器效能卓越,服務穩定
缺點:>1,高併發下io壓力大
資料按行儲存,即使只針對其中某一列進行運算,也會將整行資料從儲存裝置中讀入記憶體,導致io較高
>2,為維護索引付出的代價大
資料的新增,更新必然伴隨著所有二級索引的新增,更新。從而降低關係型資料庫的讀寫能力,索引越多讀寫能力越差
>3,為維護資料一致性付出的代價大
關係型資料庫在高併發下的能力是有瓶頸的,尤其是寫入/更新頻繁的情況下,出現瓶頸的結果就是資料庫cpu高,sql執行慢,客戶端報資料庫連線池不夠等錯誤
非關係型的,分布式,且一般不保證遵循acid原則的資料儲存系統
nosql(not only sql)是對關係型資料庫的一種補充,二者各有優勢,取長補短
優點:易擴充套件
nosql資料庫種類繁多,但是乙個共同的特點都是去掉關聯式資料庫的關係型特性。資料之間無關係,這樣就非常容易擴充套件。無形之間,在架構的層面上帶來了可擴充套件的能力。
大資料量,高效能
nosql資料庫都具有非常高的讀寫效能,尤其在大資料量下,同樣表現優秀。這得益於它的無關係性,資料庫的結構簡單。一般mysql使用query cache。nosql的cache是記錄級的,是一種細粒度的cache,所以nosql在這個層面上來說效能就要高很多。
靈活的資料模型
nosql無須事先為要儲存的資料建立字段,隨時可以儲存自定義的資料格式。而在關聯式資料庫裡,增刪欄位是一件非常麻煩的事情。如果是非常大資料量的表,增加字段簡直就是——個噩夢。這點在大資料量的web 2.0時代尤其明顯。
高可用nosql在不太影響效能的情況,就可以方便地實現高可用的架構。比如cassandra、hbase模型,通過複製模型也能實現高可用。
缺點:大多數nosql都不支援事務(redis支援,mongodb不支援)
大多都是初創產品,不夠成熟,和傳統資料庫幾十年的完善不可同日而語
不支援sql這樣的工業標準查詢,所以學習成本就比較高
nosql只能保證資料相對一致性,尤其是在資料同步的時候,主從伺服器的狀態是不一致的
kv型nosql
---- redis,memcache
以鍵值對形式儲存
• 資料基於記憶體,讀寫效率高
• kv型資料,時間複雜度為o(1),查詢速度快
• 查詢方式單一
• 無法支援海量資料儲存
• 儲存是基於記憶體的,會丟失資料
• 讀遠大於寫,讀取能力強
搜尋型nosql
---- elasticsearch
其誕生就是為了解決關係型資料庫全文搜尋能力較弱的問題 ,全文搜尋的原理是倒排索引
列式nosql
---- hbase
大資料時代最具代表性技術之一 以hbase為代表
文件型nosql
---- mongodb
將半結構化資料儲存為文件的一種nosql,通常以json或xml格式儲存資料,沒有schema,可隨意的儲存與讀取資料,解決關係型資料庫表結構擴充套件不方便的問題
分類examples舉例
典型應用場景
資料模型
優點缺點
鍵值(key-value)
tokyo cabinet/tyrant, redis, voldemort, oracle bdb
內容快取,主要用於處理大量資料的高訪問負載,也用於一些日誌系統等等。
key 指向 value 的鍵值對,通常用hash table來實現
查詢速度快
資料無結構化,通常只被當作字串或者二進位制資料
列儲存資料庫
cassandra, hbase, riak
分布式的檔案系統
以列簇式儲存,將同一列資料存在一起
查詢速度快,可擴充套件性強,更容易進行分布式擴充套件
功能相對侷限
文件型資料庫
couchdb, mongodb
web應用(與key-value類似,value是結構化的,不同的是資料庫能夠了解value的內容)
key-value對應的鍵值對,value為結構化資料
資料結構要求不嚴格,表結構可變,不需要像關係型資料庫一樣需要預先定義表結構
查詢效能不高,而且缺乏統一的查詢語法。
圖形(graph)資料庫
neo4j, infogrid, infinite graph
社交網路,推薦系統等。專注於構建關係圖譜
圖結構利用圖結構相關演算法。比如最短路徑定址,n度關係查詢等
很多時候需要對整個圖做計算才能得出需要的資訊,而且這種結構不太好做分布式的集群方案。
關係型資料與非關係型資料庫
關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個...
關係型資料庫與非關係型資料庫
關係型資料庫與非關係型資料庫的區別 非關係型資料庫的優勢 1.效能 nosql是基於鍵值對的,可以想象成表中的主鍵和值的對應關係,而且不需要經過sql層的解析,所以效能非常高。2.可擴充套件性 同樣也是因為基於鍵值對,資料之間沒有耦合性,所以非常容易水平擴充套件。關係型資料庫的優勢 1.複雜查詢 可...
關係型資料庫與非關係型資料庫
關係型資料庫最典型的資料結構是表,由二維表及其之間的聯絡所組成的乙個資料組織 優點 1 易於維護 都是使用表結構,格式一致 2 使用方便 sql語言通用,可用於複雜查詢 3 複雜操作 支援sql,可用於乙個表以及多個表之間非常複雜的查詢。缺點 1 讀寫效能比較差,尤其是海量資料的高效率讀寫 2 固定...