数据库发展
一、历程
数据库发展至今已经有3代:
1、SQL:传统关系型数据库。例如 Mysql,Oracle,SqlServer等;
2、noSQL : not only Sql。例如 MongoDB,Redis等;
3、NewSQL:
二、问题
【SQL】
问题:伴随互联网应用的用户规模,数据量都越来越大,且要求7x24小时在线。
解决办法:
1、升级服务器硬件。虽然提升了性能,但是总有天花板。
2、数据分片,使用分布式集群结构。可扩展性更好,但是,以前在一个库里的数据,现在跨多个库,应用系统不能自己去多个库总操作,需要使用数据库分片中间件。
分片中间件做的简单的数据操作时还好,一旦涉及到跨库join,跨库事务就头疼。很多IT宁愿在自己的业务层处理,复杂度很高。
【noSQL】
后来noSQL出现,摒弃传统SQL的强事务保证和关系模型,重点放在数据库高可用性和可扩展性。
优点:
1、高可用性、可扩展性、自动分区
2、不保证强一致性,性能大幅提升
3、没有关系模型的限制,极其灵活
缺点:
1、noSQL不保证强一致性,普通应用没啥问题。但是类似金融行业一样的企业级应用有强一致性的需求。
2、noSQL不支持sql语句,兼容性是个大问题,不同的noSQL数据库都有自己的api操作数据,比较复杂。
【newSQL】
newSQL提供了与noSQL相同的可扩展性,而且仍基于关系模型,还保留了极其成熟的SQL作为查询语句,保证了ACID事务特性。
简单的来说,newSQL就是传统关系型数据库上集成了noSQL的强大可扩展性。
传统SQL架构设计基因中是没有分布式的,newSQL生于云时代,天生就是分布式架构。
主要特性:
1、支持SQL,支持复杂查询和大数据分析
2、支持ACID,支持隔离级别
3、弹性伸缩,扩容缩容对于业务层完全透明
4、高可用,自动容灾
三、对比