随着移动互联网和物联网的发展,基于大数据的应用已经非常普遍。传统的关系数据库在进行大数据处理时越来越感到力不从心,大数据处理要求数据存储系统有足够的扩展性,且能够支持高效的即时查询。
NoSQL能够支持分布式事务数据库是解决大数据领域问题的一个解决方案,NoSQL数据库可以实现水平扩展以及灵活的数据结构,结合计算引擎框架可以实现复杂的计算,但不支持分布式事务。NewSQL技术的出现,正好弥补了这一不足,既有很好的扩展能力,又能支持分布式事务。
常见NoSql数据库
我们通常理解的NoSQL数据库概念源自2009年在San Francisco举行的一次关于分布式开源数据库的讨论。NoSQL主要指非关系型、分布式、不提供ACID的数据库设计模式。
当时SQL技术几乎等同于关系数据库系统(RDBMS),NoSQL则意味着非关系型(non-rational)。随着NoSQL数据库的发展,也加入了SQL能力,NoSQL不再是“Not SQL”,而是“Not only SQL”。
NoSQL涉及到的常用数据库包括Cassandra、HBase、MongoDB、CouchDB、ClickHouse等。大多数NoSQL技术,弱化了对ACID语义以及复杂关联查询的支持,采用了更加简洁的数据模型,优化了读写路径,从而能够换取更高的读写性能。
总的来说,NoSql数据库的特点主要是两点,一是分布式易扩展,二是非关系型的数据模型。
数据库经历了从关系数据库到NoSQL,NewSQL的发展历程
NewSQL可以说是传统的RDBMS与NoSQL技术结合之下的产物,典型NewSQL技术可以理解成分布式关系型数据库,能够支持分布式事务是一个NewSql数据库的基本前提。
NoSQL与NewSQL在技术上有很多类似,比如NewSQL也会用到K-V存储方式,但在是否支持关系型模型及分布式事务上,还是有比较明显的区别。
Google Bigtable、HBase、Amazon Dynamo是典型NoSQL技术,而Spanner、CockroachDB以及国内PingCAP公司的TiDB,可以归类为典型NewSQL技术。
很多NoSQL技术定义了自己独立的查询语言接口,对标准SQL的兼容性不好,因此在实际应用上有诸多不便。NewSQL技术正在积极拥抱标准SQL接口,一般都对标准SQL做了很好的兼容,甚至像Kafka这样的队列中间件也支持标准SQL,SQL正成为不同系统之间交流数据的共同语言。
云计算服务商会做云原生(Cloud Native)数据库,利用新的硬件及云本身的优势打造云原生数据库,比如阿里云的Cloud HBase、PolarDB,华为的GaussDB等。
PolarDB是阿里云的云原生数据库方案
云原生数据库是为了更好地服务于云环境下的应用而诞生的,融合了众多创新技术,本质上是云的能力和数据库能力的融合。
总的来说,云原生数据库有以下优点: