【技术硬核】庖丁解牛 | PostgreSQL与NewSQL大解析(二)

在“从数据库技术的40年发展历程看新征程”一文中,我们通过回顾数据库的发展史,重新理解了数据库的定义——数据库就是一个存放数据的仓库,这个仓库按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据。我们的程序都是在内存中运行的,一旦程序运行结束或者计算机断电,程序运行中的数据都会丢失,所以我们就需要将一些程序运行的数据持久化到硬盘之中,以确保数据的安全性。说白了,数据库就是存储数据的仓库。

我们已经提到数据库已经可以分为几类有:
【技术硬核】庖丁解牛 | PostgreSQL与NewSQL大解析(二)
数据库经过40年的发展,经过从RDBMS到MPP在到NoSQL数库,如今我们开始关注NewSQL数据库。每个阶段的特点是怎样的呢?

RDBMS

关系型数据库的优点是:事务、索引、关联、强一致性
缺点:有限的扩展能力、有限的可用性、数据结构取决于表空间

MPP

大规模并行计算数据库的优点为:扩展性强、事务、索引、关联、可调一致性
缺点:应用级切分、数据结构取决于表空间

NoSQL

超越关系型数据库,数据库其优点在与:扩展性强、可调一致性、灵活的数据结构
缺点:事务支持差、索引支持差、SQL支持差
【技术硬核】庖丁解牛 | PostgreSQL与NewSQL大解析(二)
最经典的是传统关系型OLTP数据库,其主要用于事务处理的结构化数据库,典型例子是企业的转账记账、订单以及商品库存管理等。其面临的核心挑战是高并发、高可用以及高性能下的数据正确性和一致性。

其次是NoSQL数据库及专用型数据库,其主要用于存储和处理非结构化或半结构化数据(如文档,图,时序、时空,K-V),不强制数据的一致性,以此换来系统的水平拓展、吞吐能力的提升。

再次是分析型数据库(On-Line Analytic Processing,OLAP),其应用场景就是海量的数据、数据类型复杂以及分析条件复杂的情况,能够支持深度智能化分析。其面临的挑战主要是高性能、分析深度、与TP数据库的联动,以及与NoSQL数据库的联动。

除了数据的核心引擎之外,还有数据库外围的服务和管理类工具,比如数据传输、数据备份以及数据管理等。

NoSQL数据库解决了扩展性,高并发访问,但还有很多未尽如人意之处,比如:
● 索引,无法有效使用索引 → Ad Hoc Query
● 协处理器无法分散计算任务 → 大表的Join查询
● SQL以外的分析查询 → Data Science / Machine Learning
● 访问其他数据源 → 和现有Hadoop数据联合查询(多源异构)
● 交互式分析 → 复杂SQL查询的性能问题

于是 NewSQL 呼之欲出