Mysql
:关系型数据库,主要面向
OLTP
,支持事务,支持二级索引,支持
sql
,支持主从、
Group
Replication
架构模型(此处以
Innodb
为例,不涉及别的存储引擎)。
HBase
:底层使用
HDFS
(存储计算分离),支持海量数据读写(尤其是写),支持上亿行、上百万列的,面向列的分布式NoSql
数据库。天然分布式(数据分片、故障自恢复
)
,主从架构,不支持事务,不支持二级索引,不支持sql
。
1
、数据存储方式
1
)
MySQL
MySQL
采用行存储,
MySQL
行存储的方式比较适合
OLTP
业务。
MySQL
优点:
体积小、速度快、总体拥有成本低,开源;
支持多种操作系统;
是开源数据库,提供的接口支持多种语言连接操作 ;
MySQL
的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。用多线程和C
语言实现的
mysql
能很容易充分利用
CPU
;
MySql
有一个非常灵活而且安全的权限和口令系统。当客户与
MySql
服务器连接时,他们之间所有
的口令传送被加密,而且
MySql
支持主机认证;
支持
ODBC for Windows
, 支持所有的
ODBC 2.5
函数和其他许多函数, 可以用
Access
连接
MySql
服务器, 使得应用被扩展;
支持大型的数据库, 可以方便地支持上千万条记录的数据库。作为一个开放源代码的数据库,可
以针对不同的应用进行相应的修改;
拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性;
MySQL
同时提供高度多样性,能够提供很多不同的使用者介面,包括命令行客户端操作,网页浏览器,以及各式各样的程序语言介面,例如C+
,
Perl
,
Java
,
PHP
,以及
Python
。你可以使用事先包装好的客户端,或者干脆自己写一个合适的应用程序。MySQL
可用于
Unix
,
Windows
,以及
OS/2
等平台,因此它可以用在个人电脑或者是服务器上。
MySQL
缺点:
不支持热备份;
MySQL
最大的缺点是其安全系统,主要是复杂而非标准,另外只有到调用
mysqladmin
来重读用户
权限时才发生改变;
没有一种存储过程
(Stored Procedure)
语言,这是对习惯于企业级数据库的程序员的最大限制;
MySQL
的价格随平台和安装方式变化。
Linux
的
MySQL
如果由用户自己或系统管理员而不是第三方
安装则是免费的,第三方案则必须付许可费。
Unix
或
linux
自行安装 免费 、
Unix
或
Linux
第三方安装收费。
2
)
HBase
HBase
是面向列的
NoSql
数据库,列存储的方式比较适合
OLAP
业务,而
HBase
采用了列族的方式平衡了OLTP和
OLAP
,支持水平扩展,如果数据量比较大、对性能要求没有那么高、并且对事务没有要求的话,HBase
也是个不错的选择。
HBase
优点:
列的可以动态增加,并且列为空就不存储数据,节省存储空间
HBase
自动切分数据,使得数据存储自动具有水平
scalability
HBase
可以提供高并发读写操作的支持
HBase
缺点:
不能支持条件查询,只支持按照
Row key
来查询
暂时不能支持
Master server
的故障切换,当
Master
宕机后,整个存储系统就会挂掉(
HBase
虽然本身不能故障切换,但是可以配合ZooKeeper
来实现
HMaster
主备节点的
failover
)
2
、适用场景
3
、关系型数据库
优点:
数据之间有关系,进行数据的增删改查的时候是非常方便的;
关系型数据库是有事务操作的,保证数据的完整性和一致性
缺点:
因为数据和数据是有关系的,底层是运行了大量的算法,大量算法会降低系统的效率,会降低性能
面对海量数据的增删改查的时候会显的无能为力
海量数据对数据进行维护变得非常的无力
因此,关系型数据库适合处理一般量级的数据
4
、非关系型数据库
为了处理海量数据,非关系数据库设计之初就是为了替代关系型数据库的关系
优点:
海量数据的增删改查是可以的
海量数据的维护和处理非常轻松
缺点:
数据和数据没有关系,他们之间就是单独存在的
非关系数据库没有关系,没有强大的事务关系,没有保证数据的完整性和安全性