SQL与NoSQL

2017-10-10  本文已影响0人  DaSE_Bee
随大数据时代到来,数据规模越来越大,并发量越来越高,传统的SQL数据库有时无法满足需求了,而Nosql应运而生。NoSQL本意是Not Only SQL,并不是要说取代SQL,NoSQL是对SQL特性的一种取舍和升华,使得能更加适应海量数据的应用场景。

SQL数据库在海量数据场景下面临的挑战有:

事务

关系模型要求事务满足ACID特性,所有SQL操作要么全部成功,要么全部失败。而在分布式系统中,若多个操作分属于不同服务器,保证它们原子性的用到的两阶段提交协议性能比较低,且不能容忍服务器故障,难以应用在海量数据环境下。

联表

传统SQL数据库设计时候需要满足范式要求,避免一些数据冗余情况发生。而在海量数据的场景,为了避免数据库多表关联操作,往往需要数据冗余这些违反数据库范式的手段来提高整体性能。实践证明,这些手段带来的收益远高于成本。

性能

SQL数据库采用B树存储引擎,更新操作性能不如LSM树存储引擎。而且只有基于主键的增删改查操作,性能也不如K-V存储系统。

随数据规模的增大,可扩展性及性能提升可以带来越来越明显的收益,而NoSQL系统因扩展性和性能良好,广泛应用到互联网业务中。

NoSQL面临的难题有:

缺乏统一标准

NoSQL系统不像SQL形成了完整生态链,拥有业界标准。而每个NoSQL系统各不相同,切换成本高,无法通用。

使用、运维复杂

NoSQL在选型和使用方式上需要对系统实现具有深刻的理解,缺乏专业的运维工具和运维人员,没有一套完整的生态链。

参考书目:《大规模分布式存储系统》,杨传辉著。

上一篇 下一篇

猜你喜欢

热点阅读