大数据学习笔记(四)NoSQL数据库
- 掌握NoSQL与关系数据库的区别与联系;
- 掌握四大类型NoSQL数据库的特点和应用场景;
- 了解NoSQL数据库的三大基石;
A: 比较NoSQL数据库与关系数据库的优缺点?
NoSQL数据库的优点:
1.可以很容易通过添加更多设备来支持更大规模的数据,NoSQL在设计之初就充分考虑了横向扩展的需求,可以很容易通过添加廉价设备实现扩展,可以和云计算紧密结合
2.不存在数据库模式,可以*灵活定义并存储各种不同类型的数据
3.在NoSQL数据库却无法实现数据完整性
4.大多数NoSQL都能提供较高的可用性
NoSQL数据库的缺点:
1.没有关系代数理论作为基础
2.很多NoSQL数据库没有面向复杂查询的索引,虽然NoSQL可以使用MapReduce来加速查询,但是,在复杂查询方面的性能仍然不如RDBMS
3.很多NoSQL数据库放松了对事务ACID四性的要求,而是遵守BASE模型,只能保证最终一致性
4.NoSQL还没有行业标准,不同的NoSQL数据库都有自己的查询语言,很难规范应用程序接口
5.NoSQL在技术支持方面仍然处于起步阶段,还不成熟,缺乏有力的技术支持
6.NoSQL数据库虽然没有DBMS复杂,也难以维护
RDBMS关系数据库的优点:
1.有关系代数理论作为基础
2.借助于索引机制可以实现快速查询(包括记录查询和范围查询)
3.任何一个RDBMS都可以很容易实现数据完整性,比如通过主键或者非空约束来实现实体完整性,通过主键、外键来实现参照完整性,通过约束或者触发器来实现用户自定义完整性
4.RDBMS已经标准化(SQL)
5.RDBMS经过几十年的发展,已经非常成熟,Oracle等大型厂商都可以提供很好的技术支持
RDBMS关系数据库的缺点:
1.很难实现横向扩展,纵向扩展的空间也比较有限,性能会随着数据规模的增大而降低
2.需要定义数据库模式,严格遵守数据定义和相关约束条件
3.RDBMS严格遵守事务ACID模型,可以保证事务强一致性
4.RDBMS在任何时候都以保证数据一致性为优先目标,其次才是优化系统性能,随着数据规模的增大,RDBMS为了保证严格的一致性,只能提供相对较弱的可用性
5.RDBMS需要专门的数据库管理员(DBA)维护
B:试述键值数据库、列族数据库、文档数据库、和图数据库的适用场景和优缺点?
1.键值数据库:
优点:扩展性好,灵活性好,大量写操作时性能高
缺点:无法存储结构化信息,条件查询效率较低
2.列族数据库:
优点:查找速度快,可扩展性强,容易进行分布式扩展,复杂性低
缺点:功能较少,大都不支持强事务一致性
3.文档数据库:
优点:性能好(高并发),灵活性高,复杂性低,数据结构灵活
提供嵌入式文档功能,将经常查询的数据存储在同一个文档中
既可以根据键来构建索引,也可以根据内容构建索引
缺点:缺乏统一的查询语法
4.图形数据库:
优点:灵活性高,支持复杂的图形算法,可用于构建复杂的关系图谱
缺点:复杂性高,只能支持一定的数据规模
C:键值数据库和列族数据库
D:三大基石CAP理论
所谓CAP是指:
C~Consistency一致性,是指任何一个读操作总是能够读到之前完成的写操作的结果,也就是在分布式环境中,多点的数据是一致的,或者说,所有节点在同一时间具有相同的数据
A~Availability可用性,是指快速获取数据,可以在确定的时间内返回操作结果,保证每个请求不管成功或者失败都有响应;
P~Tolerance of Network Partition分区容忍性,是指当出现网络分区的情况时(即系统中的一部分节点无法和其他节点进行通信),分离的系统也能够正常运行,也就是说,系统中任意信息的丢失或失败不会影响系统的继续运作。
CAP之间关系