UDN-企业互联网技术人气社区

板块导航

浏览  : 1104
回复  : 0

[讨论交流] 为什么海量数据场景中NoSQL越来越重要?

[复制链接]
蒸笼的头像 楼主
发表于 2016-5-9 07:31:42 | 显示全部楼层 |阅读模式
  来源: 杜亦舒 性能与架构

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

  而关系数据库有丰富的运维工具和大量经验丰富的运维人员
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部