摘要: 在数据分析中,我们可能需要使用各种数据库,目前大概有七种常用数据库,包括4种常用的关系型数据库,3种常用NoSQL数据库(NoSQL = Not Only SQL 泛指非关系型的数据库)。
这些数据库作为业务底层的存储选型,每种数据库都有各自的定位和特点,结合业务,有各自的适用场景。
第一种:MySQL数据库
1、定位:开源、多平台、关系型数据库
目前使用最广泛、流行度最高的的开源数据库。
2、特点:
功能:
支持事务,符合关系型数据库原理,符合ACID,支持多数SQL规范,以二维表方式组织数据,有插件式存储引擎,支持多种存储引擎格式
安装部署:
这里使用Docker安装启动
安装docker pull mysql:5.7启动docker run -p 3307:3307 --name mysql-3307 -v /data/mysql/3307/conf/my.conf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /data/mysql/3307/mysql_data:/var/lib/mysql --net=host --privileged -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7通过docker exec -it 88dab2f338c6(容器id)bash 命令可进入容器进行修改密码、客户端连接权限等操作
使用:
使用标准的SQL语句进行数据库管理,简单SQL语句的并发和性能较好,对视图、存储过程、函数、触发器等支持的不是太好
监控:
在命令行界面有一些常用的命令显示状态和性能,在图形界面方面,有比较多的开源监控工具来监控和记录数据库的状态,比如zabbix,nagios,cacti,lepus等
备份:
逻辑备份 mysqldump/mysqldumper ,物理备份 用xtrabackup等工具进行备份;
高可用:
MySQL高可用有多种方案,官方有基础的master-slave主从复制,新版本的innodb cluster,第三方的有MHA等高可用方案;
扩展:
MySQL水平拆分,可以通过水平拆分proxy中间进行逻辑映射和拆分,扩大MySQL数据库的并发能力和吞吐量。当然,也可以使用数据库集群管理。
3、适用场景:
默认的innodb存储引擎,支持高并发,简单的绝大部分OLTP场景;
Tokudb存储引擎,使用高并发insert的场景;
Inforbright存储引擎,可以进行列压缩和OLAP统计查询场景;
4、选择注意:
使用MySQL进行OLTP业务时,需要注意数据量级,如果数据量级过大,需要进行水平拆分;
如果有OLAP需求,可以结合其他架构综合考虑。
第二种:Mongodb数据库
1、定位:开源、多平台、文档型nosql数据库
非常主流的文档型nosql数据库,“最像关系型数据库”,定位于“灵活”的nosql数据库