TiDB/OceanBase/PolarDB/Citus 分布式数据库

共 34 题
#

1. TiDB 计算层无状态,可水平扩展;TiKV 基于 Raft 协议实现副本一致性

A TiDB Server 是有状态存储层,负责数据落盘
B TiFlash 与 TiKV 使用同一套行存引擎
C TiKV 基于 Raft 协议,只有 Leader 副本可读写,写入需多数派确认 ✓ 正确答案
D PD 负责实际执行 SQL 聚合
#

2. CockroachDB 基于 Raft + Multi-Region 副本策略,承诺全球一致

A 写入只需本地副本确认即可返回
B 副本之间不通过 Raft 复制
C CockroachDB 不支持多区域部署
D 通过 Raft 多数派提交保证强一致,跨区写入延迟较高 ✓ 正确答案
#

3. CockroachDB 采用 PostgreSQL 协议,提供较好的 SQL 兼容性

A 只能使用 CockroachDB 专用客户端
B 与 MySQL 完全兼容
C 可直接复用 PG 驱动、ORM 与 psql 工具 ✓ 正确答案
D 不支持 SQL 标准
#

4. TiFlash 通过 Raft learner 同步数据,提供近实时列存视图

A learner 只同步日志不参与投票,列存近实时同步 TiKV 数据 ✓ 正确答案
B learner 参与投票并影响一致性子集
C TiFlash 与 TiKV 数据完全独立不同步
D TiFlash 只能存历史数据,无法实时
#

5. OceanBase 通过 Paxos 协议实现副本一致性,每副本独立 redo log

A 只有 Leader 保存日志,follower 不落盘
B OceanBase 使用异步复制,无强一致
C 每副本独立 redo log,通过 Paxos 多数派确认后提交 ✓ 正确答案
D 副本共享同一份 redo log
#

6. OceanBase 在 3.x 引入基于 LSM-Tree 的存储引擎

A 写入采用随机写,未做合并
B 不支持压缩
C 写入先入 memtable,定期刷成 SSTable 并后台 compaction 合并 ✓ 正确答案
D 与 B+ 树完全一致,无写放大
#

7. OceanBase 兼容 MySQL 5.7/8.0 协议,迁移工具 OMS

A OceanBase 仅兼容 Oracle,不兼容 MySQL
B OMS 仅支持全量迁移,不支持增量同步
C 迁移必须停机
D OMS 支持全量+增量在线迁移,且 OceanBase 兼容 MySQL 协议 ✓ 正确答案
#

8. PolarDB MySQL 8.0 兼容 InnoDB 表结构与 Redo

A 兼容 InnoDB 表结构与 Redo,支持多计算节点共享存储 ✓ 正确答案
B 存储引擎与 InnoDB 完全无关
C 无法复用 MySQL 工具链
D 不支持 binlog
#

9. PolarDB-X 分布式版基于 GMS/XPaxos 实现多副本一致性

A XPaxos 提供多副本一致,GMS 管理全局元数据一致 ✓ 正确答案
B GMS 负责数据副本复制
C 数据副本不复制,单副本
D 一致性交给外部系统
#

10. TiDB 的 TiKV(Raft 分片)与 TiFlash(列存)如何支撑 HTAP,写放大如何控制?

A TiFlash 与 TiKV 不共享数据
B 查询永远走 TiKV,不使用 TiFlash
C TiKV 行存支撑 OLTP,TiFlash 列存支撑 OLAP,通过 Raft learner 同步,写放大靠 compaction 调优控制 ✓ 正确答案
D TiDB 不关心写放大
#

11. PolarDB 兼容 PostgreSQL 14/15 Oracle 兼容模式

A 仅支持 MySQL,不支持 PG/Oracle
B 支持 PostgreSQL 14/15,并提供 Oracle 兼容模式 ✓ 正确答案
C 不支持任何现有 SQL 方言
D Oracle 兼容模式可完全替代 Oracle 原生特性
#

12. YugabyteDB 基于 DocDB + Raft 实现分布式强一致

A 使用异步复制,无强一致
B DocDB 是单机存储
C DocDB 按主键分片为 tablet,通过 Raft 多数派提交实现强一致 ✓ 正确答案
D 不支持 SQL
#

13. YugabyteDB 同时支持 PostgreSQL 兼容 YSQL 与 Cassandra 兼容 YCQL API

A 仅支持 YCQL,不支持 SQL
B 两者都不支持事务
C YSQL 与 YCQL 使用完全独立的存储
D YSQL 兼容 PostgreSQL,YCQL 兼容 Cassandra,共享 DocDB 存储 ✓ 正确答案
#

14. YugabyteDB 在 2.14+ 支持 xCluster 异步复制

A 是跨集群异步复制,用于灾备与异地多活 ✓ 正确答案
B 是集群内强一致复制
C 与 Raft 强一致完全相同
D 只能复制单表不可选
#

15. Citus 是 PostgreSQL 扩展,将大表分布到多个 worker 节点

A Citus 是独立数据库,非 PG 扩展
B 所有数据保存在 coordinator 单节点
C Citus 将大表按分布列哈希分片到 worker,查询尽量下推 ✓ 正确答案
D 不支持参考表
#

16. TiDB 通过 TiKV(行存)与 TiFlash(列存)实现 HTAP,查询自动选择引擎

A 查询必须手动指定引擎,无自动选择
B 行存与列存数据不一致
C TiFlash 只存历史数据
D 优化器根据统计信息与代价自动选择 TiKV 或 TiFlash ✓ 正确答案
#

17. TiDB Placement Rules 允许按机房、磁盘类型放置副本

A 所有副本必须放在同一节点
B 只影响缓存不影响存储
C 可按节点标签(机房/磁盘类型)约束副本放置,由 PD 调度 ✓ 正确答案
D 无法实现冷热分离
#

18. CockroachDB 在 19.1+ 支持 Follower Reads 与 Stale Reads 降低延迟

A 它们保证读取最新数据
B 与多区域无关
C 只提升写入性能
D 它们从 follower 读取有界陈旧数据以降低跨区域读延迟 ✓ 正确答案
#

19. CockroachDB 通过 Gateway Node 路由请求,支持 geo-partitioning

A Gateway Node 路由请求到持有 lease 的节点,geo-partitioning 让数据就近放置 ✓ 正确答案
B Gateway Node 只负责读,不路由写
C geo-partitioning 不支持分区
D 数据不能在区域间分布
#

20. TiDB 在 v7+ 引入全局内存表与 TiProxy 负载均衡

A TiProxy 负责连接管理与负载均衡,全局内存表提供跨节点一致状态 ✓ 正确答案
B 全局内存表用于存本节点私有状态
C TiProxy 是存储引擎
D 全局内存表与多节点无关
#

21. CockroachDB 在 row-level TTL 与 Change Data Capture(CDC)投入生产

A TTL 用于实时捕获变更
B CDC 只支持静态数据
C row-level TTL 自动清理过期行,CDC 通过 rangefeed 捕获变更到下游 ✓ 正确答案
D 两者都不支持生产
#

22. OceanBase 4.x(OB Cloud)支持单机分布式一体化部署

A 只能分布式部署,无法单机
B 不支持云服务
C 单机与分布式是两套完全不兼容的代码
D 支持单机与分布式一体化,可从单机平滑扩展为多副本集群 ✓ 正确答案
#

23. OceanBase 通过 OBProxy 智能路由读写

A 解析 SQL 按分区路由到持有副本的节点,支持读写分离与负载均衡 ✓ 正确答案
B 只转发写请求
C 不参与任何路由
D 是存储引擎
#

24. PolarDB 通过计算与存储分离架构实现读写分离,写入 RW、读扩展到 RO 节点

A 每个 RO 节点独立复制一份完整数据
B 不支持只读节点
C 所有请求都走 RW 节点
D RW 节点写、RO 节点读,共享同一份存储,实现读扩展 ✓ 正确答案
#

25. PolarDB 使用 PolarFS 共享存储,单一数据副本多节点挂载

A PolarFS 提供共享存储,多计算节点挂载同一份数据,实现计算扩展 ✓ 正确答案
B 每个计算节点独立保存一份数据副本
C 数据不共享,无法一写多读
D 只支持单节点
#

26. OceanBase 的 LSM-Tree 与 Paxos 多副本的架构特点,与 TiDB 的差异?

A 两者都用 Raft 一致性协议
B 两者都无多副本
C OB 用 Paxos + LSM-Tree,TiDB 用 Raft 分片 + 行/列存双引擎 ✓ 正确答案
D OB 不支持 LSM
#

27. PolarDB 的共享存储架构如何实现计算节点扩展而数据不迁移?

A 每次加节点都要全量复制数据
B 加 RO 节点只需挂载共享存储,无需迁移数据 ✓ 正确答案
C 数据必须按节点拆分
D 不支持水平扩展
#

28. YugabyteDB 通过 Tablet 分片实现水平扩展

A 数据不分片,单节点存储
B 表按主键范围/哈希拆分为 tablet,分布在节点实现水平扩展 ✓ 正确答案
C tablet 不支持多副本
D 扩展依赖手动迁移
#

29. YugabyteDB 的 TServer 与 Master 角色分离部署

A TServer 负责元数据,Master 负责数据
B 只有 Master 一种角色
C 两者角色完全相同
D TServer 负责数据存储与查询,Master 负责元数据与调度 ✓ 正确答案
#

30. Citus 通过 reference table 与 distributed table 区分关联表与小表

A reference table 分片到少数节点
B reference table 用于大表
C 两者处理方式相同
D distributed table 哈希分片,reference table 在每个 worker 复制一份 ✓ 正确答案
#

31. Citus 在 v10+ 支持 MX 模式,coordinator 与 worker 互不冲突

A 只有单一 coordinator 能处理查询
B MX 模式让节点既当 coordinator 又当 worker,多节点可路由查询 ✓ 正确答案
C MX 模式不支持多节点
D coordinator 与 worker 必然冲突
#

32. Citus 通过 colocate_with 控制关联表共分布

A 让关联表分片布局不同
B 只影响小表
C 让关联表共分布,join 在本地完成,避免跨节点 shuffle ✓ 正确答案
D 与 join 无关
#

33. Citus 适合 HTAP 场景,分析查询通过并行 worker 提速

A 分析查询下推到多 worker 并行执行,结合 PG 事务能力支持 HTAP ✓ 正确答案
B 分析查询只能在单 worker 串行执行
C Citus 不支持 SQL
D 分析查询必须停库
#

34. 分布式数据库的分区键设计如何影响跨分片事务比例,最佳实践是什么?

A 分区键应选择低基数、热点分布的列
B 应选分布均匀、与业务访问维度匹配的列,让相关数据共分片减少跨分片事务 ✓ 正确答案
C 分区键不影响跨分片事务比例
D 分区键越倾斜越好