常见数据库分类

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/常见数据库分类/
作者
Panyurou
发布于
2025年4月16日
许可协议