当前位置: 首页 > 科技观察

数据库中有七种武器,快来看看吧!

时间:2023-03-20 02:15:54 科技观察

数据库的七大武器是我在工作中维护和接触的七种常用数据库,其中常用的关系型数据库4种,常用的nosql数据库3种。这些数据库作为业务底层的存储选择。每个数据库都有自己的定位和特点。结合业务,有自己的适用场景。在具体使用和操作维护中也有一些特殊的注意事项。本文按顺序对“七大武器”进行介绍和总结,希望能帮助大家理清每一种“武器”的特点和用法,在合适的场景使用合适的武器,构建属于自己的数据存储系统。第一把武器:MySQL数据库1、定位:开源、多平台、关系型数据库是目前使用最广泛、最流行的开源数据库。2.特点:功能:支持事务,符合关系型数据库原则,符合ACID,支持大部分SQL规范,以二维表的形式组织数据,具有插件式存储引擎,支持多种存储引擎格式。部署:编译安装,或者二进制包的方式,按照“安装软件-创建实例-库表用户初始化”即可快速完成数据库部署使用:使用标准的SQL语句进行数据库管理,简单的SQL语句效果更好concurrencyandperformance,view,Storedprocedures,functions,trigger等都没有很好的支持监控:有一些常用的命令可以在命令行界面显示状态和性能。在图形界面方面,有更多的开源监控工具来监控和记录数据库的状态。如zabbix、nagios、cacti、lepus等备份:逻辑备份mysqldump/mysqldumper,物理备份用xtrabackup等工具进行备份;高可用:MySQL有多种高可用方案,官方有基础master-slave主从复制,新版Innodb集群,MHA等第三方高可用方案;扩展:MySQL水平拆分,通过水平拆分代理可以进行逻辑映射拆分,扩展MySQL数据库的并发和吞吐量。3、适用场景:默认的innodb存储引擎支持高并发和简单的OLTP场景;Tokudb存储引擎使用高并发插入场景;Inbright存储引擎可以进行列压缩和OLAP统计查询场景;4、选型注意事项:OLTP业务使用MySQL时,需要注意数据量级。如果数据量级太大,需要水平拆分;如果有OLAP需求,可以结合其他架构考虑。第二把武器:SQLServer数据库1.定位:商务,Windows平台,关系型数据库,最早与微软系统紧密结合的商业数据库,属于“微软技术体系”2.特点:功能:支持事务,符合torelationships基于大型数据库的原理,遵守ACID,支持大部分SQL规范,以二维表的形式组织数据。一般通过Windows资源管理和SQLserver图形化工具显示系统和数据库性能;备份:通常使用第三方备份恢复软件进行备份恢复;高可用:通过共享存储和双机热备,实现SQLServer数据库的高可用;扩展:SQLServer数据库集群采用共存存储方式,通过硬件垂直升级扩展数据库集群;3、适用场景:大部分OLTP场景(配合微软系统)4、选型注意:SQLServer与微软技术体系结合比较紧密,大部分工作都是通过图形界面完成的。习惯使用命令行的DBA可能不习惯;数据库差异很大,需要注意;使用SQLServer来满足OLTP业务会有更好的效果,但是对于数据量大的OLAP业务,最好使用专用的OLAP架构,不要在同一个SQLServer实例上混合使用OLTP和OLAP业务;SQLServer属于商业软件,需要注意版权和license授权费用;第三把武器:Oracle数据库1、定位:商业、多平台、功能最大、最复杂、市场占有率最高的关系型数据库最好的商业数据库2、特点:功能:支持事务,符合关系型数据库的原则,符合ACID,支持大部分SQL规范,以二维表形式组织数据部署:Oracle单实例数据库部署相对容易,但OracleRAC集群环境、部署步骤和依赖项较多;使用:通常使用命令行工具管理各种数据库,通常使用shell脚本和python脚本来提高Oracle数据库管理效率;各种管理功能比较强大;监控:Oracle官方有比较完善的监控工具,常用的第三方监控平台,如zabbix、cacti、lepus等,对Oracle数据库的各项指标都有完善的监控;备份:支持冷备份和热备份,可以使用exp/imp、expdp/impdp等进行逻辑备份和恢复,可以使用强大的RMAN工具进行专业的物理热备份和恢复;高可用:Oracle数据库高可用架构,可通过第三方双机热备软件结合Oracle单实例实现;可以使用OracleDataguard实现主备备份;可以利用OracleRAC集群实现实例级别的高可用和负载均衡,利用ASM实现存储级别的高可用;扩容:由于Oracle集群使用共享存储,一般只能通过垂直硬件升级进行升级;3、适用场景:大部分OLTP场景,部分OLAP4、选型说明:从架构到运维,Oracle可以说是最难的数据库,学习和使用难度都比较大。第四种武器:Postgresql数据库1.定位:开源、多平台、关系型数据库,最强大的开源数据库。2.特点:功能:支持事务,符合关系型数据库原则,符合ACID,支持大部分SQL规范,以二维表形式组织数据;部署:postgresql需要先准备Python等环境,然后编译安装软件,初始化数据库,启动实例,整个部署过程比较清晰;使用:可以使用命令行管理postgresql数据库,也可以通过pgadmin图形化工具;各种管理功能比较强大;监控:可以查看各种性能视图和状态视图;与其他数据库相比,没有很好的图形化监控工具和平台;备份:支持冷备份和热备份,可以使用COPY命令进行逻辑导出和导入;使用pgdump和pgrestore进行物理备份和恢复;高可用:postgresql官方支持主备复制;Slony-I第三方组件也可以用于数据库同步;扩展:postgresql可以通过修改postgres-XC的源码实现横向扩展;3、适用场景:大部分OLTP场景,部分OLAP适用于互联网目前需要的一些信息,比如地理位置信息处理;以postgresql为底层数据库的greenplum数据仓库是主流的MPP数据仓库;基于postgresql的TimeScaleDB是目前比较流行的时序数据库之一;4、选型注意:Postgresql的架构、使用难度、功能介于Oracle数据库和MySQL数据库之间,但由于开源的推动,各方面也有不错的发展;Postgresql目前还没有一个比较主流好用的监控平台,这是p??ostgresql数据库的一个短板。第五个武器:Mongodb数据库1、定位:开源、多平台、文档型nosql数据库非常主流的文档型nosql数据库,“最像关系型数据库”,定位为“灵活”的nosql数据库2、特点:功能:数据文件存储格式为BSON,模式自由,整体结构对应关系型数据库,具有良好的高可用性和可扩展性,有插件式存储引擎。新版本默认使用writtentiger存储引擎;部署:部署比较简单,下载软件,设置配置文件启动服务即可;use:不支持SQL语句,使用SQL对应的json方法管理数据库;监控:有比较丰富的监控和性能命令,官方有比较完善的图形监控系统。但需要购买;backup:支持冷备份和热备份,可以使用mongoexport/mongimport进行逻辑备份,也可以使用基于oplog的mongodump/mongorestore物理热备份;高可用:MongoDB主从主从复制:在主节点上添加--master参数,从数据库添加-slave和-source参数,即可实现同步。目前不推荐这样做;ReplicaSets副本集,在mongodb1.6之后,又开发了一个新的replicaset,具有自动故障转移和自动故障转移修复成员节点,每个DB都会保持数据一致,推荐使用这种方式;可以测试读写分离和故障转移;扩展:mongodb海量数据水平拆分,数据分别存储在sharding的各个节点上,构建分布式集群。Sharding架构由底层多个mongodbSharedServer、config水平拆分配置库configserver、前端路由进程三部分组成。Sharding集群的底层可以是单个mongodb实例,也可以是高可用的副本集。3、适用场景:网站后台数据库:mongodb非常适合说实话的插入、更新和查询,并且可以实时复制,扩展性高。适用于更新迭代快、需求变化多、面向对象的网站应用;小文件系统:对于json文件和二进制数据,mongodb适合存储和查询。日志分析系统:对于数据量较大的日志文件,IM会话消息记录,适合mongodb保存查询;缓存系统:mongodb数据库也会使用大量Memory,设计合理,也可以作为缓存系统使用;但是,目前的缓存系统更多的是采用memcached、redis等解决方案。4、选型注意:Mongodb不适合场景:高事务性系统:即传统OLTP业务,mongodb,甚至其他nosql,对事务性支持不是很好;传统的统计分析应用:即传统的OLAP业务,需要高度优化的查询方式,mongodb支持不好;业务用sql语句更方便:mongodb是json类型的查询方式,虽然也灵活,但是不如用sql方便。如果业务适合SQL,mongodb就不适合了。第六把武器:Redis数据库1.定位:开源,Linux平台,key-valuekey-valueNosql数据库简单稳定,很主流,全数据in-momory,key-valuenosql数据库定位在“快”2,特点:功能:命令执行速度非常快,读写性能可达100,000/s;数据结构是key-value字典类函数,可以key过期缓存,发布订阅消息系统,简单交易功能;部署:通过下载软件介质,编译安装,快速完成数据库部署;服务可以启动redis-server,可以通过默认配置、运行参数配置、配置文件三种方式启动;redis在linux平台上支持比较好,官方没有。Windows版本,微软维护一个分支;使用:连接redis-cli客户端,一般使用简单的set、get、del进行数据管理;基于单实例redis,数据持久化,主从复制,高可用和分布式功能;监控:命令行界面有一些常用的命令,用于显示状态和性能;在图形界面中,有开源的监控工具可以监控和记录数据库的状态,比如cachecloud;备份:直接备份到物理询价RDB持久化,基于AOF日志实时AOF持久化高可用:官方redissentinel高可用集群扩展:官方rediscluster基于分配槽的分布式集群3、适用场景:缓存基础消息队列系统排行榜系统计数器使用点赞、粉丝、社交网站下拉刷新等应用;4、选型注意:Redis的使用场景有redis适合解决的问题,也有不适合解决的问题。从数据规模来看,小数据规模用redis比较合适,大数据规模不适合;(对于大数据规模,一定程度上可以使用SSDB代替redis);从冷热数据来看,热数据适合放在redis中,冷数据不适合放在redis中。第七把武器:Hbase数据库1.定位:开源,Linux平台,列存储nosql数据库,可用于海量数据存储,结合Hadoop生态,定位为“大”列存储nosql数据库2.特点:功能:命令执行速度非常好,读写性能可达100,000/s;数据结构是一个key-value字典类函数,可以key过期缓存,发布订阅消息系统,简单的交易功能;deployment:相对于其他数据库,hbase的Deployment更加复杂,依赖于Hadoop、zookeeper等组件。Hbase集群包括一个mater节点,多个regionServers,zookeeper管理所有regionServers。需要依次部署Hadoop和zookeeper,然后再部署HBASE集群;use:连接redis-cli客户端,一般使用简单的set、get、del进行数据管理;在单实例redis的基础上,可以实现数据持久化、主从复制、高可用和分布式功能;监控:命令行界面有一些常用的命令显示状态和性能。在图形界面方面,有开源的监控工具可以监控和记录数据库的状态,比如cachecloud;备份:Hbase一般作为海量数据的仓库,采用多层副本的方式保证数据安全。备份高可用:HBASE集群基于Hadoop,需要依次部署Hadoop单机模式、集群模式、HA模式,通过HadoopHA实现高可用;扩展:HBASE以集群形式存在,依次为单机模式、伪分布式模式、全分布式模式。底层基于HDFS,可以很好的扩展zookeeper;3、适用场景:两大用途:用于简单的数据写入和海量、结构简单的数据查询业务场景;用于其他数据库备份和下沉数据库;4.选型注意事项:Hbase不适合场景:数据分析需求高,需要能够使用sql或者简单的MapReduce来实现分析需求的业务场景,不适合Hbase;当单表数据量不超过千万级时,使用Hbase,不能体现Hbase的优势,而且会比较慢,所以不适合Hbase。通过上面对数据库“七大”武器的描述,也可以看出目前常用数据库的来龙去脉和选择顺序。对应一个业务,可以选择最流行的开源数据库——MySQL;如果是稳定和商用考虑,可以选择Oracle数据库或者SQLServer数据库(结合Windows系统);如果你想使用开源并且有足够的功能来应对各种场景,你可以使用postgresql数据库。这四种数据库都是关系型数据库,可以很好的满足大部分业务场景,解决通用性的问题。对于一些特殊的问题,尤其是在扩展性方面要有比较高的要求,可以考虑nosql数据库。Mongodb数据库,介于关系型数据库和非关系型数据库之间,具有两者的特点,是目前非常流行的文档型nosql数据库;redis位于内存型key-valuenosql数据库;hbase是一种用于存储海量文件的nosql数据库的列式格式。根据合适的业务场景,选择合适的nosql数据库可以很好的解决某一类或者几类业务问题,可以作为关系型数据库的补充。从另一个角度来看,MySQL、Oracle、SQLServer、Postgresql、MongoDB这5个数据库也是DB-Engines排行榜前五名的数据库。从这五个数据库的使用情况和流行程度也可以看出。广泛使用数据库。