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

2018-04-03 17:16:23 浏览数 (1)

随着数据规模、并发量越来越大,非关系型数据库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存储结构很丰富,非常强大,但同时也意味着繁杂,使其学习、应用、运维的成本增高

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

0 人点赞