简介:本文为NoSQL分布式数据库期末考试提供系统化复习框架,涵盖核心概念、技术原理、典型架构及实战题库解析,帮助读者快速掌握分布式数据存储、CAP理论应用、一致性模型等关键知识点。
NoSQL数据库根据数据模型可分为键值存储(Redis)、文档存储(MongoDB)、列族存储(HBase)和图数据库(Neo4j)。键值存储以
分布式系统需解决数据分片、副本管理、故障恢复三大问题。数据分片策略包括哈希分片(一致性哈希环)、范围分片(按Key范围划分)和目录分片(集中式元数据管理)。副本管理需平衡一致性与可用性,常见协议如Paxos、Raft用于保证副本一致性,而Gossip协议实现去中心化的节点状态同步。
CAP定理指出分布式系统无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)。实际系统中,CP系统(如HBase)优先保证数据强一致性,AP系统(如Cassandra)在分区时仍提供最终一致性服务。工程实践中,通过调整写前日志(WAL)同步级别、采用Quorum机制实现灵活的权衡。
强一致性要求所有副本同步更新,适用于金融交易场景;最终一致性允许短暂数据不一致,通过版本号或向量时钟解决冲突,常见于分布式缓存;因果一致性保证有因果关系的操作顺序一致,适用于社交网络消息流。
两阶段提交(2PC)通过协调者控制事务提交,但存在阻塞问题;三阶段提交(3PC)引入超时机制减少阻塞;TCC(Try-Confirm-Cancel)模式将事务拆分为预留、确认、取消三步,适用于微服务架构;Saga模式通过反向操作补偿失败事务,适合长事务场景。
同步复制要求主副本收到所有从副本确认后才返回成功,保证强一致性但降低吞吐量;异步复制主副本立即返回,从副本异步追赶,提高性能但可能丢失数据;半同步复制结合两者,要求至少一个从副本确认。
题目:以下哪种场景最适合使用图数据库?
A. 电商用户行为分析
B. 社交网络好友关系
C. 日志时间序列存储
答案:B
解析:图数据库通过节点和边高效表示复杂关系,社交网络中好友推荐、路径查询等操作性能显著优于关系型数据库。
题目:设计一个基于Redis的分布式计数器,要求支持高并发和原子性操作。
解决方案:
import redisr = redis.Redis(host='localhost', port=6379)def increment_counter(key, delta=1):# 使用Redis的INCRBY命令保证原子性return r.incrby(key, delta)# 并发测试from threading import Threaddef worker():for _ in range(1000):increment_counter('counter')threads = [Thread(target=worker) for _ in range(10)]for t in threads: t.start()for t in threads: t.join()print(r.get('counter')) # 输出10000
关键点:Redis的INCRBY命令通过单线程处理保证原子性,适合高并发计数场景。
题目:MongoDB副本集中主节点故障,如何手动触发选举?
步骤:
rs.status()确认主节点状态 rs.stepDown(60)强制主节点降级(60秒内不可成为主节点) rs.status()观察新主节点选举结果 db.serverStatus().repl中的optime字段 题目:HBase写入延迟高,如何调整RegionServer配置?
优化方案:
hbase.regionserver.handler.count(默认30)提升并发处理能力 hbase.hregion.memstore.flush.size(默认128MB)减少小文件生成 hbase.regionserver.optionalcacheflushinterval(默认3600000ms)控制内存刷新频率 hbase.hregion.max.filesize(默认10GB)避免Region过大 随着5G和物联网发展,NoSQL数据库需支持超大规模设备接入和实时数据处理。NewSQL数据库(如CockroachDB、TiDB)尝试融合SQL与NoSQL优势,提供水平扩展和ACID事务。边缘计算场景下,轻量级NoSQL(如SQLite、LevelDB)将在资源受限设备中发挥更大作用。