OLTP vs OLAP 选型与云原生与多模

共 19 题
📑 题目列表 19 题
#
★★★

1. OLTP 系统选型,PostgreSQL、MySQL、Oracle、SQL Server?

OLTP 系统如何选型?PostgreSQL、MySQL、Oracle、SQL Server 各有什么特点?

  • OLTP 场景的需求
  • 四大数据库的特点
  • 选型考量

OLTP(联机事务处理)场景以高并发、小事务、低延迟的读写为主,选型需考虑事务能力、并发性能、生态与成本。PostgreSQL:开源、功能最全、ACID 与并发强、扩展丰富,适合复杂业务与数据密集型 OLTP,成本低。MySQL:开源、简单易用、性能优秀、生态庞大,是 Web 应用与高并发读写的常用选择。Oracle:商用、功能强大稳定、高可用与恢复机制成熟、适合大型企业关键业务,但许可成本高、运维复杂。SQL Server:微软商用、与 Windows/.NET 生态集成好、高可用与 BI 能力成熟、适合微软技术栈企业。选型考量:功能需求、并发与性能、生态与团队技能、成本(许可费)、可维护性、是否云原生。开源场景优先 PostgreSQL/MySQL,大型企业关键系统用 Oracle/SQL Server。

OLTP 选型核心是"事务能力+并发性能+生态+成本"的平衡:开源库性价比高、生态好,商用库强大但昂贵;取决于团队与业务诉求。

#
★★★

2. OLTP(Online Transaction Processing)与 OLAP(Online Analytical Processing)的本质差异?

OLTP 与 OLAP 的本质差异是什么?

  • OLTP 与 OLAP 的定义
  • 负载特征、存储、查询模式的差异
  • 设计差异

OLTP(联机事务处理)面向高并发的日常事务操作,如下单、转账、查询,特点是高并发、小事务、低延迟、大量随机读写,使用行式存储,关注单条/少量记录的增删改查,强调 ACID 与强一致。OLAP(联机分析处理)面向大规模数据分析与决策,如报表、聚合、数据挖掘,特点是低并发、大查询、扫描海量数据、高吞吐计算,使用列式存储,关注对大量数据的聚合与多维分析,强调吞吐与查询性能。两者本质差异在主数据访问模式:OLTP 随行性小事务、OLAP 全量扫描聚合;存储上 OLTP 行存利于单行读写、OLAP 列存利于压缩与列聚合。因此 OLTP 与 OLAP 通常分离部署,使用不同存储引擎。

本质差异是"访问模式":OLTP 是对少量数据的高频小事务,OLAP 是对海量数据的低频大查询;这决定了行存/列存与引擎设计的根本不同。

#
★★★

3. HTAP(Hybrid Transaction/Analytical Processing)的应用?

HTAP(混合事务与分析处理)的应用是什么?

  • HTAP 的概念
  • 应用场景
  • 与 OLTP/OLAP 分离的对比

HTAP(Hybrid Transaction/Analytical Processing)指在同一系统上同时支持事务处理(TP)与分析处理(AP),避免传统"OLTP 库 + ETL + OLAP 仓"的分离架构带来的数据延迟与运维复杂度。应用场景:需要近实时分析的最新业务数据(如实时风控、实时运营报表、实时监控),希望在事务入库的同时即可查询分析,减少数据加工与同步延迟。代表如 TiDB、StarRocks、PolarDB-X、SAP HANA 等,通过行列混合存储、共享引擎或 AP 副本实现。HTAP 的价值是降低数据延迟、减少 ETL 链路、统一运维;代价是 TP 与 AP 负载在同一资源上争抢,需通过资源隔离(如分离读写、副本)保障。是否采用 HTAP 取决于业务对"实时分析"的需求强度与数据规模。

HTAP 本质是"让分析跟上事务"的实时化方案,核心是消除数据落地延迟;代价是 TP 与 AP 的资源争抢,需合理隔离。

#
★★★

4. OLAP 系统选型,ClickHouse、Apache Druid、Snowflake、BigQuery?

OLAP 系统如何选型?ClickHouse、Apache Druid、Snowflake、BigQuery 各自的特点是什么?

  • 各 OLAP 引擎的特点
  • 适用场景
  • 选型考量

各 OLAP 引擎定位不同。ClickHouse:开源列式数据库,单机性能极强、查询极快,适合高并发、低延迟的明细级聚合查询(如实时报表、用户行为分析),但扩展性与高级分析能力有限。Apache Druid:开源实时分析数据库,专为时序与事件流式摄入设计,支持亚秒级实时查询与海量数据,适合实时监控、OLAP 事件分析。Snowflake:云原生数据仓库,存储计算分离、弹性伸缩、支持标准 SQL 与半结构化数据,免运维、按需计费,适合企业级数据仓库与分析。BigQuery:Google 云原生 Serverless 数仓,无服务器、自动扩展、强大的 SQL 与机器学习集成,适合大规模分析与 BI。选型:需要极致单机性能与实时聚合选 ClickHouse;实时流式事件分析选 Druid;企业级弹性云数仓选 Snowflake/BigQuery。

OLAP 选型核心是"实时性、扩展模式、云原生与管理成本":ClickHouse 性能强、Druid 实时流式、Snowflake/BigQuery 云原生弹性,结合数据规模与部署方式选择。

#
★★★

5. Serverless 数据库,DynamoDB、Aurora Serverless、Redshift Serverless、Athena 的适用边界?

Serverless 数据库的适用边界是什么?DynamoDB、Aurora Serverless、Redshift Serverless、Athena 各有什么特点?

  • Serverless 数据库的概念
  • 各 Serverless 产品的特点
  • 适用边界

Serverless 数据库按需分配与扩缩容、免运维、按用量计费,适合负载波动大、无服务器运维能力的场景。DynamoDB:托管键值/文档数据库,毫秒级性能、自动分片、强一致或最终一致,适合高并发、低延迟、无复杂查询的键值访问。Aurora Serverless:MySQL/PostgreSQL 兼容的自动扩缩容关系库,适合负载波动大、需要 SQL 与事务的 OLTP 应用。Redshift Serverless:自动扩缩容的云数仓,适合分析负载(快速启动、按查询用量计费)。Athena:Serverless 查询服务,直接对 S3 等对象存储执行 SQL,无需建表管理,适合按需即席查询、数据湖分析。适用边界:需要低延迟键值访问选 DynamoDB;需要弹性关系库选 Aurora Serverless;需要弹性数仓选 Redshift Serverless;对数据湖做即席分析选 Athena。选择依据是"数据访问模式+延迟要求+是否需 SQL/事务"。

Serverless 的边界是"负载波动+免运维+按用量计费";选型看查询范式:键值选 DynamoDB、关系库选 Aurora、数仓选 Redshift、即席湖查询选 Athena。

#
★★★

6. 数据库选型的量化方法,基准测试(TPC 类/业务负载回放)、成本模型与团队能力评估

数据库选型的量化方法是什么?基准测试、成本模型与团队能力评估如何做?

  • 基准测试(TPC 类、业务负载回放)
  • 成本模型
  • 团队能力评估

数据库选型应量化而非凭感觉。基准测试:用 TPC 类标准(TPC-C 测 OLTP、TPC-H 测 OLAP)对比吞吐与延迟,更能反映真实业务的是"业务负载回放"——取生产真实 SQL 与数据,在候选库上回放,对比响应时间、吞吐与资源占用,评估实际适配度。成本模型:计算总体拥有成本(TCO),包括许可证/订阅费、硬件/云资源、存储、运维人力、迁移与培训成本,按 3-5 年维度测算。团队能力评估:评估团队对候选库的熟悉度、运维经验、社区与厂商支持、招聘难度,避免"技术强但团队不会用"的风险。综合三者,用"性能达标 + 成本可接受 + 团队能驾驭"加权决策,必要时做 PoC 验证。

量化选型是"性能实测+成本建模+能力匹配"的组合:负载回放最真实、成本模型看长期、团队能力看落地风险;三者缺一不可。

#
★★★

7. HTAP 为什么难以同时做好 TP 与 AP?TiDB、StarRocks 等如何通过行列混合存储或引入 AP 副本来折中资源争抢与一致性?

HTAP 为什么难以同时做好 TP 与 AP?TiDB、StarRocks 等如何折中资源争抢与一致性?

  • HTAP 的难点(资源争抢、一致性)
  • 行列混合存储
  • AP 副本与一致性折中

HTAP 难以同时做好 TP 与 AP,因为两者负载特性冲突:TP 需要行存、低延迟小事务、随机读写、强一致;AP 需要列存、大并发扫描、批量加载、高吞吐。同一引擎既要满足两种存储与访问模式,又要在同一资源池上处理两类负载,容易产生资源争抢(TP 的延迟被 AP 大查询拖累)与一致性复杂度(分析读到的数据与事务最新状态如何对齐)。折中方案:TiDB 采用"行列混合"——TiKV 行存支持事务,TiFlash 列存副本专供 AP,通过 Raft 复制把事务数据同步到列存副本,实现 TP 与 AP 物理隔离、AP 查询只走列存副本、避免争抢;一致性上通过 Raft 保证行存与列存副本最终一致(或快照读)。StarRocks 采用"行列混合存储"在同一表内行列并存,或用物化视图/主键表支持近实时更新,通过资源组隔离 TP 与 AP 负载。核心是"用副本/混合存储隔离负载,用一致性协议保证副本间收敛"。

HTAP 的难点是"一种引擎两种负载";解法是用"分离的存储+副本"隔离 TP/AP,再用一致性协议收敛,本质上是在一致性与资源争抢之间做工程折中。

#
★★

8. 云原生数据库的存储计算分离(Storage-Compute Separation)?

云原生数据库的存储计算分离(Storage-Compute Separation)是什么?

  • 存储计算分离的概念
  • 架构与优势
  • 与传统架构的对比

存储计算分离(Storage-Compute Separation)是把存储与计算资源解耦的架构:数据存储在共享的分布式存储层(如云对象存储、分布式存储),计算节点(无状态)按需访问数据,可独立弹性伸缩。代表如 Aurora、PolarDB、Snowflake、CockroachDB 等。优势:计算与存储可独立扩缩容(读多时扩计算节点、数据多时扩存储),避免资源浪费;无状态计算节点便于快速扩缩与故障恢复;多副本由存储层保证,计算节点可随时重建;按需计费降低闲置成本。实现要点:存储层高可用(多可用区、纠删码)、计算层与存储层通过高速网络通信、日志/缓存机制降低网络延迟(如 Aurora 把 redo log 下推到存储层)。对比传统"存储计算耦合"的单机架构,云原生分离更弹性,但引入网络延迟与分层复杂度。

存储计算分离的本质是"弹性+解耦":存储负责持久化与高可用、计算负责执行,二者独立伸缩;代价是网络开销与分层设计复杂度。

#
★★

9. 云原生数据库(Cloud-Native DB),Aurora、PolarDB、Spanner?

云原生数据库(Cloud-Native DB)是什么?Aurora、PolarDB、Spanner 各有什么特点?

  • 云原生数据库的概念
  • Aurora、PolarDB、Spanner 的特点
  • 选型考量

云原生数据库针对云环境设计,重点是利用云资源(弹性、分布式存储、按需计费)实现高可用、弹性与低成本。Aurora:AWS 的 MySQL/PostgreSQL 兼容云原生库,存储计算分离、6 副本、自动故障转移、只读副本扩展,兼容关系库生态,适合云上弹性关系库。PolarDB:阿里云兼容 MySQL/PostgreSQL 的云原生库,存储计算分离、共享存储、高可用、弹性,适合中国云生态。Spanner:Google 的全球分布式关系数据库,跨区域强一致、水平扩展、支持 SQL 与分布式事务,通过 Paxos 与 TrueTime 实现全球强一致,适合全球部署、跨区一致的业务。选型:考虑云厂商(AWS/阿里云/Google)、是否需要跨区域强一致、SQL 兼容度与生态。三者都强调"弹性、高可用、云集成"。

云原生库的共性是把"存储与计算分离+弹性+云集成"做到极致;差异在云厂商绑定与全球一致性能力(Spanner 全球强一致最独特)。

#
★★

10. 云数据库 vs 自建数据库的成本与运维对比?

云数据库与自建数据库在成本与运维上有何对比?

  • 云数据库与自建库的成本差异
  • 运维差异
  • 选型考量

云数据库与自建数据库在成本与运维上差异明显。成本:云数据库按订阅/用量计费,包含硬件、存储、网络与托管服务,前期投入小、弹性计费,但长期持续费用;自建数据库需自行购买硬件/机房、软件许可与扩容,固定成本高、前期投入大,且资源利用率低时浪费。运维:云数据库由厂商托管(备份、高可用、补丁、监控、扩缩容),运维负担小、SLA 有保障,但存在厂商锁定与网络依赖;自建库需自建运维团队(备份、监控、故障处理、扩容、安全),运维成本高、灵活性强、可控性高。选型:缺乏运维团队、追求弹性与快速上线选云数据库;对数据主权、合规、成本可控与定制化要求高、有运维能力选自建。需综合 TCO 与运维人力评估。

对比核心是"托管便利 vs 自主可控":云库省运维但持续付费、有锁定,自建前期贵但可控;选型依运维能力、合规与成本结构而定。

#
★★

11. 多模数据库(Multi-Model DB),ArangoDB、SurrealDB、FaunaDB?

多模数据库(Multi-Model DB)是什么?ArangoDB、SurrealDB、FaunaDB 各有什么特点?

  • 多模数据库的概念
  • 各多模数据库的特点
  • 适用场景

多模数据库(Multi-Model DB)在单一引擎内支持多种数据模型(关系、文档、图、键值)与查询方式,避免为不同模型部署多个数据库。ArangoDB:开源多模库,支持文档(AQL)、图(遍历)与键值,提供统一的 AQL 查询语言,适合文档+图混合场景(如社交与推荐)。SurrealDB:新一代多模库,支持关系、文档、图、时序与向量,强调 SQL 风格查询、实时协作与权限模型,适合快速构建全栈应用。FaunaDB:托管的多模数据库,以文档与关系模型为主,提供强一致、ACID 事务、全球分布与 FQL 查询,适合无服务器与全球应用。多模库的价值是"一个引擎、多种模型、统一运维",但需评估单一实现是否在处理某模型上弱于专用库。选型看业务是否真正需要多模型混合与统一查询。

多模库权衡"统一 vs 专精":一个引擎覆盖多模型省运维,但复杂图/关系场景可能不如专用库;选型看多模型需求是否真实。

#
★★

12. 数据库的 Serverless 化与冷启动?

数据库的 Serverless 化与冷启动是什么?如何应对冷启动?

  • Serverless 数据库的概念
  • 冷启动问题
  • 冷启动的应对

数据库 Serverless 化指按需分配计费单元,自动扩缩容、免运维、按用量计费,适合负载波动大的场景。冷启动问题:当长期无请求,Serverless 实例可能缩容到零或暂停,再次请求时需重新启动(加载配置、恢复连接、加载数据),产生明显的启动延迟(冷启动),影响体验。应对策略:配置最小实例数/预热(保持至少一个实例在线,避免完全缩零);设置连接池与预热连接,减少每次请求的握手开销;缩短冷启动路径(如预热缓冲池、缓存元数据);对延迟敏感的业务设定"最小容量"或"自动扩容策略"避免频繁冷启动;用连接复用与请求合并减少冷启动触发。Serverless 的冷启动与函数计算类似,需在弹性与延迟间权衡。

Serverless 化的卖点是"按需计费+弹性",代价是冷启动延迟;应对关键是"预热/最小实例+连接复用",避免缩零导致的高延迟。

#
★★

13. 云数据库的可用性与 RPO/RTO 承诺?

云数据库的可用性与 RPO/RTO 承诺是什么?

  • 可用性 SLA 的概念
  • RPO 与 RTO 的定义
  • 云数据库的承诺与保障

云数据库的可用性通常以 SLA 承诺(如 99.95%、99.99%)表示,RPO(恢复点目标)与 RTO(恢复时间目标)是衡量容灾的关键指标。RPO 指灾难发生时最多可接受的数据丢失量(时间),如 RPO=0 表示零丢失;RTO 指灾难发生后业务恢复所需的最长时间。云数据库的承诺:多可用区部署、自动故障转移、副本同步、备份与时间点恢复(PITR),通常提供较高可用性 SLA(如 99.99%)与较低 RPO(如 5 分钟到 0,取决于同步模式)与 RTO(分钟级)。设计时需明确:RPO 由数据同步/备份频率决定(同步复制 RPO≈0,异步复制有延迟),RTO 由故障转移与恢复机制决定。选型与设计应依据业务对丢失与中断的容忍度选择备库同步模式、跨可用区/跨地域部署与备份策略。

可用性 SLA、RPO、RTO 是容灾设计的核心指标:RPO 看数据丢失容忍、RTO 看恢复时间容忍,云库通过同步/备份与自动故障转移承诺这些指标。

#
★★

14. OLTP/OLAP 与一致性?

OLTP 与 OLAP 与一致性有什么关系?

  • OLTP 与一致性
  • OLAP 与一致性
  • 两场景一致性的差异

OLTP 与 OLAP 对一致性要求不同。OLTP 面向事务,强调强一致(ACID),通常要求读写都能看到最新已提交数据,通过事务隔离级别(可重复读、串行化)与锁/MVCC 保证,保证业务正确性(如余额、库存)。OLAP 面向分析,通常容忍一定延迟与最终一致性,关注吞吐与查询性能,分析数据多来自数据仓库/副本,可接受异步同步带来的轻微滞后(如数仓 T+1 数据),但需保证"同一查询内一致性"(快照读)避免看到中间态。在 HTAP 或混合架构中,需处理 TP 与 AP 的一致性协调:分析读走的副本(如列存副本)可能滞后于事务主库,需明确快照时间与可容忍滞后。设计时按场景选择一致性强度:TP 用强一致,AP 用最终一致/快照读,并明确边界。

一致性是"业务正确性 vs 分析性能"的权衡:TP 要强一致保证正确,AP 用最终一致换吞吐;理解并明确边界是混合架构设计的关键。

#
★★

15. 数据库的 TCO 计算,许可证、硬件、运维人力与云托管费用的全成本对比

数据库的 TCO(总体拥有成本)如何计算?许可证、硬件、运维人力与云托管费用如何对比?

  • TCO 的概念
  • 各成本构成
  • 云与自建的 TCO 对比

TCO(总体拥有成本)是数据库全生命周期成本,需把显性与隐性成本都纳入。构成:许可证/订阅费(商业库如 Oracle/SQL Server 的许可;开源库免许可但需服务商支持)、硬件/云资源(计算、存储、网络、机房)、运维人力(DBA、监控、备份、故障处理、升级的人力成本)、云托管费用(托管数据库的订阅与按用量费用)、以及迁移/培训/风险成本。对比:自建库许可证与硬件前期投入大、运维人力成本高,但可控、无持续订阅;云托管库前期投入小、省运维人力、弹性计费,但长期订阅费与厂商锁定。TCO 计算需按 3-5 年周期,把人力(按人数×成本)与运维(停机、故障代价)量化,才能公平对比。开源库看似免费,但运维与人才成本可能不低。

TCO 的核心是"全成本、全周期":把许可、硬件、人力、云费与隐性成本都量化到同一时间轴,才能真实比较云与自建、开源与商业。

#
★★

16. 为什么 OLAP 选列存而 OLTP 选行存?混合负载场景下行列混合引擎或列索引如何取舍?

为什么 OLAP 选列存而 OLTP 选行存?混合负载场景下行列混合引擎或列索引如何取舍?

  • 行存与列存的原理
  • OLAP/OLTP 的存储选择
  • 混合负载的取舍

行存把一条记录的所有列连续存储,利于单行/少量行的随机读写(按主键取整行),适合 OLTP 的高频小事务;列存把一列的所有值连续存储,利于按列压缩、列聚合与全量扫描,适合 OLAP 在大量数据上做聚合、过滤与投影。因此 OLAP 选列存(减少 IO、高压缩比、列级计算),OLTP 选行存(单行读写快、事务友好)。混合负载场景:可用"行列混合引擎"(同一表同时维护行存与列存,如 SQL Server 列存储索引、StarRocks、TiDB 行列混合)或"列索引"(在行存表上加列存索引,如 SQL Server 的 clustered columnstore index、MySQL/PostgreSQL 的部分列存方案),让事务走行存、分析走列存。取舍:行列混合增加存储与写入成本、维护两套存储,需权衡读写比例与实时性;若分析量小可只加列索引,若实时分析需求强用行列混合引擎。

行存/列存的选择根源于访问模式;混合负载用"行列并存"或"列索引"兼顾,代价是存储与写入开销,取舍看读写比例与实时性。

#
★★

17. 多模数据库(单体多模)与多引擎组合(如 PG+Redis+ES)如何选型?事务一致性、运维复杂度与查询能力的权衡点是什么?

多模数据库(单体多模)与多引擎组合(如 PG+Redis+ES)如何选型?权衡点是什么?

  • 单体多模与多引擎组合的对比
  • 事务一致性、运维复杂度、查询能力的权衡
  • 选型考量

单体多模数据库在一个引擎内支持多种模型(如 ArangoDB 支持文档+图+键值),而多引擎组合是用多个专门引擎各司其职(如 PG 管关系数据、Redis 管缓存、ES 管搜索)。权衡点:事务一致性——单体多模能在同一引擎内跨模型做事务,一致性更好;多引擎组合跨系统事务难(需分布式事务/补偿,一致性弱)。运维复杂度——单体多模一个引擎一个运维栈,复杂度低;多引擎组合多套系统、多套监控与备份,运维复杂。查询能力——多引擎组合各引擎在其专长领域更强(如 PG 关系、ES 全文、Redis 低延迟),单体多模在单一模型上可能弱于专用引擎。选型:涉及跨模型强一致事务、追求运维简单选单体多模;各模型负载重、需要各领域最优性能、可接受跨系统一致性权衡选多引擎组合。

核心权衡是"一致性/运维 vs 专精性能":单体多模省运维、强一致但单模型不强,多引擎阵容各取所长但运维重、跨系统一致难。

#

18. 数据库选型的 PoC 清单,负载模拟、容量评估与迁移成本验证

数据库选型的 PoC 清单是什么?负载模拟、容量评估与迁移成本验证如何做?

  • PoC 的目的
  • 负载模拟、容量评估、迁移成本验证
  • PoC 的成功标准

PoC(概念验证)是选型前的实测验证,清单包含三方面。负载模拟:准备贴近生产的测试数据与工作负载(真实 SQL 回放或按业务模型生成),在候选库上压测,对比吞吐、延迟、资源占用与稳定性,验证是否满足性能要求。容量评估:根据业务增长预测评估数据量、并发、存储与计算需求,测试候选库在目标容量下的表现与扩展能力(水平/垂直)。迁移成本验证:验证从现有库迁移的难度与成本——数据迁移工具与增量同步、SQL 兼容性(改写工作量)、应用改动、停机窗口、回滚方案,评估迁移风险。成功标准:性能达标、容量满足、迁移可行、运维可控。PoC 应以"可量化指标"为准,避免仅凭演示。

PoC 清单本质是"用真实数据与负载验证性能、容量与迁移可行性"三件事,避免上线后才发现性能或迁移问题。

#

19. OLAP 负载通常是低并发大查询,高并发报表场景为什么要依赖预聚合、物化视图与缓存?直接放大集群有什么问题?

高并发报表场景为什么要依赖预聚合、物化视图与缓存?直接放大集群有什么问题?

  • OLAP 大查询与高并发的冲突
  • 预聚合、物化视图、缓存的作用
  • 直接放大集群的问题

OLAP 查询通常是大规模扫描与聚合,成本高、耗时长;高并发报表意味着大量用户同时发起这类大查询,会给引擎带来巨大压力。对策是"预计算+缓存":预聚合(把明细按维度预先聚合为汇总表,如按日/按城市预聚合,查询直接读汇总)减少扫描量;物化视图(把常用查询结果预先物化,查时直接读,无需实时计算)把复杂计算前置;缓存(把热点查询结果缓存到 Redis/内存,重复查询直接命中)避免重复计算。直接放大集群的问题:一是成本爆炸,为高并发扩容大量节点,投入巨大且资源利用率低;二是并发大查询仍会争抢资源,放大集群不会消除"每条查询都重"的本质,反而可能因资源隔离不足互相拖累;三是延迟仍高,预聚合/物化让查询从"全量扫描"变成"读小结果",比单纯堆节点更根本。因此高并发报表应"先预计算、再缓存、后扩集群"。

高并发报表的本质是"重复的昂贵计算",预聚合/物化/缓存把计算前置或复用,比放大集群更有效;放大集群只解决吞吐、不解决单查询成本。