以下根据八大类别,逐一分析各个领域常用数据库的核心特点典型使用场景,帮助你在实际项目中做出精准选型。

  • 关系型数据库MySQL、Oracle、PostgreSQL、SQL Server
  • 关系型分布式数据库TiDB、Spanner、OceanBase、CockroachDB、YugabyteDB
  • 键值数据库Redis、Memcached、RocksDB、DynamoDB、Etcd
  • 文档数据库MongoDB、CouchDB 、Elasticsearch(搜索引擎)、Couchbase
  • 列式数据库ClickHouseDoris、StarRocks、Druid
  • 宽表数据库CassandraHBase、ScyllaDB
  • 时序数据库InfluxDBPrometheus、TDengine、TimescaleDB
  • 图数据库Neo4j、JanusGraph、Dgraph、NebulaGraph

不同类别数据库的比较

类别 核心原理 数据模型 一致性 扩展方式 典型优势 主要局限 使用场景
关系型数据库 基于关系模型 + ACID 事务,B+树索引 表(行/列)
固定 Schema
强一致性(ACID) 垂直扩展为主,分库分表复杂 事务强、SQL 标准、生态成熟 水平扩展难,Schema 变更成本高 订单系统、支付、ERP、CRM 等强一致业务
关系型分布式数据库 分布式架构 + SQL 兼容 + 分布式事务 表(逻辑)
自动分片
强一致性
(分布式 ACID)
水平扩展(自动分片) 高可用、弹性扩缩容、兼容 SQL 运维复杂,部分复杂查询性能弱 互联网高并发交易、HTAP 混合负载、替代分库分表
键值数据库 Key → Value 映射,哈希/LSM-Tree 存储 Key-Value 弱一致(Redis)强一致(etcd) 水平扩展(如 Redis Cluster) 极低延迟(μs 级)、高吞吐 无复杂查询,无法按 Value 检索 缓存、会话、分布式锁、配置中心、底层存储引擎
文档数据库 JSON/BSON 文档存储,无固定 Schema 自包含文档
(嵌套结构)
最终一致
强一致
水平扩展(按文档 ID 分片) Schema 灵活、开发效率高、减少 JOIN 跨文档事务弱,存储冗余 CMS、用户画像、IoT 设备数据、快速迭代产品
列式数据库 (OLAP) 按列存储 + 向量化执行 + 高压缩 列族(宽表)
面向分析
最终一致
(近实时)
水平扩展(MPP 架构) 聚合查询极快(亿级秒出) 不支持高并发点查,写入成本高 实时报表、用户行为分析、BI 看板、广告效果分析
宽表数据库 行 + 动态列族,LSM-Tree 存储 RowKey + ColumnFamily
(Qualifier)
CP(HBase)
AP(Cassandra)
水平扩展(自动分片) 高写入吞吐、适合稀疏数据 仅支持 RowKey 查询,JOIN 困难 聊天记录、消息历史、推荐特征宽表、IoT 时序写入
时序数据库 时间分区 + 列式压缩 + 追加写 时间戳 + 指标 + 标签 最终一致 水平扩展(按时间/设备分片) 高密度写入 + 高效压缩 通用性弱,非时序场景不适用 服务器监控、IoT 指标、APM、金融行情
图数据库 节点 + 边 + 属性,邻接表存储 图结构(Vertex/Edge) 强一致(单机)最终一致(分布式) 水平扩展(部分支持) 深度关系遍历极快 不适合简单 CRUD,生态较小 社交关系、欺诈检测、知识图谱、反洗钱

需求和推荐数据库类型

需求 推荐数据库类型 特点
需要 ACID 事务、强一致性 关系型 / NewSQL ACID 事务
数据结构频繁变化、半结构化 文档数据库 数据结构频繁变化
极致缓存性能、简单读写 键值数据库 数据查询性能高
实时报表、用户行为分析 列式数据库(OLAP) 实时聚合分析
海量写入、稀疏数据、RowKey 查询 宽表数据库 高并发写入 + 稀疏数据
监控、IoT、指标数据 时序数据库 时间戳 + 指标值的数据
社交、风控、知识图谱 图数据库 是“关系”而非“属性”
全文搜索、日志分析 搜索引擎(Elasticsearch) 全文搜索或日志分析

需求和推荐数据库

需求 推荐数据库
强事务 + 高并发 OLTP TiDB、CockroachDB、PostgreSQL
灵活 Schema + 快速迭代 MongoDB、Couchbase
全文搜索 + 日志分析 Elasticsearch
实时数仓 + 多维分析 StarRocks、Doris、ClickHouse
全球分布式 + 强一致 Spanner、CockroachDB、OceanBase
IoT / 监控时序数据 TDengine、InfluxDB、Prometheus
社交/风控图关系 Neo4j、NebulaGraph
高写入 + 高可用 Cassandra、ScyllaDB
缓存 / 会话 / 锁 Redis
K8s / 分布式协调 Etcd
  • 同类选型优先看“生态匹配”:如团队熟悉 PostgreSQL → 优先考虑 TimescaleDB/YugabyteDB;

  • 云上项目优先托管服务:如 AWS → DynamoDB,GCP → Spanner;

  • 性能敏感场景做 PoC:如 ClickHouse vs StarRocks,需实测写入/查询负载;

  • 避免过度设计:简单缓存用 Redis 足矣,无需上 Couchbase。

关系型数据库(OLTP)

OLTP(OnLine Transaction Processsing )为联机事务处理。是与功能、业务强相关的事务查询系统,要保证高并发场景下低时延的查询和处理效率。

  • 基于 关系模型(表、行、列)ACID 事务

  • 使用 SQL 作为标准查询语言;

  • 通过 B+树索引 支持高效点查和范围查询;

  • 通常采用 主从复制共享存储 实现高可用。

典型使用场景

  • 需要强一致性复杂事务的业务系统(如银行转账、订单支付);

  • 数据结构相对稳定,表间存在强关联(如用户-订单-商品);

  • 需要复杂 JOIN、子查询、窗口函数等分析能力;

  • 企业核心 ERP、CRM、财务系统。

局限和不足

  • 水平扩展困难(分库分表复杂);

  • 不适合半结构化或频繁变更的 Schema;

  • 高并发写入时性能瓶颈明显。

MySQL

  • 特点

    • 开源、社区活跃、生态完善;
    • 支持 InnoDB(ACID)、主从复制、分库分表(ShardingSphere/Vitess);
    • 性能均衡,适合中高并发 OLTP。
  • 使用场景

    • Web 应用后端(电商、社交、CMS);
    • 中小企业核心业务系统;
    • 与 ORM(如 MyBatis、Hibernate)深度集成。

PostgreSQL

  • 特点

    • 功能强大:支持 JSONB、GIS、全文检索、窗口函数、逻辑复制;
    • 严格遵循 SQL 标准,扩展性强(FDW、插件);
    • MVCC 实现优秀,读写性能均衡。
  • 使用场景

    • 复杂查询、地理信息系统(PostGIS);
    • 金融、电信等对数据一致性要求高的系统;
    • 作为 TimescaleDB、Citus 等扩展的基础。

Oracle

  • 特点

    • 商业数据库王者,高可用(RAC)、高安全、强事务;
    • 运维复杂、成本高;
    • 支持海量数据、复杂 PL/SQL。
  • 使用场景

    • 银行、保险、政府等传统行业核心系统;
    • 需要强审计、高 SLA 的关键业务。

SQL Server

  • 特点

    • 与 Windows/.NET 生态深度集成;
    • BI 工具(SSIS/SSAS/SSRS)强大;
    • 云上 Azure SQL 提供托管服务。
  • 使用场景

    • 企业内部 ERP、CRM 系统(尤其微软技术栈);
    • 数据仓库与报表分析一体化场景。

全面比较

数据库 开源 高可用方案 扩展性 典型优势 主要局限 适用场景
MySQL 主从复制、MGR、InnoDB Cluster 垂直扩展为主,分库分表需中间件 生态成熟、社区活跃、运维简单 复杂查询优化弱,JSON 支持一般 Web 应用、中小电商、SaaS 后端
PostgreSQL 流复制 + Patroni、逻辑复制 垂直扩展,Citus 支持分片 功能强大(GIS、JSONB、窗口函数)、标准兼容好 运维略复杂,内存管理较重 金融系统、地理信息、复杂分析型 OLTP
Oracle RAC(Real Application Clusters) 垂直扩展,Exadata 支持横向 企业级高可用、安全审计强、PL/SQL 成熟 成本极高、运维复杂 银行核心系统、政府、大型企业 ERP
SQL Server 否(有 Express 免费版) Always On AG、Failover Cluster 垂直扩展,Azure SQL 支持弹性池 与 .NET 深度集成、BI 工具强大 仅 Windows/Linux 有限支持,云绑定强 企业内部系统(ERP/CRM)、微软技术栈

关系型分布式数据库(NewSQL)

  • 在保留 SQL 兼容性 + ACID 事务 的前提下,通过 分布式架构(如 Raft/Paxos + 分片)实现水平扩展;

  • 数据自动分片(Sharding),计算与存储分离;

  • 支持 分布式事务(如 2PC、Percolator、TSO)。

典型使用场景

  • 互联网高并发交易系统(如双11订单、支付);

  • 需要从 MySQL/Oracle 平滑迁移 且解决扩展性问题;

  • HTAP 混合负载(同时支持 OLTP + 实时分析);

  • 全球多活部署(如 SaaS 服务)。

局限和不足

  • 运维复杂度高于单机数据库;

  • 部分 NewSQL 对复杂 JOIN 支持有限;

  • 开源版功能可能弱于商业版。

TiDB

  • 特点

    • 兼容 MySQL 协议,HTAP 架构(TiKV + TiFlash);
    • 强一致性(Raft)、弹性扩缩容;
    • 适合从 MySQL 平滑迁移。
  • 使用场景

    • 互联网高并发交易系统(如支付、订单);
    • 需要实时分析的混合负载(HTAP);
    • 替代 MySQL 分库分表方案。

CockroachDB

  • 特点

    • 兼容 PostgreSQL 语法;
    • 多活(Multi-Region)部署,自动故障转移;
    • 强一致性(基于 Raft + HLC)。
  • 使用场景

    • 全球分布式 SaaS 应用;
    • 对数据强一致性和高可用要求极高的系统;
    • 云原生架构(K8s 友好)。

OceanBase

  • 特点

    • 蚂蚁集团自研,Paxos 多副本强一致;
    • 高压缩比、低成本存储;
    • 支持超大规模集群(百万 QPS)。
  • 使用场景

    • 金融级核心系统(如双11交易);
    • 国内政企、银行替换 Oracle 的首选。

Spanner(Google Cloud)

  • 特点

    • 全球分布式、TrueTime API 实现外部一致性;
    • 托管服务,无需运维;
    • 成本高,仅限 GCP。
  • 使用场景

    • 全球化业务(如 Google Ads、Play Store);
    • 需要跨洲强一致性的 SaaS 平台。

YugabyteDB

  • 特点

    • 兼容 PostgreSQL + Cassandra API;
    • 分布式 SQL,支持多模型;
    • 开源 + 云托管(YugabyteDB Managed)。
  • 使用场景

    • 需要同时处理关系型和宽表数据的混合场景;
    • 从 Cassandra 迁移但希望获得 SQL 能力。

全面比较

数据库 开源 SQL 兼容 分布式事务 多活支持 典型优势 主要局限 适用场景
TiDB MySQL 支持(Percolator) 同城多活 与 MySQL 兼容,HTAP 一体 跨 AZ 延迟敏感,资源消耗大 替代 MySQL 分库分表,互联网高并发交易
CockroachD 是(BSL) PostgreSQL 支持(Spanner-like) 全球多活 强一致性、K8s 友好、自动 rebalance JOIN 性能一般,学习曲线陡 全球化 SaaS、云原生应用
OceanBase 是(社区版) MySQL / Oracle 支持(Paxos) 多地多活 高压缩比、金融级高可用 生态较新,文档偏中文 银行核心系统、国产化替代 Oracle
Spanner 是(GCP 托管) ANSI SQL 支持(TrueTime) 全球强一致多活 全球部署、外部一致性 仅 GCP,成本高 Google 级全球化业务(如 Ads)
YugabyteDB PostgreSQL + Cassandra 支持 多区域部署 多 API 支持,云原生 社区较小,企业版功能强 混合负载(关系+宽表),云迁移

键值数据库(KV)

  • 最简单的 NoSQL 模型:Key → Value

  • Value 可以是字符串、字节数组,或复杂结构(如 Redis 的 List/Hash);

  • 通常基于 哈希表LSM-Tree 实现;

  • 读写性能极高(微秒级延迟)。

典型使用场景

  • 缓存(Redis 缓存热点数据);

  • 会话存储(用户登录态);

  • 分布式锁、计数器、排行榜

  • 配置中心、服务发现(etcd);

  • 底层存储引擎(RocksDB 被 Kafka、Flink 等使用)。

局限和不足

  • 不支持复杂查询(无 WHERE、JOIN);

  • 无法按 Value 内容检索(除非额外建索引);

  • 通常不保证强一致性(除 etcd 等协调类 KV)。

Redis

  • 特点

    • 内存存储,支持 String/List/Hash/Set/ZSet/Stream;
    • 持久化(RDB/AOF)、主从、Cluster;
    • 低延迟(微秒级)。
  • 使用场景

    • 缓存(热点数据);
    • 分布式锁、会话存储、排行榜、消息队列(轻量)。

Memcached

  • 特点

    • 纯 KV,无数据结构;
    • 多线程、高性能,但无持久化、无高可用。
  • 使用场景

    • 简单缓存(如页面缓存);
    • 作为 Redis 的补充(极简场景)。

RocksDB

  • 特点

    • 嵌入式、LSM-Tree 存储引擎;
    • 高写入吞吐,用于底层存储。
  • 使用场景

    • 作为 Kafka、Flink、TiDB、Cassandra 等系统的存储引擎;
    • 自研数据库的底层组件。

DynamoDB(AWS)

  • 特点

    • 托管服务,自动扩缩容;
    • 支持文档和键值,强一致性可选;
    • 按请求计费。
  • 使用场景

    • Serverless 应用后端;
    • 高可用、免运维的云原生应用。

Etcd

  • 特点

    • 基于 Raft 的分布式 KV;
    • 强一致性、Watch 机制;
    • K8s 的核心组件。
  • 使用场景

    • 分布式系统配置中心;
    • 服务发现、Leader Election。

全面比较

数据库 存储位置 数据结构 持久化 高可用 典型优势 主要局限 适用场景
Redis 内存(可持久化) String/List/Hash
Set/ZSet/Stream
支持(RDB/AOF) Sentinel / Cluster 丰富数据结构、低延迟(μs) 内存成本高,大 Key 风险 缓存、会话、排行榜、轻量队列
Memcached 内存 纯 KV 不支持 无(客户端分片) 多线程、极高并发 无持久化、无高可用、功能单一 简单缓存(页面/会话)
RocksDB 磁盘(嵌入式) KV(LSM-Tree) 支持 无(依赖上层) 高写入吞吐、低资源占用 非独立服务,需集成 作为 Kafka/Flink/TiDB 底层引擎
DynamoDB 云托管 KV + 文档 支持 自动多 AZ 免运维、自动扩缩容、按需计费 云绑定、调试困难 Serverless 应用、云原生后端
etcd 磁盘 KV 支持(WAL + Snapshot) Raft 多副本 强一致、Watch 机制、K8s 核心 不适合大 Value、吞吐有限 分布式协调、配置中心、服务发现

文档数据库(NoSQL)

  • JSON/BSON 文档 为基本单元,支持嵌套结构;

  • 无固定 Schema,字段可动态增减;

  • 每个文档自带完整上下文,减少 JOIN;

  • 通常按 文档 ID 哈希分片,支持水平扩展。

典型使用场景

  • 内容管理系统(CMS)(文章、商品详情);

  • 用户画像(每个用户一个文档,属性动态);

  • IoT 设备数据(设备上报 JSON,结构不一);

  • 快速迭代的互联网产品(避免频繁改表);

  • 移动端离线同步(CouchDB 的多主复制)。

局限和不足

  • 复杂跨文档 JOIN 困难(需应用层处理);

  • 事务支持有限(MongoDB 4.0+ 支持,但性能有损);

  • 存储空间通常大于关系型(冗余字段)。

MongoDB

  • 特点

    • BSON 文档模型,灵活 Schema;
    • 支持聚合管道、索引、事务(4.0+);
    • 分片集群支持水平扩展。
  • 使用场景

    • 内容管理(CMS)、用户画像;
    • IoT 设备数据存储;
    • 快速迭代的互联网产品(避免频繁改表)。

CouchDB

  • 特点

    • HTTP/RESTful API;
    • 多主同步(Multi-Master Replication);
    • 离线优先。
  • 使用场景

    • 移动端/边缘设备数据同步(如医疗、野外作业);
    • 分布式协作系统。

Couchbase

  • 特点

    • 文档 + KV + SQL++ 查询;
    • 内存优先架构,低延迟;
    • 企业级安全与监控。
  • 使用场景

    • 高并发 Web 应用(如游戏、社交);
    • 会话存储、实时推荐系统。

Elasticsearch(搜索引擎)

  • 特点

    • 倒排索引 + 全文检索;
    • 实时聚合、近实时写入;
    • 分布式原生支持。
  • 使用场景

    • 商品/文章搜索;
    • 日志分析(ELK);
    • 监控告警、用户行为分析。

全面比较

数据库 文档格式 事务支持 查询能力 同步能力 典型优势 主要局限 适用场景
MongoDB BSON 支持(4.0+ 多文档) 聚合管道、索引、文本搜索 副本集 + 分片 生态最强、工具链完善 事务性能有损,存储膨胀 用户画像、CMS、IoT 设备数据
CouchDB JSON 不支持 MapReduce、Mango Query 多主双向同步 离线优先、HTTP API 查询能力弱,社区小 移动端离线应用、边缘计算
Couchbase JSON 支持(部分) N1QL(类 SQL)、全文搜索 XDCR(跨集群复制) 低延迟、企业级功能全 商业版贵,开源版功能有限 游戏后端、实时推荐、会话存储
Elasticsearch JSON 不支持 全文检索、聚合、向量搜索 分片副本自动同步 搜索性能极强、近实时 不适合主库,更新成本高 商品搜索、日志分析(ELK)、监控

列式数据库(OLAP)

OLAP(OnLine Analytical Processing )为联机分析处理。是数据仓库系统的主要应用,能够支持复杂的分析操作,与数据库需要直接直接线上业务不同,数据仓库侧重于分析决策,提供直观的数据查询结果。

  • 数据按 列连续存储(而非按行),适合只读少数列的聚合查询;

  • 利用 向量化执行数据压缩(同列数据相似度高)提升性能;

  • 通常采用 MPP(大规模并行处理) 架构;

  • 不支持高并发点查或事务。

典型使用场景

  • 实时数仓(替代 Hive + Spark);

  • 用户行为分析(PV/UV、漏斗、留存);

  • BI 报表、Dashboard(秒级响应亿级数据);

  • 广告效果分析、风控指标计算

局限和不足

  • 写入吞吐较低(需合并段文件);

  • 不适合频繁更新或点查;

  • 无法作为业务主库(OLTP)。

ClickHouse

  • 特点

    • 向量化执行、极致压缩;
    • 高吞吐(十亿级数据秒级响应);
    • 不支持事务、更新成本高。
  • 使用场景

    • 用户行为分析、广告效果分析;
    • 实时报表、BI 看板。

Doris / StarRocks

  • 特点

    • MPP 架构,支持高并发点查 + 复杂聚合;
    • 实时更新(Primary Key 模型);
    • 兼容 MySQL 协议。
  • 使用场景

    • 实时数仓(替代 Hive + Spark);
    • 多维分析(如 GMV、DAU 实时看板)。

Druid

  • 特点

    • 流批一体,低延迟摄入;
    • 高并发查询(数千 QPS);
    • 时间分区 + 列式存储。
  • 使用场景

    • 实时监控(如 APM、IoT 指标);
    • 用户行为漏斗分析。

全面比较

数据库 架构 实时写入 高并发点查 SQL 支持 典型优势 主要局限 适用场景
ClickHouse MPP 高频追加 低并发 类 SQL 极致分析性能、高压缩 不支持事务,更新困难 用户行为分析、广告报表
StarRocks MPP Primary Key 模型 MySQL 协议 实时更新 + 高并发 + 复杂聚合 运维较新,社区成长中 实时数仓、BI 看板
Doris MPP 支持 MySQL 协议 开源、易用、兼容 StarRocks 功能略少于 StarRocks 中小企业实时分析
Druid Lambda 流批一体 高并发 Druid SQL 低延迟摄入、高 QPS 查询 架构复杂,运维成本高 实时监控、漏斗分析

宽表数据库(Wide-Column)

  • 逻辑上是 “行 + 动态列族” 模型(如 HBase 的 RowKey + ColumnFamily:Qualifier);

  • 物理存储接近 稀疏矩阵,适合海量稀疏数据;

  • 通常基于 LSM-Tree,写入性能极高;

  • 强调 高可用 + 高写入吞吐,一致性模型可调(CP 或 AP)。

典型使用场景

  • 消息历史、聊天记录(按用户 ID 查询所有消息);

  • 时序数据存储(传感器、监控指标);

  • 推荐系统特征宽表(每个用户一行,千级特征列);

  • 大数据平台底层存储(HBase + Hadoop 生态)。

局限和不足

  • 查询只能基于 RowKey,二级索引需额外维护;

  • 不支持复杂查询或 JOIN;

  • 读取整行效率低(若列很多)。

Cassandra

  • 特点

    • AP 系统,无单点故障;
    • 高写入吞吐,最终一致性;
    • CQL 类似 SQL。
  • 使用场景

    • 消息推送、聊天记录;
    • 时序数据(如传感器日志);
    • 高可用写入场景(如 IoT)。

HBase

  • 特点

    • CP 系统,强一致性;
    • 依赖 HDFS,适合海量存储;
    • 随机读写性能一般。
  • 使用场景

    • 大数据平台底层存储(如 Hadoop 生态);
    • 历史数据归档、用户画像宽表。

ScyllaDB

  • 特点

    • C++ 重写 Cassandra,低延迟(微秒级);
    • 兼容 Cassandra 协议;
    • 更高吞吐、更低资源消耗。
  • 使用场景

    • 对延迟敏感的 Cassandra 替代方案;
    • 金融、电信等高性能场景。

全面比较

数据库 一致性 写入性能 查询模型 典型优势 主要局限 适用场景
Cassandra 最终一致(可调) 很高 CQL(仅 RowKey) 无单点、高写入、多 DC 读性能一般,JOIN 不支持 消息历史、IoT 写入
HBase 强一致 Scan / Get(RowKey) Hadoop 生态集成 依赖 ZooKeeper/HDFS,运维重 大数据平台底层存储
ScyllaDB 最终一致 很高 兼容 CQL 低延迟(μs)、高吞吐 社区较小,商业支持为主 高性能 Cassandra 替代

时序数据库(TSDB)

  • 专为 时间戳 + 指标值 数据优化;

  • 数据按 时间分区 + 列式压缩

  • 支持 降采样、连续查询、窗口函数

  • 写入模型为 追加写(Append-only),极少更新。

典型使用场景

  • 服务器/应用监控(CPU、内存、QPS);

  • IoT 设备指标采集(温度、位置、电量);

  • 金融行情数据(股票价格、交易量);

  • APM(应用性能监控)

局限和不足

  • 不适合非时序业务数据;

  • 通用性弱,无法替代关系型或文档库;

  • 部分 TSDB 不支持复杂标签查询。

InfluxDB

  • 特点

    • 专用时序数据模型(measurement, tag, field);
    • Flux 查询语言;
    • 云托管(InfluxDB Cloud)。
  • 使用场景

    • DevOps 监控、IoT 设备指标;
    • 自定义指标采集与告警。

Prometheus

  • 特点

    • Pull 模型,服务发现;
    • PromQL 强大;
    • 生态丰富(Alertmanager, Grafana)。
  • 使用场景

    • K8s 监控、微服务指标;
    • 云原生监控标准。

TDengine

  • 特点

    • 国产,高性能(10x InfluxDB);
    • 一个设备一张表,自动分片;
    • 支持 SQL。
  • 使用场景

    • 工业 IoT、车联网;
    • 高密度时序数据写入(如百万设备)。

TimescaleDB

  • 特点

    • 基于 PostgreSQL,完全兼容 SQL;
    • 支持关系表 + 时序表 JOIN;
    • 支持连续聚合。
  • 使用场景

    • 已有 PostgreSQL 生态的团队;
    • 需要时序 + 业务数据联合分析(如订单 + 监控)。

全面比较

数据库 数据模型 写入性能 查询语言 特色功能 适用场景
InfluxDB measurement, tag, field Flux / InfluxQL 连续查询、降采样 DevOps 监控、IoT 指标
Prometheus metric + labels 中高 PromQL 服务发现、Alertmanager K8s 监控、微服务指标
TDengine 超表(每个设备一张子表) 很高 类 SQL 高压缩、自动分片 工业 IoT、车联网
TimescaleDB 关系表 + 时序超表 标准 SQL 与 PG 生态无缝集成 已有 PostgreSQL 的团队,需时序+业务联合分析

图数据库

  • 节点(Vertex) + 边(Edge) + 属性 为核心模型;

  • 使用 原生图存储(邻接表)或 索引优化

  • 查询语言如 Cypher、Gremlin,支持 深度遍历(如“6度人脉”);

  • 遍历性能远超关系型数据库(JOIN 多层效率极低)。

典型使用场景

  • 社交网络关系(好友推荐、影响力分析);

  • 欺诈检测(识别异常资金环路);

  • 知识图谱(实体关系推理);

  • 供应链、物流路径优化

  • 反洗钱(AML)风控网络

局限和不足

  • 不适合简单 CRUD 或聚合分析;

  • 大规模图的存储和计算成本高;

  • 生态和工具链不如关系型成熟。

Neo4j

  • 特点

    • 原生图存储,Cypher 查询语言;
    • 单机性能强,集群版需企业许可;
    • 可视化工具优秀。
  • 使用场景

    • 社交关系、欺诈检测;
    • 知识图谱、推荐系统(“好友的好友”)。

JanusGraph

  • 特点

    • 开源,依赖 HBase/Cassandra + Elasticsearch;
    • 支持 Gremlin 查询;
    • 可扩展性强。
  • 使用场景

    • 超大规模图(百亿边);
    • 与 Hadoop 生态集成的大数据图分析。

Dgraph / NebulaGraph

  • 特点

    • 原生分布式,支持 GraphQL± / nGQL;
    • 高性能、水平扩展;
    • 开源 + 云服务。
  • 使用场景

    • 实时图查询(如风控、反洗钱);
    • 互联网级图应用(如社交网络)。

全面比较

数据库 存储模型 查询语言 分布式 典型优势 适用场景
Neo4j 原生图(单机强) Cypher 企业版支持 可视化好、生态成熟 社交关系、知识图谱(中小规模)
NebulaGraph 原生分布式图 nGQL 支持 高性能、开源、云原生 互联网级图应用(风控、推荐)
JanusGraph 基于 HBase/Cassandra Gremlin 支持 与大数据生态集成 超大规模图(百亿边)
Dgraph 原生分布式 GraphQL± 支持 低延迟、易用 实时图查询、SaaS 应用

DB 选型建议

最好的数据库,是团队能驾驭、业务能受益、未来能演进

image-20251028205202423

选型流程

选型执行流程(6 步法)

image-20251028205447744
  1. PoC(概念验证)

    • 模拟真实流量压测(写入/查询/故障恢复)
    • 测试备份恢复流程(如 pg_dump vs mongodump
  2. 监控与可观测性验证

    • 是否支持 Prometheus/Grafana?
    • 能否看到慢查询、连接池、磁盘 IO?
  3. 灾难恢复演练

    • 模拟节点宕机,观察自动 failover 时间
    • 验证跨 AZ/Region 容灾能力

技术vs成本

不要只看技术指标,更要评估“全生命周期成本”

维度 说明
学习成本 团队是否熟悉?是否有成熟开发/ORM 支持?(如用 Cassandra 但团队只会 SQL,风险极高)
运维成本 是否需要专职 DBA?监控、备份、扩缩容是否自动化?(如 HBase 运维复杂度远高于 Redis)
人力成本 招聘难度?社区活跃度?(如 Oracle DBA 贵且少,PostgreSQL 人才更易得)
迁移成本 未来能否平滑迁移到其他系统?数据导出是否方便?(避免被云厂商锁定)

在 PoC(概念验证)阶段,让开发和运维共同参与评估,而不仅是架构师拍板。

成本类型 自建 云托管
硬件成本 服务器、存储、网络 按需付费(CPU/内存/存储/IOPS)
人力成本 DBA + 运维 + 开发适配 接近 0(但需云平台技能)
许可成本 开源免费 or 商业授权(Oracle) 按小时/请求计费
隐性成本 故障损失、迁移成本、学习曲线 厂商锁定、调试黑盒

分层存储

根据系统性质决定分层存储 + 多数据库协同

image-20251028182837144
  • 主库:强一致、事务 → 关系型/NewSQL

  • 缓存:低延迟 → Redis

  • 搜索:全文检索 → Elasticsearch

  • 分析:聚合查询 → 列式数据库

  • 日志/指标:时序写入 → Prometheus/TDengine

优先考虑“生态兼容性”,而非单纯性能

场景 推荐选择
团队已用 Spring Boot + JPA → PostgreSQL / MySQL(而非 MongoDB)
已有 Hadoop 大数据平台 → HBase / Hive(而非 ClickHouse)
全栈 TypeScript + Firebase → Firestore(而非自建 CouchDB)
云上 AWS 环境 → Aurora / DynamoDB(而非自建 TiDB)

明确“数据 SLA”:一致性、延迟、持久性、可用性

使用 CAP / PACELC 模型 明确需求:

  • 银行转账 → CP(强一致) → 选 PostgreSQL / TiDB

  • 社交点赞 → AP(高可用) → 选 Cassandra / DynamoDB

  • 监控告警 → 低延迟 + 高写入 → 选 TDengine / InfluxDB

  • 能容忍多少秒的数据延迟?

  • 数据丢失是否可接受?(如日志可丢,订单不可丢)

  • 系统宕机时,优先保可用还是保一致?

特性比较

根据需求特性和技术特性选择,以符合业务所需。

SVG content