常见数据库分类
1. 数据库分类
1.1. 按数据模型分类
分类 | 说明 | 典型代表 |
---|---|---|
关系型数据库 | 基于关系模型,数据以表格形式存储,支持 SQL 查询语言。 | MySQL、PostgreSQL、Oracle、SQL Server |
NoSQL 数据库(非关系型) | 非关系型数据库,不依赖固定表结构,支持灵活的数据模型。 | MongoDB、Redis、Neo4j、InfluxDB、Elasticsearch、ClickHouse |
1.2. 按存储方式分类
分类 | 说明 | 特点 |
---|---|---|
行存储 | 数据按行存储,适合事务处理和点查询。 | MySQL、PostgreSQL。 |
列存储 | 数据按列存储,适合分析型查询和批量处理。 | ClickHouse、 |
键值存储 | 数据以键值对形式存储,支持高速读写。 | Redis、Memcached。 |
文档存储 | 数据以文档形式存储(如 JSON),支持嵌套数据结构。 | MongoDB。 |
1.3. 按开源与商业分类
分类 | 说明 | 代表 |
---|---|---|
开源数据库 | 代码公开,社区驱动,免费使用。 | MySQL、PostgreSQL、MongoDB |
商业数据库 | 由公司开发,提供技术支持和高级功能,需付费。 | Oracle、SQL Server、SAP HANA。 |
2. 数据库对比
2.1. 关系型数据库对比
MySQL vs PostgreSQL vs Oracle vs SQL Server
数据库 | 设计目的 | 使用场景 | 开源 vs 商业 |
---|---|---|---|
MySQL | 面向 Web 应用和中小型项目,适合轻量级、高性能需求的场景 | Web应用、电子商务、内容管理系统(CMS)、数据分析、日志处理等 | 开源,由 Oracle 公司维护 |
PostgreSQL | 适合复杂查询、数据完整性和扩展性需求。支持复杂数据类型(如 JSON、数组、几何类型) | 复杂查询、数据仓库、地理信息系统(GIS)、金融应用、科学研究等 | 开源,完全免费,无商业限制 |
Oracle | 面向大型企业,提供全面的数据库解决方案。 | 企业资源规划(ERP)、客户关系管理(CRM)、银行系统、电信系统、政府机构等 | 商业闭源 RDBMS,由 Oracle 公司开发 |
SQL Server | 面向 Windows 企业用户,提供与微软生态的深度集成。 | 企业级应用、商业智能(BI)、数据仓库、报表生成、与Microsoft Office的集成等 | 商业闭源 RDBMS,由微软开发。 |
2.2. 非关系型数据库对比
MongoDB vs Redis vs Neo4j vs InfluxDB vs Elasticsearch vs ClickHouse
数据库 | 定义 | 设计目的 | 使用场景 |
---|---|---|---|
MongoDB | 分布式文档数据库 | 基于 BSON 格式存储,提供灵活的文档模型 | 金数据的表单和数据结构用户配置文件存储 |
Redis | 内存键值对数据库 | 基于内存存储,提供超高性能 | 缓存、会话存储、实时排行榜、计数器、分布式锁等。 |
Neo4j | 图形数据库 | 基于图形数据结构,处理复杂的关系网络数据 | 社交网络分析、物联网设备关系管理等。 |
InfluxDB | 时序数据库 | 专为时间序列数据设计 | 监控系统(CPU、内存使用情况)采集设备数据:主轴转速、倍率 |
Elasticsearch | 分布式全文搜索引擎和分析引擎 | 基于倒排索引,支持实时全文搜索和复杂聚合查询 | 日志分析、百度搜索。 |
ClickHouse | 列式存储数据库 | 基于列式存储,支持大规模数据的高效查询和分析 | 实时数据分析、大数据分析等。金数据表单数据平均值,最值计算 |
3. 常见数据库介绍
3.1 MongoDB
1. 原理
- 基于 BSON 格式的文档存储:数据以二进制 JSON(BSON)格式存储,支持动态模式,无需预定义结构。
- 分布式架构:通过分片(Sharding)和副本集(Replica Set)实现数据水平扩展和高可用性。
- 查询语言:提供类 SQL 的查询能力(MongoDB Query Language, MQL),支持复杂查询和聚合操作。
2. 核心概念
- 数据库(Database):MongoDB 的逻辑容器,类似于关系型数据库中的数据库。
- 集合(Collection):类似于关系型数据库中的表,存储一组文档。
- 文档(Document):MongoDB 的基本数据单元,以 BSON 格式存储,支持嵌套结构。
- 字段(Field):文档中的键值对,类似于关系型数据库中的列。
3. 设计目的
- 提供灵活的文档模型,适应快速变化的业务需求。
- 支持高并发读写,适用于内容管理系统、物联网数据存储等场景。
4. 使用场景
- 内容管理系统(CMS)
- 物联网(IoT)时序数据存储
- 产品目录管理
- 用户配置文件存储
3.2 Redis
1. 原理
- 基于内存存储:数据存储在内存中,提供超高性能的读写能力。
- 支持多种数据结构:包括字符串、列表、哈希、集合、有序集合等。
- 持久化机制:支持 RDB(快照)和 AOF(追加日志)两种持久化方式。
2. 核心概念
键值对(Key-Value Pair):Redis 的基本存储单元,键为字符串,值可以是多种数据结构。
数据结构:
- 字符串(String):简单的键值对。
- 列表(List):有序的字符串集合。
- 哈希(Hash):键值对的集合。
- 集合(Set):无序的字符串集合。
- 有序集合(Sorted Set):带分数的集合,按分数排序。
3. 设计目的
- 提供超高性能的内存数据结构服务器,适用于需要快速读写操作的场景。
- 支持持久化,确保数据不会因服务器重启而丢失。
4. 使用场景
- 缓存
- 会话存储
- 实时排行榜
- 计数器
- 分布式锁
- 消息队列
3. 3 Neo4j
1. 原理
- 基于图形数据结构:节点表示实体,边表示实体之间的关系。
- 属性图模型:节点和边都可以有属性,属性以键值对的形式存储。
- Cypher 查询语言:专为图形数据设计的查询语言,支持复杂的图形查询。
2. 核心概念
- 节点(Node):表示实体,如用户、产品等。
- 关系(Relationship):表示实体之间的关系,如朋友关系、购买关系等。
- 属性(Property):节点和边都可以有属性,如用户的年龄、产品的价格等。
- 标签(Label):用于分类节点,如用户节点可以有“管理员”标签。
3. 设计目的
- 处理复杂的关系网络数据,提供高效的图形查询和分析能力。
- 支持实时推荐和社交网络分析。
4. 使用场景
- 社交网络分析
- 推荐系统
- 金融风险管理
- 生物信息学(基因、蛋白质关系分析)
3.4 InfluxDB
1. 原理
- 专为时间序列数据设计:数据按时间戳组织,支持高写入和低查询延迟。
- 分布式架构:通过分片和副本集实现数据水平扩展和高可用性。
- 查询语言:支持类似 SQL 的查询语法(InfluxQL),提供强大的时间序列数据分析能力。
2. 核心概念
- Measurement(测量值):类似于关系型数据库中的表,存储一组相关的数据点。
- Tag(标签):用于索引的键值对,通常表示静态或低基数的属性。
- Field(字段):存储实际数据的键值对,通常表示动态或高基数的属性。
- Series(序列):由 Measurement、Tag Set 和 Timestamp 唯一确定的一组数据。
- Point(数据点):Series 中的一个单独数据记录,包含时间戳和字段值。
3. 设计目的
- 高效存储和查询时间序列数据,适用于监控和日志分析场景。
- 支持实时数据写入和历史数据查询。
4. 使用场景
- 监控系统(如 CPU、内存使用情况)
- 物联网设备数据
- 应用性能监控(APM)
- 日志数据存储与分析
3.5 Elasticsearch
1. 原理
- 基于倒排索引:数据以 JSON 格式存储,通过倒排索引加速搜索。
- 分布式架构:通过分片和副本集实现数据水平扩展和高可用性。
- 查询语言:支持强大的 DSL(Domain Specific Language)查询语法,提供复杂的全文搜索和聚合分析能力。
2. 核心概念
- 索引(Index):逻辑容器,存储一组相关的文档。
- 文档(Document):存储的基本单元,以 JSON 格式存储。
- 映射(Mapping):定义字段类型,类似于关系型数据库中的表结构。
- 倒排索引(Inverted Index):加速搜索的关键数据结构,将词映射到包含该词的文档。
3. 设计目的
- 提供分布式全文搜索和分析能力,适用于大规模数据检索和分析。
- 支持实时数据索引和查询。
4. 使用场景
- 日志分析
- 安全信息和事件管理(SIEM)
- 应用搜索
- 电子商务搜索
3.6 ClickHouse
1. 原理
- 基于列式存储:数据按列存储,支持高效压缩和并行处理。
- MergeTree 引擎:支持分区、排序键和压缩算法,优化查询性能。
- 查询语言:支持类似 SQL 的查询语法,提供强大的数据分析能力。
2. 核心概念
- 列式存储:数据按列存储,减少磁盘 I/O,提高查询性能。
- MergeTree 引擎:ClickHouse 的核心存储引擎,支持分区、排序键和压缩算法。
- 分区(Partition):将数据按时间或其他维度分区,提高查询效率。
- 排序键(Ordering Key):定义数据在列中的排序方式,影响查询性能。
- 压缩算法:支持多种压缩算法,减少存储空间。
3. 设计目的
- 提供高性能的 OLAP 查询能力,适用于实时数据分析场景。
- 支持大规模数据的高效查询和分析。
4. 使用场景
- 实时数据分析
- 大数据分析
- 数据仓库
- 商业智能(BI)
- 用户行为分析
常见数据库分类
http://example.com/常见数据库分类/