1.NoSQL的特点
- 灵活的可扩展
- 灵活的数据模型
- 与云计算紧密融合
2.NoSQL与关系数据库的比较
总结
关系数据库
- 优势:以完善的关系代数理论作为基础,有严格的标准,支持事务ACID四性,借助索引机制可以实现高效的查询,技术成熟,有专业公司的技术支持。
- 劣势:可扩展性较差,无法较好支持海量数据存储,数据模型过于死板、无法较好支持Web2.0应用,事务机制影响了系统的整体性能等。
- 应用场景:电信、银行等领域的关键业务系统,需要保证强事务一致性
NoSQL数据库
- 优势:可以支持超大规模数据存储,灵活的数据模型可以很好地支持Web2.0应用,具有强大的横向扩展能力等
- 劣势:缺乏数学理论基础,复杂查询性能不高,大都不能实现事务强一致性,很难实现数据完整性,技术尚不成熟,缺乏专业团队的技术支持,维护较困难等。
- 应用场景:互联网企业、传统企业的非关键业务(比如数据分析)
关系数据库和NoSQL数据库各有优缺点,彼此无法取代
3.NoSQL的四大类型
键值数据库
适合存储简单的数据
- 优点:扩展性好、灵活性好、大量写操作时性能高
- 缺点:无法存储结构化信息、条件查询效率低
列族数据库
适合存储大量数据且需要高效存取少量列的情况。
- 优点:查询速度快、扩展性强、容易进行分布式扩展、复杂性低
- 缺点:功能较少,大都不支持强事务一致性
文档数据库
适合存储本结构化数据
- 优点:性能好、灵活性高、复杂性低、数据结构灵活
- 缺点:缺乏统一的查询语法
图数据库
适合存储和处理关系型数据
- 优点:灵活性高、支持复杂的图算法、可用于构建复杂的关系图谱
- 缺点:复杂度低、只能支持一定的数据模型
4.CAP
- NoSQL的三大基石包括CAP、BASE和最终一致性。
C(Consistency):一致性,所有节点在同一时间具有相同的数据。
A(Availability):可用性,快速获取数据,且在确定的时间内返回操作结果。
P(Tolerance of Network Partition):分区容忍性,系统中任意信息的丢失或失败不会影响系统继续运行。
CA:强调一致性(C)和可用性(A),放弃分区容忍性(P)。严重影响系统的可扩展性。
CP:强调一致性(C)和分区容忍性(P),放弃可用性(A)。当出现网络分区的情况时,受影响的服务需要等待数据一致,因此等待期间就无法对外提供服务。
AP:强调可用性(A)和分区容忍性(P),放弃一致性(C)。允许系统返回不一致的数据。eg:当用户需要发布一条微博时,必须能够立即发布,否则,用户就会放弃使用。