数据库分类
- 关系型数据库
- 非关系型数据库
- 键值对存储数据库
- 列存储数据库
- 搜索引擎数据库
- 面向文档数据库
- 图形数据库
- 数据库优缺点
应用程序都离不开数据库,那不同的数据结构,就会存放在不同的数据数据库中,所以数据库按数据结构分为关系型数据库和非关系型数据库。接下来就总结一下这两者的区别吧。
关系型数据库
关系型数据库呢就是把复杂的业务数据结构归结为二维表的形式展现,以MySQL为例如果我们要创建一个表的话可以使用DDL语句创建,如下:
CREATE TABLE `t_order` (
`int` bigint(11) NOT NULL AUTO_INCREMENT,
`user_id` bigint(20) DEFAULT NULL COMMENT '用户id',
`product_id` bigint(11) DEFAULT NULL COMMENT '产品id',
`count` int(11) DEFAULT NULL COMMENT '数量',
`money` decimal(11,0) DEFAULT NULL COMMENT '金额',
`status` int(1) DEFAULT NULL COMMENT '订单状态: 0:创建中 1:已完结',
PRIMARY KEY (`int`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='订单表';
最终创建的二维表结构是这样的:
在关系型数据库中,对数据的操作应该都是基于数据表操作的,通常一个大型的系统都会有多个数据表组成。查询数据时候,会对一个或多个数据表进行关联查询。
那关系型数据库典型的产品有哪些呢?
MySQL,SqlServer,Oracle,PostgreSQL,SQLite等。
非关系型数据库
非关系型数据库根据应用场景分为:键值对数据库,列存储数据库,搜索引擎数据库,面向文档数据库等等。
键值对存储数据库
键值数据库就是使用简单的键值方法来存储数据,键值数据库将数据存储为键值对集合,键作为唯一标识付。比如我们常用的Redis,Memcached等。
列存储数据库
列数据库就是表中的数据以列为单位逐列存储在磁盘中,列存储主要解决数据查询问题。比如HBase产品就是列数据库。列存储是,每次读取的数据是集合的一段或者全部,不存储冗余性问题。
搜索引擎数据库
搜索引擎数据库是应用在搜索引擎领域的数据存储形式,当数据量大的时候,以特定的格式进行存储,这样检索的时候就会快速,系统性能就更好。典型的产品有:Elasticsearch,Solr等。
面向文档数据库
文档数据库就是存放的文档,就是以值可以查询的键值数据库,比如:MongoDB,couchDB等数据库
图形数据库
是一种存储图形关系的数据库,它应用图形理论存储实体之间的关系信息。如果关系型数据库存储复杂的话,就是要用图形数据库来解决问题了。常见产品:Neo4j,InfoGrid等
数据库优缺点
MySQL优缺点:
- 性能好,服务稳定,很少出现异常宕机现象。
- MySQL软件体积较小,安装使用简单,维护成本低。
- MySQL支持多种操作系统,提供各种API接口,支持多种开发语言,而且源代码开放无版本制约。
- 唯一的缺点是数据量大的时候性能没有Oracle。
Oracle优缺点:
- Oracle大数据量时性能高,能在所有主流平台上运行。
- Oracle获得最高认证级别的ISO标准认证。
- Oracle缺点就是价格昂贵。
Redis优缺点:
- 支持基于内存缓存。
- 支持持久化存储,基于RDB和AOF。
- 支持的数据类型丰富,string,list,set,hash,Zset等。
- 支持主从集群,订阅,队列,分布式锁等等。
HBase优缺点:
- 1.适用于存储半结构化或非结构化数据。
- 2.支持高可用和海量数据以及很大的数据量瞬间写入
- 3.为null的column数据不会被存储,这样节省空间又提高了读性能。
- 4.缺点就是不适用于大范围查询,也不支持sql语句查询。
在实际开发过程中数据库的使用都是根据项目的业务需求来选择合适的数据库。选择了正确的数据,就会提高系统的性能。就会出现好的产品,就能为企业创造价值。