为什么海量数据场景中NoSQL越来越重要?

Posted 性能与架构

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么海量数据场景中NoSQL越来越重要?相关的知识,希望对你有一定的参考价值。

随着数据规模、并发量越来越大,非关系型数据库NoSQL(Not Only SQL)越来越受到重用


NoSQL带来了很多新特性,比如良好的可扩展性、弱化设计范式、弱化一致性要求,在应对高并发问题时表现良好,使其更加适应海量数据的应用场景


在海量数据场景中,SQL数据库面临几个明显的挑战:


事务

 

关系模型要求多个SQL操作满足ACID特性,要求强一致性


分布式系统中,要保证它们的原子性,就要用到分布式协议,性能成本高


NoSQL只要求最终一致性,而非ACID


结构化


SQL数据库有个特点:高度组织化结构化数据


设计时需要满足范式要求,例如


班级表中有编号、名称、简介等,那么在学生表中,包含班级编号后,就不能加入班级名称、简介等信息


这样可以避免大量的数据冗余,但同时会带来大量的联表操作


NoSQL中没有这类要求,为避免多表关联操作,往往会使用数据冗余简化数据结构,提升性能


NoSQL的存储结构也不限于表,很丰富,有:键值对存储,列存储,文档存储,图形结构,可以满足不同需求


性能


关系数据库主要基于硬盘,NoSQL更多的使用了内存


关系数据库主要采用B树存储引擎,NoSQL的存储引擎更加丰富,例如LSM树,写性能大幅提高



需要注意的是,NoSQL在海量数据场景中有一些优势,但不代表NoSQL要取代SQL


比如银行系统,该类系统需要使用具备强数据完整性、支持事务的健壮存储系统,SQL数据库就更加适合


他们是互相帮助的关系,二者的优势会不断融合


NoSQL也有一些问题,例如:


缺少统一标准


SQL数据库已经高度标准化,有完整的生态链


而NoSQL家族庞大,思路各不相同,没有统一标准


运维复杂


NoSQL存储结构很丰富,非常强大,但同时也意味着繁杂,使其学习、应用、运维的成本增高


而关系数据库有丰富的运维工具和大量经验丰富的运维人员



点击 阅读原文 查看 文章列表


以上是关于为什么海量数据场景中NoSQL越来越重要?的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB应用场景及选型(海量数据存储选型)

基于云上分布式NoSQL的海量气象数据存储和查询方案

基于云上分布式NoSQL的海量气象数据存储和查询方案

海量小文件的管理

用NoSQL给高并发系统加速

浅析MongoDB数据库的海量数据存储应用