主流数据库及其常用工具
- 数据库分类
- 关系型数据库(RDBMS)
- 非关系型数据库(NoSQL)
- 混合型数据库(Hybrid Databases)
- 对象关系数据库(ORDBMS)
- 多维数据库(Multidimensional Database)
- 内存数据库(In-Memory Database)
- 主流数据库及其常用工具
- Oracle
- MySQL
- Microsoft SQL Server
- PostgreSQL
- MongoDB
- 其他数据库
- 国产数据库(信创)
最近面试发现自己水平还是不足,对除mysql和oracle以外的数据库并不怎么了解,在此借助通义千问先给自己简单科普一下
数据库分类
数据库有很多种类型,依据其数据模型、存储结构、数据处理方式等特点,大致可以分为以下几个主要类别:
关系型数据库(RDBMS)
关系型数据库基于关系理论,其数据组织成一系列相互关联的表,每个表都有唯一的键,并通过键与其他表建立联系。SQL(Structured Query Language)是用于查询和操作这类数据库的标准语言,它支持ACID(原子性、一致性、隔离性、持久性)事务保证。关系型数据库适合高度结构化的数据,并且在需要复杂查询和强一致性保证的情况下表现优异。典型代表有MySQL、Oracle、SQL Server、PostgreSQL等。
非关系型数据库(NoSQL)
非关系型数据库的设计理念是为了应对大规模分布式环境下的海量数据管理和处理需求,以及更灵活的数据模型要求。
-
键值存储数据库(Key-Value Store):这种类型的数据库以键值对的形式存储数据,简单快速,适用于缓存和简单的数据存储场景,查找速度快但不支持复杂的查询条件。如Redis、Memcached。
-
列族存储数据库(Column-family Store):数据按列族进行组织和压缩存储,特别适合于大量写入操作和大数据分析场景,能够高效处理海量数据的批量读取和聚合运算。如Cassandra、HBase。
-
文档存储数据库(Document-oriented Database):每个文档作为一个独立单元存储,通常以JSON、XML或其他自包含格式表达,支持复杂数据结构,适用于半结构化数据,能进行文档级别的增删改查。如MongoDB、Couchbase、CouchDB。
-
图形数据库(Graph Database):以节点、边和属性的形式来表示实体及其间关系,特别适合处理具有复杂关联关系的数据模型,如社交网络、推荐系统等领域。如Neo4j、JanusGraph。
-
时序数据库(Time Series Database):专门设计用于存储按照时间顺序产生的连续数据点,如监控数据、物联网设备数据等,优化了对时间序列数据的查询和聚合性能。如InfluxDB、OpenTSDB。
混合型数据库(Hybrid Databases)
这类数据库结合了关系型和非关系型数据库的优点,能够同时处理结构化与非结构化数据,适应多种应用场景,尤其在处理复杂业务逻辑和需要兼顾灵活性与可靠性的场景下表现出色。比如Oracle NoSQL Database、MarkLogic等。
对象关系数据库(ORDBMS)
允许开发人员以面向对象的方式操作数据库,能够直接存储和处理对象实例,同时也支持SQL查询。这意味着可以将类和对象的概念映射到数据库表和记录中,简化了应用程序与数据库之间的交互。例如PostgreSQL、Oracle数据库的部分功能支持对象-关系特性。
多维数据库(Multidimensional Database)
主要应用于商业智能领域,尤其在多维度数据分析(OLAP - Online Analytical Processing)中发挥重要作用。数据以多维数组(立方体)形式存储,方便进行快速切片、切块和旋转操作,提供丰富的聚合视图。数据仓库,例如Microsoft Analysis Services、Hyperion Essbase等。
内存数据库(In-Memory Database)
数据全部或大部分驻留在内存中,显著减少了磁盘I/O,从而提高了数据读写速度,适用于实时交易处理、高频查询、低延迟应用等场景。即使在断电或重启后,许多内存数据库也具备将数据持久化至磁盘的功能以防止数据丢失。例如TimesTen、VoltDB、Redis(在一定程度上)。
每种数据库都有其特定的应用场景和优势,选择哪种数据库取决于应用程序的具体需求,包括数据模型、数据一致性要求、性能、可伸缩性等因素。
下图是2024年4月份数据库使用情况排名( https://db-engines.com)
主流数据库及其常用工具
Oracle
Oracle数据库是一款由甲骨文公司(Oracle Corporation)开发的关系型数据库管理系统(RDBMS),在全球范围内广泛应用,特别是在企业级市场中占据主导地位。Oracle数据库以其高可用性、高性能、安全性以及对大规模数据处理的强大能力而著称。它支持ACID(原子性、一致性、隔离性、持久性)事务处理,并提供了一系列高级功能,如数据分区、集群、并行处理、闪回技术、读写优化、在线维护以及高度可扩展性等。
Oracle常用的备份和DBA管理工具包括:
-
Oracle Recovery Manager (RMAN):RMAN是Oracle官方提供的用于备份和恢复数据库的主要工具,支持完整数据库备份、增量备份、联机备份、块媒体恢复以及高级的数据库恢复技术。RMAN能够高效地管理备份集、归档日志,并支持在不同备份设备上存储数据。
-
Oracle Enterprise Manager (OEM):Oracle Enterprise Manager是Oracle提供的综合性数据库管理工具,拥有图形化用户界面,DBA可以利用它进行日常的数据库监控、性能调优、安全管理、备份与恢复管理等工作。OEM提供了丰富的报告功能和预警机制,能够实现全方位的数据库管理。
-
SQL*Plus:SQL*Plus是Oracle自带的基础命令行工具,用于执行SQL语句、PL/SQL块以及数据库脚本,包括一些基础的备份和恢复命令。
-
Oracle Data Pump:Data Pump是Oracle数据库的数据导入导出工具,相较于传统的Export和Import,Data Pump提供了更高的数据传输效率,支持数据的快速迁移和备份。
-
Oracle Database Configuration Assistant (DBCA):DBCA用于创建、配置和删除数据库实例,包括数据库的初始安装和后续的维护操作。
-
Automatic Storage Management (ASM):ASM是一种卷管理器和文件系统,能够简化存储管理,支持数据库文件的自动备份和恢复。
-
Grid Infrastructure:在Oracle RAC(Real Application Clusters)环境中,Grid Infrastructure提供了一系列工具来管理集群和存储,包括备份和恢复。
-
第三方管理工具:诸如Toad for Oracle、SQL Developer、PL/SQL Developer等第三方工具也为Oracle数据库的管理提供了丰富的图形化界面和便捷功能,包括备份、恢复、性能优化以及日常的数据库维护操作。
此外,Oracle数据库备份还可以结合操作系统级别的备份工具(如Unix/Linux下的tar或Windows下的ntbackup等)以及网络备份软件(如Veritas NetBackup、CommVault Simpana等)进行操作系统的层级备份。DBAs在实际工作中通常会结合使用这些工具来构建一个综合的备份恢复策略。
MySQL
MySQL是一款广泛使用的开源关系型数据库管理系统,由MySQL AB最初开发,后被Sun Microsystems收购,现隶属于Oracle公司。MySQL因其开源、轻量、稳定、易于使用和高度可定制的特性而在Web应用领域受到普遍欢迎,尤其适合中小型企业以及互联网服务提供商。MySQL支持多种操作系统平台,提供了丰富的SQL语法、存储过程、触发器、视图等功能,并支持事务处理和多种存储引擎,如InnoDB、MyISAM等。
MySQL常用的备份工具和DBA管理工具包括:
-
mysqldump:这是MySQL自带的逻辑备份工具,通过执行SQL语句将数据库内容导出为文本文件,适用于日常备份和迁移。执行命令示例:
mysqldump -u username -p database_name > backup.sql
-
Percona XtraBackup:这是一个开源的、专为MySQL和MariaDB设计的热备份工具,尤其适用于InnoDB存储引擎,能够在数据库在线运行时进行物理备份。
-
MySQL Enterprise Backup:由Oracle提供的收费工具,同样支持InnoDB在线热备份,提供了更多高级功能和企业级支持。
-
MySQL Workbench:官方提供的图形化数据库设计、管理工具,集成了SQL开发、数据库管理、ER模型设计以及备份恢复等功能。
-
phpMyAdmin:开源的Web界面工具,非常适合对MySQL数据库进行直观的管理,包括创建、编辑表格、执行SQL查询以及进行基本的备份和恢复操作。
-
Navicat、MySQL Administrator/MySQL Query Browser(旧版)以及MySQL Workbench(新版):第三方的数据库管理工具,提供更丰富的数据库管理体验,包括数据迁移、备份和恢复、性能监控等。
-
命令行工具:MySQL Server自带的命令行客户端,可以执行SQL命令,进行基本的数据库管理,包括通过FLUSH TABLES WITH READ LOCK和COPY命令进行简单的冷备份。
DBA管理工具还包括一系列监控和性能分析工具,例如:
- MySQL Enterprise Monitor:Oracle提供的企业级监控解决方案,提供详细的性能指标和告警功能。
- pt-stalk(Percona Toolkit的一部分):用于捕获MySQL服务器的诊断信息。
- Innotop:MySQL和InnoDB的实时监控工具。
- pt-query-digest(Percona Toolkit的一部分):用于分析和优化SQL查询性能。
在实际使用中,MySQL数据库的备份策略常常结合多种工具和方法,如定期逻辑备份、物理备份以及通过复制技术提高数据安全性。同时,DBA会借助各种管理工具和监控系统确保MySQL数据库的良好运行和及时维护。
Microsoft SQL Server
SQL Server是由微软(Microsoft)开发的关系型数据库管理系统(RDBMS),广泛应用于企业级应用、网站服务、数据分析等领域。SQL Server提供高度的安全性、可靠性和性能优化功能,支持Transact-SQL(T-SQL)编程语言,并兼容OLAP(在线分析处理)和ETL(数据抽取、转换和加载)等数据处理技术。其存储引擎包括但不限于行存储和列存储,能够支持海量数据的存储和处理。
SQL Server 常用的备份工具和DBA管理工具包括:
-
SQL Server Management Studio (SSMS):它是SQL Server的官方免费图形化管理工具,用于设计数据库、编写和执行T-SQL脚本、管理数据库对象、执行备份和恢复、监控性能以及进行各种数据库管理任务。
-
SQL Server Agent:内置于SQL Server中的作业调度和自动化工具,可以用于设置定期备份、数据库维护、警报通知等功能。
-
SQL Server Backup Utility (Maintenance Plan Wizard):提供了创建和管理数据库备份计划的功能,可以进行全备、增量备份和差异备份,以及数据库维护任务。
-
Microsoft SQL Server Data Tools (SSDT):是Visual Studio的一部分,用于数据库项目的开发、版本控制和发布,以及数据库设计和数据层应用生命周期管理。
-
SQL Server Integration Services (SSIS):用于数据抽取、转换和加载(ETL)的工具,可以设计复杂的ETL包,支持数据迁移、清洗和整合。
-
Third-party Backup Tools:如Red Gate SQL Backup、Idera SQL Safe Backup、Quest Litespeed for SQL Server等,这些工具提供了更强大和灵活的备份选项,包括压缩、加密、验证备份、以及更高效的备份和恢复功能。
-
Performance Monitoring and Tuning Tools:包括SQL Server Profiler、Dynamic Management Views (DMVs)、Database Engine Tuning Advisor等,用于监控数据库性能、分析查询性能瓶颈、优化索引结构等。
-
PowerShell Cmdlets:微软提供了SQL Server PowerShell模块,通过脚本语言可以自动化执行备份、恢复以及其他的数据库管理任务。
在实际运维中,SQL Server DBA会结合这些工具和SQL Server的内置功能,制定并实施全面的备份策略和数据库管理方案,确保数据库的安全性、稳定性和高性能。
PostgreSQL
PostgreSQL 是一款开源的关系型数据库管理系统,以其强大的功能、标准的SQL合规性、良好的扩展性和高可靠性而闻名。它支持复杂的SQL查询、事务处理、多版本并发控制(MVCC)、窗口函数、全文搜索、GIS地理空间数据处理、JSON和XML数据类型等高级特性。PostgreSQL被誉为是最接近Oracle功能的开源数据库之一,广泛应用于企业级应用、科学计算、地理信息系统等领域。
PostgreSQL 最常用的备份工具和DBA管理工具包括:
-
pg_dump/pg_dumpall:
- pg_dump是PostgreSQL内置的逻辑备份工具,用于将单个数据库或整个实例的结构和数据导出为SQL脚本或定制的档案格式。
- pg_dumpall则用于备份整个PostgreSQL集群的所有数据库,包括角色、表空间等全局对象。
-
pg_basebackup:
- pg_basebackup是PostgreSQL提供的物理备份工具,可以创建数据库集群的物理级备份,即直接复制文件系统层次上的数据文件,常用于制作全备。
-
Barman (Backup and Recovery Manager):
- Barman是一个第三方开源备份和恢复工具,专为PostgreSQL设计,提供多版本备份、增量备份、WAL归档、备份验证以及恢复功能,支持自动化和远程备份。
-
pgAdmin:
- pgAdmin是一个流行的开源图形化数据库管理工具,用于设计数据库结构、执行SQL查询、管理用户和权限、监控性能以及执行备份和恢复操作。
-
psql:
- psql是PostgreSQL自带的命令行客户端,用于与数据库交互,执行SQL命令,也能够用来执行一些基本的数据库管理和备份操作。
-
pgBadger/pg_stat_monitor:
- pgBadger是一个用于分析PostgreSQL日志文件,生成详细报告的工具,有助于性能调优。
- pg_stat_monitor是一个可选的扩展,用于收集更详细的统计信息以进行性能监控和诊断。
-
pg_rewind:
- pg_rewind是一个用于在主从切换后快速使原主节点与新主节点同步的工具,尤其适用于仲裁节点或备用节点成为新的主节点的情况。
-
Patroni/ClusterControl:
- Patroni是用于管理PostgreSQL高可用集群的开源项目,支持自动故障转移和集群管理。
- ClusterControl是一个商业解决方案,除了提供HA和集群管理外,也涵盖了备份、监控和数据库性能调优等功能。
在实际应用中,DBA会根据具体情况选择合适的备份工具和管理工具,以确保PostgreSQL数据库的高可用性、数据安全性和良好性能。
MongoDB
MongoDB 是一款开源的 NoSQL 数据库系统,采用分布式文档存储模式,特别适合处理大量半结构化和非结构化数据。其核心概念是“集合”(collections),类似于关系型数据库中的表,但在MongoDB中每个文档(记录)都可以有自己独特的键值对结构,无需预先定义严格的模式(schema)。MongoDB支持水平扩展,通过分片(sharding)技术可以处理大规模的数据和高并发访问。
备份工具:
-
mongodump/mongorestore:
mongodump
是MongoDB官方提供的数据备份工具,可以将数据库、集合或者指定文档导出为BSON格式文件,便于后续恢复。mongorestore
则用于将mongodump生成的备份文件恢复到MongoDB数据库中。
-
MongoDB Atlas的内建备份:对于使用MongoDB Atlas(MongoDB的完全托管云服务)的用户,平台提供了内建的备份服务,可以设置定期自动备份并保留多个恢复点。
-
Percona Backup for MongoDB:第三方工具,为企业环境下的MongoDB提供高效且安全的备份解决方案,支持加密备份、增量备份和云存储集成。
-
OpsManager/Cloud Manager(针对MongoDB企业版用户):MongoDB的企业级管理平台包含了一套全面的备份和恢复功能,能够集中管理多个部署并实现自动化备份策略。
管理工具:
-
MongoDB Compass:官方提供的图形化管理工具,帮助用户可视化地探索和管理MongoDB数据,支持集合、索引和查询的管理,以及实时数据分析。
-
Robo 3T (formerly Robomongo) 和 MongoDB Shell:
- Robo 3T是一个跨平台的MongoDB GUI客户端,方便进行日常管理和查询操作。
- MongoDB Shell是基于JavaScript的命令行工具,可用于执行各种管理任务和复杂查询。
-
NoSQLBooster(mongobooster):另一款流行的MongoDB GUI工具,具有丰富的查询编辑器、内建聚合框架支持、以及性能分析功能。
-
Rockmongo:这是一个早期较为流行的基于PHP编写的MongoDB Web管理工具,但随着MongoDB其他图形化工具的发展,其使用已相对较少。
-
Studio 3T:高级MongoDB GUI客户端,提供了直观的操作界面和一系列增强的功能,比如代码智能提示、数据导入导出、集成Shell等。
-
Atlas UI:对于MongoDB Atlas用户,其Web界面提供了全面的数据库管理和监控能力,包括集群监控、性能调整、备份管理等。
综上所述,MongoDB的备份工具和管理工具有多种选择,既可以使用官方提供的基础工具,也有诸多第三方工具满足不同场景的需求。
其他数据库
Redis: Redis 是一款开源、内存中的数据结构存储系统,提供键值、哈希、列表、集合等多种数据结构,常用于缓存、会话存储和实时数据处理。
Elasticsearch (ES) : ES 是一个分布式的全文搜索引擎,基于 Lucene 构建,擅长处理大规模的 JSON 文档,提供快速、接近实时的搜索和分析能力。
IBM DB2 : DB2 是 IBM 开发的关系型数据库管理系统,适用于大型企业级应用,支持高度可扩展、高可用的数据库解决方案,可在多种操作系统平台上运行。
Snowflake : Snowflake 是一种云原生数据仓库服务,以其弹性、易扩展和易于管理著称,专为大数据分析和BI应用设计,实现了计算和存储的分离。
SQLite : SQLite 是嵌入式关系型数据库引擎,轻量级且无需服务器,可以直接读写文件存储数据库,常用于桌面应用和移动设备。
Microsoft Access : Access 是微软开发的一款桌面数据库管理系统,集成了数据库引擎和GUI前端工具,便于非专业开发者创建小型应用程序和数据库。
Cassandra : Apache Cassandra 是一款分布式NoSQL数据库,设计用于处理大规模并发读写操作,提供高可用性和水平扩展能力,无中心节点,适合互联网和物联网环境。
MariaDB : MariaDB 是 MySQL 的一个分支,也是开源的关系型数据库管理系统,兼容MySQL大多数特性,并在此基础上进行了性能优化和功能增强。
Splunk : Splunk 是一款主要用于机器数据的搜索、分析和可视化工具,可用于日志管理、安全分析、IT运营和业务智能,其内建的搜索语言使用户能迅速挖掘数据价值。
Microsoft Azure SQL Database : Azure SQL Database 是微软Azure云平台上托管的关系型数据库服务,基于SQL Server技术,提供弹性的云计算能力,支持自动备份、高可用性、轻松扩展和管理。
…
国产数据库(信创)
下图是2024年4月份国产数据库使用情况排名( https://www.modb.pro/dbRank)
国产数据库经过长期发展,已经形成了丰富的产品阵容,以下列举一些主要的国产数据库产品及其对标或参照的国际主流数据库产品:
达梦数据库(DMDB) 达梦数据库是中国最早的国产数据库产品之一,专注于高端市场,其产品在性能、安全性、稳定性等方面对标Oracle数据库,提供了从关系型数据库到大数据平台的系列产品,服务于政府、企事业单位等。
南大通用数据库(GBase) 南大通用数据库产品线覆盖关系型数据库、分布式数据库、分析型数据库等多个领域,提供高可用、高性能的解决方案,可以对标Oracle和IBM DB2等国际主流数据库产品。
人大金仓数据库(Kingbase) 人大金仓数据库在兼容性和性能上接近Oracle,同时也支持PostgreSQL生态,提供大型通用的关系型数据库产品,并在政务、军工等领域广泛应用。
神舟通用数据库(神通) 神舟通用数据库是国内自主研发的关系型数据库产品,致力于在功能、性能、安全性等方面与Oracle竞争,适用于电子政务、电信、金融等行业。
瀚高数据库(HighGo) 瀚高数据库基于PostgreSQL开发,实现了对Oracle的高度兼容,并在性能、安全性、易用性等方面进行了优化,主要应用于政务、国防、能源、交通等领域。
阿里云POLARDB 阿里云自主研发的POLARDB是云原生的关系型数据库,主打高可用、弹性伸缩、高性能,可对标MySQL和Oracle数据库,特别在云环境下表现出色。
腾讯云TDSQL 腾讯云TDSQL基于MySQL开发,提供了分布式数据库解决方案,支持自动水平拆分和透明读写分离,能够应对高并发和大数据量场景,与MySQL有着很好的兼容性。
华为 GaussDB 华为 GaussDB系列涵盖多个产品线,包括GaussDB(for MySQL)、GaussDB(for openGauss)等,既有对MySQL的高度兼容,又有对标Oracle的高性能企业级特性,满足不同场景下的数据库需求。
TiDB 开源分布式数据库,由PingCAP公司开发,其设计灵感来源于Google Spanner/F1论文,同时兼容MySQL协议,适用于大规模分布式事务处理场景,具有水平扩展、强一致性和高可用性等特点。
OceanBase 阿里巴巴自主研发的分布式关系型数据库,适用于金融级核心交易系统,具有百万级QPS处理能力,支持两地三中心容灾和分钟级扩容,已在支付宝、网商银行等业务中广泛应用。
ZetaSQL 百度自主研发的分布式数据库系统,融合了HTAP(混合事务分析处理)特性,支持在线事务处理和在线分析处理的统一,具有高性能、高并发、实时分析的能力。
巨杉数据库(SequoiaDB) 国内领先的分布式文档型数据库,支持结构化、半结构化、非结构化数据混合存储,提供高性能、高扩展性和高安全性,广泛应用于金融、电信、政务等领域。
万里数据库(GreatDB) 万里数据库源自于阿里云,聚焦于金融级数据库产品,兼容MySQL生态,具备分布式、高可用、高性能等特性,已在多家金融机构落地应用。
星辰天合数据库(XDCDB) 星辰天合是一家专注企业级数据库产品研发的公司,其XDCDB数据库具备高性能、高可用、弹性扩展等特点,支持金融、电信、能源等行业应用。
以上各款国产数据库都在各自的领域取得了长足的进步,不断缩小与国际主流数据库产品间的差距,并在部分场景下展现出超越之势。随着云计算、大数据、人工智能等新技术的发展,国产数据库也在积极拥抱变化,拓展新的应用领域。