作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。
MySQL(本章节)
PostgreSQL
MongoDB
Redis
Etcd
数据库的第一篇文章首先就来介绍下常见的数据库有哪些,我们只会讲解上面哪几个数据库。
1. 关系型数据库 (RDBMS)
这是最传统和主流的类型,使用 SQL 作为查询语言,强调数据的 ACID 特性和严格的一致性。
- MySQL: 世界上最流行的开源关系数据库,以其易用性、可靠性和强大的社区生态而著称,是众多Web应用的首选。
- PostgreSQL: 功能最强大的开源关系数据库,被誉为“最先进的开源关系数据库”。支持高级数据类型(如JSON、XML、数组)、窗口函数、事务完整性等,并具有高度可扩展性。
- Oracle Database: 老牌商业数据库巨头,功能极其强大和稳定,常用于大型企业、金融、电信等核心交易系统。价格昂贵。
- Microsoft SQL Server: 微软旗下的主流关系型数据库,与 .NET 生态系统和 Windows Server 集成度极高,在中大型企业应用中非常流行。
- SQLite: 一款轻量级的、嵌入式的数据库,整个数据库就是一个文件。无需单独的服务器进程,广泛应用于移动应用(如Android、iOS)、桌面软件和小型网站。
- MariaDB: 由 MySQL 原始开发者开发,作为 MySQL 的一个分支,完全兼容 MySQL,但旨在保持开源自由并加入了一些新特性。是许多Linux发行版的默认选择。
2. NoSQL 数据库
为了解决关系型数据库在大数据量、高并发、灵活 schema 方面的挑战而诞生。
a. 文档型数据库 (Document Store)
- MongoDB: 最流行的文档数据库,使用类JSON的BSON格式存储数据,模式灵活,适合快速迭代开发。查询功能强大,支持索引、聚合等。
- Couchbase: 一个分布式的文档数据库,融合了缓存(如Redis)和文档存储的特性,性能非常高,主要用于需要低延迟读写的场景。
- CouchDB: 一个完全拥抱Web的数据库,使用JSON存储数据,JavaScript作为查询语言,支持强大的数据复制和同步功能。
b. 键值数据库 (Key-Value Store)
- Redis: 一个内存中的键值数据结构存储。它支持丰富的值类型(字符串、列表、哈希、集合等),提供极致性能(微秒级读写)。主要用途包括缓存、会话存储、消息队列、排行榜等。它也可配置数据持久化。
- Amazon DynamoDB: AWS 提供的全托管的 NoSQL 键/值和文档数据库,以低延迟和无限扩展能力著称。
c. 列式数据库 (Column-Family Store)
非常适合数据分析、数据仓库和BI(商业智能) 场景,因为它可以高效地读取和聚合大量数据中的特定列。
- Apache Cassandra: 一个高度可扩展、分布式的列存储数据库,以其无单点故障的架构和极高的写入吞吐量而闻名。
- Apache HBase: 构建在 Hadoop HDFS 之上的列式数据库,为Hadoop生态系统提供随机、实时读写访问大数据的能⼒。
- ClickHouse: 一个开源的联机分析处理(OLAP)列式数据库,以其惊人的查询速度 而著称,主要用于实时分析。
d. 搜索引擎数据库 (Search Engine)
专为全文搜索 而优化,核心功能是索引和快速检索非结构化的文本数据。
- Elasticsearch: 当前最流行的分布式搜索引擎。它不仅提供强大的全文搜索能力,还常被用作日志处理、分析和复杂聚合的工具。
- Apache Solr: 基于 Apache Lucene 的另一个企业级搜索平台,历史悠久,功能丰富。
e. 图数据库 (Graph Database)
专门用于存储和查询关系。它将数据存储为节点、边和属性,能高效处理复杂的关系网络。
- Neo4j: 是最知名的主流图数据库。适用于社交网络、欺诈检测、推荐系统、知识图谱等场景。
- JanusGraph: 一个可扩展的开源图数据库,通常与 Apache Cassandra、HBase 等存储后端配合使用。
3. 云原生数据库 & 数据仓库
由云厂商提供,通常是托管服务,省去了运维的麻烦,并深度融合了云的特性。
- Amazon Aurora: AWS 提供的关系型数据库,宣称具有开源数据库的简单性和成本效益,但提供了高端商业数据库的性能和可用性。
- Google BigQuery: 谷歌提供的全托管、无服务器(Serverless)的企业级数据仓库,支持超大规模数据的极速SQL查询。
- Snowflake: 一个构建在云平台之上的数据云平台,以其独特的存储与计算分离 架构而闻名。
- Microsoft Azure Cosmos DB: Azure 提供的全球分布式多模型数据库服务,支持键值、文档、图等多种数据模型。
4. 时序数据库 (Time-Series Database)
专门为处理时间序列数据(如监控指标、传感器数据)而优化。
- InfluxDB: 最流行的开源时序数据库,专为处理高写入和查询负载而设计。
- Prometheus: 一个开源的系统监控和警报工具包,其底层就是时序数据库。它是云原生领域的事实监控标准。
- TimescaleDB: 一个构建在 PostgreSQL 之上的时序数据库,完全支持 SQL。
5. 一致性协调 & 配置存储 (Consensus & Configuration Store)
这类数据库的核心是强一致性和高可用性,通常用于分布式系统中的服务发现、配置共享和元数据存储。
- Etcd: 一个高可用的分布式键值存储,使用 Raft 共识算法来保证数据一致性。它是 Kubernetes 等容器编排系统的默认后端存储,用于保存所有集群状态和数据。
- Apache ZooKeeper: 一个为分布式应用提供高性能协调服务的软件,是 Hadoop 和 HBase 的重要组件。
总结与选型建议
选择哪个数据库完全取决于您的业务场景和需求:
- 传统Web应用、交易系统:MySQL、PostgreSQL。
- 缓存、会话存储、高速读写:Redis。
- 配置管理、服务发现(如K8s):Etcd。
- 灵活的文档存储、内容管理:MongoDB。
- 全文搜索、日志分析:Elasticsearch。
- 大数据分析、数据仓库:ClickHouse、Snowflake、BigQuery。
- 处理高度关联的数据:Neo4j。
- 物联网、监控指标:InfluxDB、Prometheus。
- 追求极致扩展性和无单点故障:Apache Cassandra。
- 上云,不想管理数据库:对应云厂商的托管服务,如 Aurora、Cosmos DB、DynamoDB。