当前位置: 首页 > web >正文

2025-06-02-数据库的分类和应用

数据库的分类和应用

参考资料

  • 数据库介绍与分类 - 随心朝阳 - 博客园
  • 众多的数据库类型,你该怎么选择? | Amazon Web Services
  • 数据库类型:2025 年需要了解的一切 | Astera
  • 面向对象数据库详解:概念、设计与优化-CSDN 博客
  • 面向对象数据库解析-CSDN 博客
  • www.cnblogs.com

概述

数据库就是一个存放数据的仓库,这个仓库按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据。

我们的程序都是在内存中运行的,一旦程序运行结束或者计算机断电,程序运行中的数据都会丢失,所以我们就需要将一些程序运行的数据持久化到硬盘之中,以确保数据的安全性。说白了,数据库就是存储数据的仓库。

下面是数据库引擎的实时排名网站

  • DB-Engines Ranking

1749363632854DIYJbWTVbodBoBxVMgLclkiTnKh.png

关系型数据库(RDBMS)

关系型数据库以表—行—列结构存储数据,通过外键管理实体间关联,支持复杂联表和事务处理,是最成熟的数据库类型 。它使用 ANSI SQL 作为标准查询语言,可执行多表 JOIN、子查询和存储过程等操作,满足 OLTP(联机事务处理)场景需求 。

架构与事务

主流 RDBMS 如 MySQL(InnoDB 引擎)和 PostgreSQL 采用多版本并发控制(MVCC)实现高并发读写,同时提供行级锁、两阶段锁等机制保证隔离性 。在分布式部署中,一般通过主从复制读写分离分库分表或中间件 ShardingSphere 实现水平扩展,解决单机性能瓶颈。

性能优化

  • 索引设计:B+ 树、哈希索引和全文索引,各有取舍;
  • 查询优化:执行计划(EXPLAIN)、覆盖索引、分区表减少 I/O;
  • 缓存机制:如 MySQL Query Cache(已弃用)与 Buffer Pool;
  • 物理架构:SSD 替换 HDD、NUMA 拆分及内存调优 。

典型应用

  • 电商订单系统:保证库存扣减的强一致性与事务原子性;
  • 金融支付场景:对账、清分要求 ACID 特性;
  • 企业级 CRM/ERP:多表联动,复杂报表生成 。

NoSQL 数据库

1749363644852Vbg5bEP8gorZu8xdFGzcvskhn4e.png

NoSQL 数据库借助灵活的数据模型和可线性扩展架构,应对大数据、高并发与非结构化场景。主要分为以下几类:

键值存储(Key–Value)

1749363668852Nb0IbN0C2oIFKqxLYXvcB6uTnvf.png
1749363676852HnxhbGx8kofa7uxydEEcpm5Ynrd.png

键值数据库以唯一键(Key)直接定位值(Value),最典型产品是 Redis 与 Memcached 。

  • Redis 支持字符串、列表、集合、有序集合及哈希等多种数据类型,并提供持久化(RDB/AOF)与主从复制功能,可用作缓存、分布式锁、消息队列等 。
  • Memcached 轻量且高性能,专注内存缓存,适合对持久化需求不高的场景 。

文档存储(Document)

1749363690852HH52bVf6RoelESxNCobcq4PonBe.png

文档数据库以 JSON/BSON 形式存储半结构化数据,Collections 与 Documents 对应 RDBMS 的表与行。

  • MongoDB 提供二级索引、聚合框架与复制集、分片集群,可动态 Schema、轻松存储嵌套对象,常用于内容管理、用户画像和配置中心 。
  • Amazon DocumentDB(兼容 MongoDB)则是托管型服务,简化集群管理 。

列族存储(Column-Family)

1749363699853GUOMbxwMAoXTgSxByxRcA69xnpc.png

列族数据库以列簇方式存储行数据,适合宽表和稀疏表场景 。

  • Apache Cassandra 采用去中心化 P2P 架构,利用 Gossip 协议和一致性哈希分布数据,支持跨 DC 多活部署;
  • Apache HBase 构建于 HDFS 之上,通过 RegionServer 管理数据分片,擅长大规模时序和日志数据存储 。

这两者广泛应用于物联网指标存储用户行为日志大规模特征库等场景 。

图数据库(Graph)

1749363706852RdqubF5YqoW6I7xaDbxcUGmQnug.png

图数据库基于属性图模型,节点(Node)和边(Edge)存储实体及其关系,擅长多跳遍历与图算法。

  • Neo4j 原生支持 ACID 图事务和 Cypher 查询语言,适合社交网络知识图谱欺诈检测场景 。
  • JanusGraph 支持后端 Cassandra、HBase 存储,可结合 Gremlin 实现分布式图计算 。

面向对象数据库(OODBMS)

  • ORM 实例教程 - 阮一峰的网络日志

ORM 实例

1749363723088H85CbxxlqoFbC2xvZDxc3roZnXc.png

简单说,ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术,是"对象-关系映射"(Object/Relational Mapping) 的缩写。

ORM 把数据库映射成对象。

1749363730852LJKCbJUiPoMluPxXMtOcAHb1nQd.png

面向对象数据库将 OOP 对象直接存储于数据库,支持类、继承与方法 。它适用于 CAD/CAE嵌入式系统GIS 等复杂对象场景,避免了 ORM 带来的映射开销。

层次式与网状数据库

  • 层次式数据库(IMS、Windows 注册表)使用父子一对多结构,检索效率高但缺乏灵活性 。
  • 网状数据库 允许多对多父子关系,曾用于大型主机系统,如 IDMS,但因查询复杂逐步被关系型数据库取代 。

NewSQL:ACID + 分布式扩展

NewSQL 兼顾了关系型 SQL 事务和 NoSQL 的水平扩展能力,通常基于 Raft、Paxos 或 Google TrueTime 协议实现分布式一致性 。

  • TiDB 通过 PD+TiKV 自动分片、调度,兼容 MySQL 协议,适用于流量大、节点众多的 OLTP 场景 。
  • CockroachDB 利用 Raft 保证多副本强一致,支持多活部署;
  • Google Spanner 则借助硬件时钟同步提供全球一致性 。

NewSQL 常见于互联网金融全链路电商订单等要求强一致且海量扩展的场景 。


专用型数据库

时序数据库

针对时间序列做了专门优化,包括写密集、压缩、高效时间窗口查询 。

  • InfluxDB 的 TSM 引擎和 TICK Stack 生态;
  • TimescaleDB 基于 PostgreSQL 分区表实现,兼容 SQL 与生态 。

地理空间数据库

  • PostGIS 在 PostgreSQL 上提供 GiST 空间索引;
  • MongoDB 2dsphere 支持 GeoJSON 查询 。

全文搜索与分析引擎

  • Elasticsearch 基于 Lucene,支持倒排索引、聚合分析及 Near Real-Time(NRT)搜索 。
  • 常与 Logstash/Beats/Kibana 构建 ELK 堆栈,用于日志收集、处理与可视化 。

混合架构与选型指南

大型系统普遍采用 Polyglot Persistence,不同业务模块选用最合适的存储引擎:

  • 缓存层:Redis/Memcached 提升读写性能 。
  • 核心事务:MySQL/PostgreSQL 或 TiDB/CockroachDB 保证 ACID 。
  • 流式处理:Kafka、RabbitMQ 解耦异步;
  • 实时 BI:Elasticsearch/ClickHouse 提供快速聚合 。

选型建议

  1. 强一致事务 → 关系型/NewSQL
  2. 超高并发缓存 → Redis/Memcached
  3. 半结构化文档 → MongoDB/DocumentDB
  4. 宽表稀疏存储 → Cassandra/HBase
  5. 复杂关系分析 → Neo4j/JanusGraph
  6. 时序数据 → InfluxDB/TimescaleDB
  7. 全文检索 → Elasticsearch
http://www.xdnf.cn/news/12936.html

相关文章:

  • 大数据(3) 分布式文件系统HDFS
  • LeetCode 2894.分类求和并作差
  • 什么是函数对象
  • 【ArcGIS技巧】—村庄规划规划用地规划状态字段生成工具
  • 并发请求函数batchRequests
  • 类加载的过程
  • 【算法笔记】树套树
  • RSA和AES算法核心区别和原理解析
  • Python地理数学可视化:基于函数生成真实感地形
  • WebFuture 升级提示“不能同时包含聚集KEY和大字段””的处理办法
  • 【Docker 02】Docker 安装
  • 71常用控件_QHBoxLayout的使用
  • 浅谈未来汽车电子电气架构发展趋势中的通信部分
  • 【无人机】MavLink通讯协议的回调解析函数及状态机
  • AtCoder Beginner Contest 409(ABCDEF)
  • 深入解析对比学习:原理、应用与技术实现
  • 前端打包工具简单介绍
  • JavaWeb 三层架构简单介绍与案例实现
  • QEMU源码全解析 —— 块设备虚拟化(24)
  • 【Linux应用】Linux系统日志上报服务,以及thttpd的配置、发送函数
  • Java八股文——并发编程「场景篇」
  • 湖北理元理律师事务所实务手记:个人债务管理的理性突围
  • 65、.NET 中DllImport的用途
  • 轻量级数学竖式训练方案解析
  • Go语言多线程问题
  • Java 中字节流的使用详解
  • 用 AI 开发 AI:原汤化原食的 MCP 桌面客户端
  • UDP连接套接字与异步Socket通道详解
  • Java核心技术-卷I-读书笔记(第十二版)
  • ESP12E/F 参数对比