MySQL和HBase的使用對(duì)比
MySQL和HBase的對(duì)比
Mysql
:關(guān)系型數(shù)據(jù)庫(kù),主要面向 OLTP ,支持事務(wù),支持二級(jí)索引,支持 sql ,支持主從、 Group Replication 架構(gòu)模型(此處以 Innodb 為例,不涉及別的存儲(chǔ)引擎)。HBase
:底層使用 HDFS (存儲(chǔ)計(jì)算分離),支持海量數(shù)據(jù)讀寫(尤其是寫),支持上億行、上百萬(wàn)列的,面向列的分布式NoSql 數(shù)據(jù)庫(kù)。天然分布式(數(shù)據(jù)分片、故障自恢復(fù) ) ,主從架構(gòu),不支持事務(wù),不支持二級(jí)索引,不支持sql 。
1、數(shù)據(jù)存儲(chǔ)方式
1)MySQL
MySQL采用行存儲(chǔ),MySQL行存儲(chǔ)的方式比較適合OLTP業(yè)務(wù)。
MySQL優(yōu)點(diǎn):
- 體積小、速度快、總體擁有成本低,開(kāi)源;
- 支持多種操作系統(tǒng);
- 是開(kāi)源數(shù)據(jù)庫(kù),提供的接口支持多種語(yǔ)言連接操作 ;
- MySQL 的核心程序采用完全的多線程編程。線程是輕量級(jí)的進(jìn)程,它可以靈活地為用戶提供服務(wù),而不過(guò)多的系統(tǒng)資源。用多線程和C 語(yǔ)言實(shí)現(xiàn)的 mysql 能很容易充分利用 CPU ;
- MySql 有一個(gè)非常靈活而且安全的權(quán)限和口令系統(tǒng)。當(dāng)客戶與 MySql 服務(wù)器連接時(shí),他們之間所有的口令傳送被加密,而且 MySql 支持主機(jī)認(rèn)證;
- 支持 ODBC for Windows , 支持所有的 ODBC 2.5 函數(shù)和其他許多函數(shù), 可以用 Access 連接 MySql 服務(wù)器, 使得應(yīng)用被擴(kuò)展;
- 支持大型的數(shù)據(jù)庫(kù), 可以方便地支持上千萬(wàn)條記錄的數(shù)據(jù)庫(kù)。作為一個(gè)開(kāi)放源代碼的數(shù)據(jù)庫(kù),可以針對(duì)不同的應(yīng)用進(jìn)行相應(yīng)的修改;
- 擁有一個(gè)非??焖俣曳€(wěn)定的基于線程的內(nèi)存分配系統(tǒng),可以持續(xù)使用面不必?fù)?dān)心其穩(wěn)定性;
- MySQL 同時(shí)提供高度多樣性,能夠提供很多不同的使用者介面,包括命令行客戶端操作,網(wǎng)頁(yè)瀏覽器,以及各式各樣的程序語(yǔ)言介面,例如C+ , Perl , Java , PHP ,以及 Python 。你可以使用事先包裝好的客戶端,或者干脆自己寫一個(gè)合適的應(yīng)用程序。MySQL 可用于 Unix , Windows ,以及 OS/2 等平臺(tái),因此它可以用在個(gè)人電腦或者是服務(wù)器上。
MySQL缺點(diǎn):
- 不支持熱備份;
- MySQL 最大的缺點(diǎn)是其安全系統(tǒng),主要是復(fù)雜而非標(biāo)準(zhǔn),另外只有到調(diào)用 mysqladmin 來(lái)重讀用戶權(quán)限時(shí)才發(fā)生改變;
- 沒(méi)有一種存儲(chǔ)過(guò)程 (Stored Procedure) 語(yǔ)言,這是對(duì)習(xí)慣于企業(yè)級(jí)數(shù)據(jù)庫(kù)的程序員的最大限制;
- MySQL 的價(jià)格隨平臺(tái)和安裝方式變化。 Linux 的 MySQL 如果由用戶自己或系統(tǒng)管理員而不是第三方 安裝則是免費(fèi)的,第三方案則必須付許可費(fèi)。 Unix 或 linux 自行安裝 免費(fèi) 、 Unix 或 Linux 第三方安裝收費(fèi)。
2)HBase
HBase是面向列的 NoSql 數(shù)據(jù)庫(kù),列存儲(chǔ)的方式比較適合 OLAP 業(yè)務(wù),而 HBase 采用了列族的方式平衡了OLTP和 OLAP ,支持水平擴(kuò)展,如果數(shù)據(jù)量比較大、對(duì)性能要求沒(méi)有那么高、并且對(duì)事務(wù)沒(méi)有要求的話,HBase 也是個(gè)不錯(cuò)的選擇。
HBase優(yōu)點(diǎn):
- 列的可以動(dòng)態(tài)增加,并且列為空就不存儲(chǔ)數(shù)據(jù),節(jié)省存儲(chǔ)空間
- HBase自動(dòng)切分?jǐn)?shù)據(jù),使得數(shù)據(jù)存儲(chǔ)自動(dòng)具有水平 scalability
- HBase可以提供高并發(fā)讀寫操作的支持
HBase缺點(diǎn):
- 不能支持條件查詢,只支持按照 Row key 來(lái)查詢
- 暫時(shí)不能支持 Master server 的故障切換,當(dāng) Master 宕機(jī)后,整個(gè)存儲(chǔ)系統(tǒng)就會(huì)掛掉( HBase 雖然本身不能故障切換,但是可以配合ZooKeeper 來(lái)實(shí)現(xiàn) HMaster 主備節(jié)點(diǎn)的 failover )
2、適用場(chǎng)景
3、關(guān)系型數(shù)據(jù)庫(kù)
優(yōu)點(diǎn):
- 數(shù)據(jù)之間有關(guān)系,進(jìn)行數(shù)據(jù)的增刪改查的時(shí)候是非常方便的;
- 關(guān)系型數(shù)據(jù)庫(kù)是有事務(wù)操作的,保證數(shù)據(jù)的完整性和一致性
缺點(diǎn):
- 因?yàn)閿?shù)據(jù)和數(shù)據(jù)是有關(guān)系的,底層是運(yùn)行了大量的算法,大量算法會(huì)降低系統(tǒng)的效率,會(huì)降低性能
- 面對(duì)海量數(shù)據(jù)的增刪改查的時(shí)候會(huì)顯的無(wú)能為力
- 海量數(shù)據(jù)對(duì)數(shù)據(jù)進(jìn)行維護(hù)變得非常的無(wú)力
- 因此,關(guān)系型數(shù)據(jù)庫(kù)適合處理一般量級(jí)的數(shù)據(jù)
4、非關(guān)系型數(shù)據(jù)庫(kù)
為了處理海量數(shù)據(jù),非關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)之初就是為了替代關(guān)系型數(shù)據(jù)庫(kù)的關(guān)系
優(yōu)點(diǎn):
- 海量數(shù)據(jù)的增刪改查是可以的
- 海量數(shù)據(jù)的維護(hù)和處理非常輕松
缺點(diǎn):
- 數(shù)據(jù)和數(shù)據(jù)沒(méi)有關(guān)系,他們之間就是單獨(dú)存在的
- 非關(guān)系數(shù)據(jù)庫(kù)沒(méi)有關(guān)系,沒(méi)有強(qiáng)大的事務(wù)關(guān)系,沒(méi)有保證數(shù)據(jù)的完整性和安全性
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux下MySQL數(shù)據(jù)庫(kù)的主從同步復(fù)制配置
這篇文章主要介紹了Linux下MySQL數(shù)據(jù)庫(kù)的主從同步配置,2017-11-11MySQL數(shù)據(jù)更新操作的兩種辦法(數(shù)據(jù)可視化工具和SQL語(yǔ)句)
MySQL是最常用的數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)操作中,基本都是增刪改查操作,簡(jiǎn)稱CRUD,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)更新操作的兩種辦法,需要的朋友可以參考下2023-03-03在阿里云的CentOS環(huán)境中安裝配置MySQL的教程
這篇文章主要介紹了在阿里云的CentOS環(huán)境中安裝配置MySQL的教程,注意一下文章開(kāi)頭所提到的系統(tǒng)自帶MariaDB的問(wèn)題,需要的朋友可以參考下2015-12-12如何利用MySQL的binlog恢復(fù)誤刪數(shù)據(jù)庫(kù)詳解
MySQL一旦誤刪數(shù)據(jù)庫(kù)之后恢復(fù)數(shù)據(jù)很麻煩,這里記錄一下艱辛的恢復(fù)過(guò)程,這篇文章主要給大家介紹了關(guān)于如何利用MySQL的binlog恢復(fù)誤刪數(shù)據(jù)庫(kù)的相關(guān)資料,需要的朋友可以參考下2021-09-09Mysql創(chuàng)建通用設(shè)備管理信息系統(tǒng)數(shù)據(jù)庫(kù)
下面通過(guò)圖文并茂的方式給大家介紹通用設(shè)備管理信息系統(tǒng)數(shù)據(jù)庫(kù)的創(chuàng)建過(guò)程,感興趣的朋友一起學(xué)習(xí)2016-04-04MySQL中設(shè)置NULL和空白字符串的問(wèn)題及解決
這篇文章主要介紹了MySQL中設(shè)置NULL和空白字符串的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08