现在都有哪些数据库 各自区别和应用场景

入门与上手

梳理关系型、文档、键值、列族、图、向量、时序等主流数据库的差异,给出一套可直接执行的选型判断顺序与验证清单。

做选型时最常卡住的不是「不知道有哪些数据库」,而是知道一堆名字却说不清它们各自为什么长这样。这篇按数据形状、访问模式、一致性要求、扩展方向四条线把主流类型摆开,再给一套从写清单到压测验证的顺序;读完你能自己判断某个业务该落到哪一类,而不是照抄别人的技术栈。

做选型时最常卡住的不是「不知道有哪些数据库」,而是知道一堆名字却说不清它们各自为什么长这样。你去看对比文章,往往一半在讲数据模型,一半在讲某家产品的部署形态,还有一半在讲某个垂类场景的封装,三者根本不在同一个维度上,所以越查越乱。

这篇换个做法:按数据形状、访问模式、一致性要求、扩展方向四条线把主流类型摆开,再给一套从写清单到压测验证的顺序。读完你应该能自己判断某个业务该落到哪一类,而不是照抄别人的技术栈。需要注意的是,如果你所在的组织已经绑死了某类引擎(合规要求、团队只会一种运维栈),选型空间其实很小,先确认约束再谈技术,别浪费时间去比较用不上的选项。

为什么「有哪些数据库」这个问题越查越乱

市面上的名字是按不同维度混在一起卖的:有的是数据模型(关系、文档、图),有的是部署形态(单机、分布式、托管),有的是用途封装(向量、时序、搜索)。不在同一层,就永远对不上号。你要做的第一件事是把名字拆成两层看:一层是引擎类型,它决定能力边界;另一层是某家的产品名,它决定运维方式和账单形态。

引擎类型
数据模型加上存储与查询方式,决定了它能做什么、不能做什么,换产品也改不了
产品形态
同一类引擎有自建、云托管、兼容层等不同包装,影响的是运维人力与成本,不影响能力上限
用途封装
向量、时序、搜索这类往往是为主库打补丁的专用引擎,通常并存而不是替代

第一刀:你的数据长什么样

这一刀最好切,因为数据形状基本改不了。你先拿出一张真实的表或一条真实的记录,看它是规规矩矩的列,还是一条自带完整结构的文档,还是一堆点和边,还是一串高维数字。形状不对,后面所有优化都是在跟引擎打架。

数据形状更顺手的类型代价
结构化、多表关联、要事务关系型横向扩展需要额外方案,分片后跨节点事务变复杂
字段不固定、单条记录自洽文档型跨集合关联弱,复杂聚合写起来费劲
点与边、要按路径跳多层图数据库数据量和运维成本随边数增长明显
高维向量、按相似度取最近向量型通常作为补充引擎,和主库并存
  • 结构化且关系多、要跨表关联和事务:关系型是默认起点,多数业务不需要绕过它
  • 字段不固定、一条记录自带完整结构、读多写少:文档型更顺手
  • 天然是点与边、要按路径跳几层:图数据库,用关系型硬写多层递归会很痛苦
  • 高维向量、要按相似度找最近的几条:向量型,它通常和主库并存而不是替换主库

第二刀:访问模式和一致性要求

形状对了还要看怎么用。同样是结构化数据,一天写几条和每秒写几万条,落到的基础设施完全不是一回事;同样要求毫秒返回,按主键查和按任意字段组合查,难度也差着量级。这一刀的重点是把「读多写少还是写多读少」「查询条件是固定几种还是任意组合」写清楚。

  • 写下为主、量极大、按时间顺序追加:时序或列族方向,关系型在写入吞吐上会先顶不住
  • 读放大严重、要求毫秒级按主键取:键值型,代价是查询维度几乎锁死在主键上
  • 必须强一致且跨多行多表:优先关系型的事务能力,换成最终一致的库要自己在业务层补补偿逻辑
  • 一致性只影响日志、埋点、推荐结果这类可重算的数据:最终一致完全够用,不必硬上强一致

第三刀:扩展方向选纵向还是横向

先量清楚当前数据量和增长曲线。多数项目在单机加索引加缓存这一层就能撑很久,过早分布式会先输在运维复杂度上:分片键选错、跨分片查询变慢、扩容时数据重分布,每一项都是实打实的人力。判断标准不是「大厂用了什么」,而是你的查询里有几张表参与、能不能接受跨分片查询。

  1. 先量数据量和增长曲线取当前数据量、近几个月的月增量、单条记录的平均大小,算出大约多久会到单机上限;这一步不做,后面全是拍脑袋。
  2. 列出典型查询的形状把线上最常跑的十几条查询写出来,标注涉及几张表、返回多少行、有没有排序和聚合;查询形状决定了你能不能接受分片键带来的限制。
  3. 确认横向扩展的代价如果需要横向扩,先确认分片键、跨分片查询频率、扩容时是否需要停机;能接受这些限制,再选键值、列族或部分文档型。
  4. 确认纵向还能撑多久如果查询复杂、跨表多,又必须横向扩,分布式关系型或兼容层是折中,但要实测跨节点事务和延迟的实际表现。

还有一条容易被忽略:扩展方向一旦定了,数据模型往往要跟着改。所以第三步要放在写代码之前,而不是上线之后才发现分片键选错。

向量、全文、时序这几类特殊库什么时候必须上

这三类经常被当成「下一代数据库」来推,其实它们多数是补充引擎,不是替代主库。判断要不要上,看的是主库有没有明确的短板,而不是别人都在用。常见做法是主库照旧,专用引擎异步同步一份过去,不一致时以主库为准。

类型什么时候必须上什么时候不必上常见配合方式
向量检索做语义搜索、推荐召回、RAG 知识库只是关键词匹配,全文索引就够和主库并存,异步同步数据
全文检索需要分词、相关性排序、模糊匹配和高亮只在少量字段做等值过滤主库双写检索库,检索结果回表
时序指标、监控、设备上报,按时间密集写入并做区间聚合写入量小、只做简单统计主库存元数据,时序库存采样点

决定上之前,先把数据怎么同步、不一致时以谁为准、回滚时怎么把专用引擎摘掉写进方案。这三件事没写清楚,上线后就是事故来源。

一套能照着走的选型顺序

把前面几刀收成一条能执行的流程。核心思路是先用约束砍掉大部分选项,再用真实数据做一次压测验证,最后确认退路。不要一上来就列十几项的对比表,那样你只会在参数里迷路。

  1. 写清三件事数据形状(结构化/半结构化/图/向量)、核心查询(按什么字段、什么条件、返回多少)、一致性底线(能接受最终一致吗);写成一段话,发给团队里的人看能不能看懂。
  2. 交叉筛到一到两类按数据形状、访问模式、扩展方向三刀交叉,通常只剩一到两类引擎;剩下的再看产品形态(自建还是托管)和运维成本。
  3. 用真实数据压测拿真实数据量和真实查询做压测,看写入吞吐、按典型查询的延迟、数据膨胀后索引是否还生效;具体基准数值到 /tools/speed-test 按当时口径核对。
  4. 确认退路数据怎么导出、能不能双写并行跑一段、迁移失败怎么回滚;这三条写进方案,再开始动手。

新手最容易踩的几个坑

这些坑之所以常见,是因为它们在短期看起来都是「先进做法」,长期才暴露成本。下面几条,小团队尤其要克制。

  • 为了「先进」上多套存储,结果同步链路成了事故来源,可用组件越多,出错面越大
  • 把缓存当数据库用,重启后数据没了才想起没有持久化策略
  • 忽略运维成本:备份、扩容、版本升级、监控指标这些在自建时都是人力,托管则体现为账单,两边都要算
  • 用别人的基准数字做决策,而不是用自己数据的压测结果
  • 没想好回滚路径就动手迁,真出问题时无法退回原方案

如果你已经踩进了第一条,别急着再加一套工具去补救,先把数据流画出来,看看哪一步是真正必要的。多数情况下,减少一个环节比增加一个监控更有效。至于各家产品的价格和当前口径,去 /price-watch 和 /sites 核对当时的数字,不要用旧印象做判断。

上线前对照清单

选型本身不是终点,上线前还需要把运维和数据安全的事确认一遍。下面这份清单可以直接拿去对,缺哪条补哪条。

检查项通过标准不通过怎么办
备份与恢复做过一次完整恢复演练,恢复时间能说清先补演练,再谈上线
慢查询有采集方式,能定位到具体语句或查询形状补上日志和监控,否则出问题靠猜
容量余量按增长曲线算过,扩容路径不需要停机或停机时间已确认重新评估扩容方案,别等满了才想
权限边界谁能读谁的库、敏感字段怎么控制写进文档补上访问规则和审计记录
迁移退路导出方式、双写过渡、回滚步骤都有补全后再动手

这份清单不用一次全绿,但每一条都要有明确的负责人和完成时间。没有负责人的检查项,等于没检查。

下一步把你手上的业务按四条线写一遍,再去站内模型与价格资料库核对当时的引擎与成本口径,避免用旧印象做决策。

常见问题

小项目是不是直接用关系型就够了?

多数情况是。只要数据是结构化的、查询以关联和条件筛选为主、量级还没到单机撑不住,关系型的学习成本和生态最省事。什么时候不适用:字段结构频繁变、或者核心需求是按相似度找内容,这时再加文档型或向量库作为补充,而不是一上来就换掉主库。

NoSQL 是不是比关系型更快?

不能这么说。它快在特定访问模式上,比如按主键取单条、大批量顺序写,一旦你要做多条件组合查询或跨实体关联,关系型的优化器往往更省心。判断方式是把你的真实查询列出来,看哪类库能自然支持这些查询形状,而不是看谁的名气大。

向量数据库能不能当主库用?

不建议。它擅长的是相似度检索,事务、复杂条件过滤、唯一约束这些能力通常弱于关系型。常见做法是业务数据仍放主库,只把需要检索的向量和少量定位字段同步过去,用主键回主库取完整记录。什么时候可以省掉主库:整个应用就是纯检索,没有事务和关联需求。

数据量多大才需要换数据库?

没有统一门槛,取决于查询复杂度和写入频率,同样数据量下单条主键取和全表聚合是两回事。更可靠的做法是先加索引、再优化查询、再加缓存,仍压不住瓶颈时再考虑换引擎。具体容量与性能的参考数值,到站内相关页面按当时口径核对,别拿别人的结论直接套。

自建和托管怎么选?

看团队有没有人能长期负责备份、扩容、升级和故障处理。有专人且成本敏感,自建可控;没人管运维,托管省下的时间通常比差价值钱。不适用的情况:数据有硬性合规要求必须落在自有环境,那就只能自建,但要把运维人力提前算进成本。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。