市面上資料庫種類那麼多,如何選擇

2021-10-07 06:39:00 字數 3725 閱讀 6125

​ 技術真的是日新月異,關係型資料庫在資料庫儲存界稱霸這麼多年後,市面上各種資料庫如雨後春筍蓬勃發展,似乎關係型資料庫也地位不保,我前段時間和同事聊天,聽到他們經常說的現在市面上的nosql資料庫完全可以替代現有的關係型資料庫,可是事實真的如此嗎,我們一起就市面上現在比較流行的各類資料庫,做乙個對比:

​ 真正業務開發中,絕對不是拍腦袋定下來使用那種資料庫就使用那種資料庫的,選擇某種或者某幾種資料庫配合使用,一定是對改資料庫有乙個比較全面的認識。

​ 關係型資料警告過這麼多年的披荊斬棘,到現在依舊能夠屹立不倒,他的優勢一定是特別的顯眼,關係型資料庫優點表現在:

強大的sql能力,應對各類複雜查詢有時候乙個join就搞定了。支援完整的acid屬性,這個屬性其實也是資料庫能夠大行其道的根本原因。容易理解,資料庫的結構為二維**結構,最符合和貼近邏輯社會的概念。

雖然關係型資料庫擁有這麼多的優勢,但是為什麼它的地位在有時也會被撼動呢?關係型資料擁有如此強大的功能的背後也有很多缺點主要表現在:

無法做資料結構的儲存,例如在乙個社交產品關注的功能中,乙個人的關注列表是乙個list集合形式的列表,但是關係型資料庫只能表關聯或者基於多次查詢進行資料組裝後返回!表結構強約束,擴充套件不方便!關係型資料庫是結構化儲存,在進行資料儲存時無法動態的增加列或者減少列,在更新表字段的時候往往會操作ddl語句。操作不存在的字段也會報錯!大資料量的查詢中,讀寫效能低,io開銷大!因為關係型資料庫是行式儲存,所以在查詢某幾個欄位時,關係型資料依舊會將整行儲存到記憶體中,所以記憶體開銷大!關係型資料庫,全文檢索的更能較弱。

我們在業務開發中,一定要學會取長補短,取精華,去糟粕,針對以上缺點,我們來總結一下市面上比較好的開源實現的資料庫吧!

**以redis為例:**它可以解決關係型資料庫無法儲存資料結構的問題,其優點體現在:

**支援多種資料結構,例如:stringsethashsortedsethyperlogloggeopub/sub**等

效能極高,記憶體型資料庫,對於資料的讀寫極快。原子性,所有的操作全部都是原子性,支援對與福哦個操作的合併組裝成原子操作。

當然人無完人,他也有缺點:

資料量受機器記憶體大小的影響,在海量資料儲存中並不適用,但是適合小資料量下的快速查詢和計算。不支援完成的acid事務屬性,他提供的事務只保證一致性和隔離性。

因為其事務完整性無法保證,所以適用場景時都事務要求並沒有那麼高,且讀寫頻率極高的場景!

**以mongodb為例:**它可以解決表結構強約束,擴充套件不方便的問題,其優點表現在:

沒有表結構的強約束,在使用時可以任意的增加或者減少字段,文件結構的儲存方式,能夠更便捷的獲取資料。支援大容量的儲存,海量資料下效能優越

內建自動分片,支援雲級擴充套件。支援複雜聚合

mongodb缺點表現在:

不支援事務,不適合對事物要求嚴格的場景。無法支援複雜查詢,如關係型資料的join操作。事實上mongodb的效率存在一定的波動性。

適用場景:不怎麼使用事務,資料相較而言不那麼重要,資料字段不確定!

**以hbase為例:**解決讀寫效能低,io開銷大的問題,其優點表現在:

hbase適合儲存pb級別的海量資料,在pb級別的資料以及採用廉價pc儲存的情況下,能在幾十到百毫秒內返回資料。hbase是根據列族來儲存資料的。其實這個時減少io開銷的乙個很重要的效能指標,因為資料會按照列儲存,舉乙個場景,在一年內,**購買電腦的**階梯是多少,如果使用行式儲存,我們會統計整個購買掉鬧的記錄,然後再篩選**這個字段,事實上我們只需要乙個**字段;因為hbase是基於列儲存,查詢時只需要查詢這個類就ok,所以它的io讀寫消耗小。極易擴充套件hbase的擴充套件性主要體現在兩個方面,乙個是基於上層處理能力(regionserver)的擴充套件,乙個是基於儲存的擴充套件(hdfs)。高併發:由於目前大部分使用hbase的架構,都是採用的廉價pc,因此單個io的延遲其實並不小,一般在幾十到上百ms之間。這裡說的高併發,主要是在併發的情況下,hbase的單個io延遲下降並不多。能獲得高併發、低延遲的服務。

hbase缺點表現在:

讀取多個列時,關係型資料庫因為時按行儲存,所以再磁碟上的位置是連續的所以讀取速率較高,但是hbase是按照列儲存,不同的列儲存再磁碟上的不連續的空間,在讀取多個列時速度較慢。再更新資料的時候,因為行式儲存所有的列的再磁碟空間上的連續性,故而可以一次更新,但是hbase會慢很多!其次hbase在更新時需要對欄位進行 解壓-更新-壓縮 操作所以也會出現效能瓶頸!它不支援sql。必須依賴開發進行**解決許可權,安全上存在隱患。只要知道zk的ip和埠,你就能輕鬆訪問hbase,甚至不需要任何許可權校驗。

適用場景:離線大資料分析,這類場景一般都是對於單列操作且寫入後無需更新!

elasticsearch 優點表現在:

全文檢索,基於分詞、倒排索引進行索引,查詢速度簡直不不要太快!負載再平衡和路由在大多數情況下自動完成。客戶端傳送請求到任意乙個node,coordinate node對document進行路由,將請求**到對應的node,此時會使用round-robin隨機輪詢演算法,在primary shard以及其所有replica中隨機選擇乙個,讓讀請求負載均衡可以擴充套件到上百臺伺服器,處理pb級別的結構化或非結構化資料

缺點:在需要新增新資料與新字段的時候,如果elasticsearch進行搜尋是可能需要重新修改格式。之前的資料需要重新同步,對資料的管理有很多困難

從關係型資料庫的資料灌輸,一般是將資料庫內部資料轉換成json來適應全文檢索!

關於上述對於各類資料庫的介紹,相信你對他們都有了乙個大概的認識,具體的使用場景,還是要結合業務來使用!下面是關於使用場景的一點建議!

關係型和nosql資料庫的選型。考慮幾個指標,資料量、併發量、實時性、一致性要求、讀寫分布和型別、安全性、運維性等。根據這些指標,軟體系統可分成幾類。

管理型系統,如運營類系統,首選關係型。

大流量系統,如電商單品頁的某個服務,後台選關係型,前台選記憶體型。

日誌型系統,原始資料選列式,日誌搜尋選倒排索引。

搜尋型系統,指站內搜尋,非通用搜尋,如商品搜尋,後台選關係型,前台選倒排索引。

事務型系統,如庫存、交易、記賬,選關係型+快取+一致性協議,或新型關聯式資料庫。

離線計算,如大量資料分析,首選列式,關係型也可以。

實時計算,如實時監控,可以選時序資料庫,或列式資料庫。

市面上有哪幾種門 市面上常見的木門種類有哪些呢?

隨著家居的物質生活提高,裝修建材等與生活息息相關的東西也不甘示弱,同樣東西可分為許多的種類,木門作為家裝中的重要元素,不斷與時俱進地發展,也誕生了多種產品類別。那麼,現在市面上常見的木門種類有哪些呢?1 夾板模壓空心門 以實木做框架,兩面用裝飾板粘壓在框架上,經熱壓加工製成。更為經濟實惠。2 全實木...

資料庫種類

資料庫種類大體分為 關係型資料庫和非關係型資料庫 關係型資料庫模型是把複雜的 歸結為簡單的二元關係 即二維 形式 在關係型資料庫中,對資料的操作幾乎全部建立在乙個或多個關係 上,通過對這些關聯的 分類 合併 連線或選取等運算來實現資料庫的管理。典型產品 m ysql oracle db2 sqlse...

資料庫的種類

1.關係型資料庫 mysql oracle sqlserver都是關係型 關係型資料庫的特點是存在資料關聯 用平面的表去記錄立體的業務資訊 即使使用關係型資料庫,很多網際網路專案也是弱化關聯 在資料庫方面設定關聯關係存在弊病 如級聯刪除等等,可以使用應用程式來控制關聯 2.非關係型資料庫 nosql...