RDBMS面对的挑战以及与NoSQL的不同
Q1 请解释RDBMS关于数据存储面对哪些挑战?
1.无法满足高可扩展性和高可用性的需求
由于单机节点性能瓶颈,只支持scale up(纵向扩展,单机加内存、硬盘,也是有限度的),很难scale out(横向扩展),这是因为表与表之间有依赖和约束关系,RDBMS没有办法简单地通过添加更多的硬件和服务节点来扩展性能和负载能力。
RDBMS无法满足数据高并发的需求,海量的读写请求时RDBMS难以承受的。因此单机节点容易因此宕机,在单机节点宕机后,难以及时处理或恢复,会影响所有用户的读写[1]。
2.不能很好地支持非结构化或半结构化数据
RDBMS中数据的存储格式是表格,行和列;NoSQL里数据的存储格式是文档、键值对、图结构。
3.不能很好地支持上层数据模型
分布式存储架构使用MapReduce为上层计算模型的基础,有“分而治之”的思想。
而RDBMS因为表和表之间有依赖关系所以很难对大数据分割计算。
Q2 对比分析 RDBMS和NoSQL数据库
对比 | RDBMS | NoSQL |
---|---|---|
常用数据库 | Oracle、MySQL、DB2 | HBase、MongoDB、Redis |
数据库原理 | 关系代数理论 | 没有统一的理论基础 |
数据库模式 | 固定,严格遵守数据定义和相关约束条件 | 不存在数据库模式,可以自由、灵活地定义并存储各种不同类型的数据 |
存储格式 | 表格式、行和列 | 文档、键值对、图结构 |
存储规范 | 规范性,避免重复 | 鼓励冗余 |
存储扩展 | 纵向扩展 | 横向扩展,分布式 |
查询方式 | 结构化查询SQL,可以支持复杂查询 | 非结构化查询 |
事务 | 支持事务一致性 | 不支持事务一致性,只能保持最终一致性 |
数据完整性 | 容易实现 | 很难实现 |
性能 | 读写性能差 | 读写性能高 |
成本 | 成本高 | 简单易部署,开源,成本低 |
标准化 | 是 | 否,还没有行业标准 |
技术支持 | 高 | 低 |
优点 | 能在所有主流平台上运行,完全支持所有的工业标准、采用完全开放策略、开发经验充足,完全向下兼容、应用广泛,风险低 | 高可扩展性、分布式计算、低成本、架构的灵活性、半结构化数据、没有复杂的关系 |
缺点 | 开发成本和维护成本高、管理复杂、升级频率高、更换周期短、仅能支持结构化数据存储与查询 | 没有标准化、有限的查询功能、 最终一致是不直观的程序 |
应用场景 | 储存用户信息、企业日志、数据分析、日志、博客平台、推荐引擎 | 关系特别复杂的数据库查询场景 |
Reference:
[1]林子雨,《大数据技术原理与应用——概念、存储、处理、分析与应用(第三版)》;