浅谈NewSQL

一、什么是NewSQL

NewSQL 是一种现代关系型数据库管理系统 (RDBMS) 的统称,旨在结合传统关系型数据库的事务完整性 (ACID)SQL 兼容性,以及 NoSQL 数据库的高可扩展性高性能

简单来说,NewSQL 就是希望在分布式环境下,既能像传统 SQL 数据库那样保证数据的一致性和可靠性,又能像 NoSQL 数据库那样处理海量数据和高并发请求。

NewSQL 出现的背景

传统的关系型数据库(如 MySQL、PostgreSQL、Oracle)在处理高并发和海量数据时面临瓶颈,通常只能通过垂直扩展(提升硬件性能)来提高性能。而随着互联网应用的快速发展,对数据处理能力的需求呈爆炸式增长,垂直扩展已经无法满足需求。

NoSQL 数据库(如 MongoDB、Cassandra)应运而生,它们通过牺牲部分 ACID 特性来换取更高的可扩展性和灵活性,适用于处理非结构化数据和高并发读写。然而,NoSQL 数据库通常不支持复杂的事务,并且缺乏 SQL 的强大查询能力和熟悉的开发模型,这使得它们在需要强一致性事务的业务场景(如金融、电商)中应用受限。

NewSQL 正是为了解决这一矛盾而诞生的,它试图融合两者的优点。

NewSQL 的主要特点

  1. SQL 兼容性: NewSQL 数据库通常支持标准的 SQL 查询语言,使得开发者可以继续使用熟悉的 SQL 语法和工具,降低了学习成本和迁移难度。
  2. ACID 事务: 尽管运行在分布式环境中,NewSQL 数据库依然能够提供完整的 ACID 事务保证,确保数据的一致性、原子性、隔离性和持久性,这对于金融、订单处理等对数据一致性要求极高的应用至关重要。
  3. 水平扩展性: NewSQL 系统设计之初就考虑了分布式架构,通常采用“共享无(shared-nothing)”架构,允许通过添加更多的节点来线性扩展处理能力和存储容量,以应对不断增长的数据量和并发请求。
  4. 高性能: 为了达到高性能,NewSQL 数据库通常会采用各种优化技术,例如内存计算、优化的存储引擎、并行查询处理等。
  5. 高可用性与容错性: NewSQL 系统通常内置了数据复制、故障转移等机制,以确保系统在部分节点故障时仍能持续提供服务,提高系统的可用性和数据持久性。

NewSQL 的实现方式(常见分类)

NewSQL 数据库的实现方式多种多样,但通常可以分为以下几类:

  1. 新的架构(New Architectures): * 这类 NewSQL 数据库是从头开始设计和构建的,以支持分布式和可伸缩的事务处理。它们通常采用分布式事务协议(如 Paxos、Raft)来保证分布式环境下的 ACID 特性。
    • 例子:VoltDB、CockroachDB、TiDB、YugabyteDB。
  2. SQL 引擎优化(SQL Engines): * 这类 NewSQL 数据库在传统的关系型数据库之上构建,通过优化 SQL 引擎和存储层来提高性能和可伸缩性。它们可能使用分布式缓存、并行查询等技术。
    • 例子:MemSQL (SingleStore)。
  3. 透明分片(Transparent Sharding): * 这类 NewSQL 解决方案通过在现有关系型数据库之上添加一个分片层来实现水平扩展。这个分片层负责将数据分布到多个数据库实例中,并对应用程序透明。
    • 例子:Vitess(基于 MySQL)。

NewSQL 与其他数据库的对比

特性/数据库类型 传统 RDBMS (SQL) NoSQL NewSQL
数据模型 关系型 多样(键值、文档、列族、图等) 关系型
查询语言 SQL 多样(API、特定查询语言) SQL
ACID 事务 强一致性 (ACID) 弱一致性(最终一致性或更弱) 强一致性 (ACID)
可扩展性 垂直扩展为主 水平扩展 水平扩展
性能 高(单机) 高(分布式) 高(分布式)
数据结构 严格的 Schema 灵活的 Schema 严格的 Schema / 灵活的 Schema
典型应用 传统企业应用、OLTP 大数据、Web 2.0 应用、高并发读写 高并发 OLTP、金融、电商、游戏

NewSQL 的优点

  • 兼顾一致性与可伸缩性: 解决了传统关系型数据库在可伸缩性上的瓶颈,同时保留了 NoSQL 数据库缺乏的 ACID 事务保证。
  • SQL 兼容: 降低了开发和运维的学习成本,方便从传统关系型数据库迁移。
  • 高性能: 能够处理高并发的在线事务处理 (OLTP) 工作负载。
  • 高可用性: 通过分布式架构和数据复制,提供更好的容错能力和数据持久性。

NewSQL 的缺点

  • 复杂性: NewSQL 系统的架构通常比传统 RDBMS 更复杂,部署、管理和故障排查可能需要更高的技术能力。
  • 写入延迟: 在分布式环境下实现强一致性 ACID 事务,可能会引入额外的网络通信和协调开销,导致某些写入操作的延迟高于单机数据库。
  • 生态系统: 相比成熟的传统 RDBMS 和 NoSQL 数据库,NewSQL 的生态系统可能相对较新,工具和社区支持可能不如两者完善。
  • 成本: 构建和维护一个高性能、高可用的 NewSQL 集群可能需要更多的硬件资源和专业人员。

NewSQL 的典型应用场景

NewSQL 数据库非常适合那些需要兼顾高并发、海量数据和强事务一致性的场景,例如:

  • 金融服务: 银行交易、支付系统、证券交易等,对数据一致性和可靠性要求极高。
  • 电子商务: 订单处理、库存管理、购物车等,需要处理大量并发交易并保证数据准确性。
  • 在线游戏: 玩家数据、游戏内交易等,需要高并发读写和实时响应。
  • 物联网 (IoT): 海量传感器数据的实时采集、处理和分析,同时可能需要进行设备状态的事务性更新。
  • 实时数据分析: 需要对实时产生的交易数据进行即时分析,以支持决策。

总结

NewSQL 代表了数据库发展的一个重要方向,它试图在传统关系型数据库的优点和 NoSQL 数据库的优势之间找到一个平衡点。对于需要处理大规模在线事务处理 (OLTP) 工作负载,同时又不能牺牲数据一致性和 SQL 强大能力的现代企业级应用来说,NewSQL 提供了非常有吸引力的解决方案。

二、NewSQL产品及应用场景

 

NewSQL 并不是一个仅仅停留在概念阶段的数据库类型,它已经拥有了许多成熟的产品和广泛的应用场景。NewSQL 数据库旨在结合传统关系型数据库的强一致性(ACID 特性)和 SQL 兼容性,以及 NoSQL 数据库的水平扩展性和高性能,以应对现代互联网应用对数据库的严苛要求。

NewSQL 的具体产品

NewSQL 领域涌现出了许多优秀的产品,它们在架构和实现上可能有所不同,但都致力于提供兼具 SQL 和 NoSQL 优势的解决方案:

  • Google Spanner/CockroachDB/TiDB/YugabyteDB (Spanner-like):

    • Google Spanner: Google 内部使用的全球分布式数据库,提供了全球一致性、高可用性和强事务保证。它是许多 NewSQL 数据库(特别是那些被称为“分布式 SQL”的数据库)的灵感来源。
    • CockroachDB: 开源的分布式 SQL 数据库,设计目标是像蟑螂一样“无法被杀死”,具有极高的容错性和可用性,支持标准 SQL。
    • TiDB: 由中国 PingCAP 公司开发的开源分布式 SQL 数据库,兼容 MySQL 协议,具备水平扩容、ACID 事务和高可用性。它在中国乃至全球都有广泛的应用。
    • YugabyteDB: 另一个开源的分布式 SQL 数据库,兼容 PostgreSQL,同样提供分布式 ACID 事务、水平扩展和高可用性。
    • 共同特点: 这类产品通常采用多版本并发控制 (MVCC) 和分布式事务协议(如 Paxos 或 Raft 的变体)来保证分布式环境下的 ACID 特性。它们能够实现跨数据中心的全球性部署。
  • VoltDB:

    • 一个内存式的 NewSQL 数据库,主要针对高吞吐量的在线事务处理 (OLTP) 场景设计。它通过预编译 SQL、分区和单线程执行来达到极高的性能。适用于需要毫秒级响应速度的应用。
  • MemSQL (SingleStore):

    • 一个高性能的内存和磁盘混合存储的 NewSQL 数据库,支持 SQL 和 NoSQL 数据类型,并提供实时分析能力。它被设计用于处理大数据量的事务和实时分析工作负载 (HTAP)。
  • NuoDB:

    • 一个云原生分布式 SQL 数据库,具有独特的弹性伸缩架构,可以在不同节点上动态部署和管理,适用于多云和混合云环境。
  • ClustrixDB (已被 MariaDB 收购并集成到 MariaDB Xpand):

    • 一个兼容 MySQL 的分布式数据库,提供了水平扩展和高可用性。
  • Vitess (CNCF 项目):

    • 严格来说,Vitess 并不是一个独立的 NewSQL 数据库,而是一个用于水平扩展 MySQL 的数据库集群系统。它为 MySQL 提供了分片、连接池、负载均衡等功能,使得 MySQL 能够在大规模环境下运行,并保持 SQL 兼容性和事务性。
  • OceanBase (蚂蚁集团):

    • 一个国内自主研发的分布式关系型数据库,具有强一致性、高可用、高扩展等特性,已被广泛应用于蚂蚁集团的金融核心业务,并对外开放。

NewSQL 的应用场景

NewSQL 数据库的特性使其非常适合以下需要兼顾高性能、可扩展性和强一致性的场景:

  • 金融服务:

    • 应用: 银行交易系统、支付清算系统、证券交易平台、欺诈检测等。
    • 优势: 金融行业对数据一致性和交易的原子性要求极高,任何数据错误都可能造成巨大损失。NewSQL 能够提供强 ACID 事务,同时处理高并发的交易量,确保数据安全和系统稳定。
  • 电子商务和在线零售:

    • 应用: 订单管理、库存管理、用户账户、促销活动等。
    • 优势: 电商平台在促销活动(如“双十一”)期间会面临巨大的并发流量,需要数据库能够瞬间扩容以应对峰值压力,并保证订单、库存等数据的准确无误。NewSQL 的水平扩展能力和 ACID 保证非常适合这些场景。
  • 在线游戏:

    • 应用: 玩家数据、游戏内交易、排行榜、匹配系统等。
    • 优势: 大型多人在线游戏 (MMORPG) 或竞技游戏对实时性、高并发和数据一致性有极高要求。NewSQL 可以支撑海量玩家的并发操作,同时确保游戏道具、货币等数据的安全。
  • 物联网 (IoT) 和实时数据处理:

    • 应用: 传感器数据采集、设备状态更新、实时监控和分析。
    • 优势: 物联网设备会产生海量的时序数据,NewSQL 能够高效地存储、处理这些数据流,并支持对设备状态的实时事务性更新,例如智能城市、工业自动化等。
  • SaaS 平台和多租户应用:

    • 应用: 各种基于云的软件服务,为多个客户提供服务。
    • 优势: NewSQL 能够为每个租户提供隔离的数据存储和处理能力,同时通过水平扩展来支持不断增长的用户数量,并保证不同租户数据之间的强隔离。
  • 实时分析 (HTAP):

    • 应用: 实时报表、决策支持、个性化推荐。
    • 优势: 某些 NewSQL 数据库(如 SingleStore、TiDB)支持 HTAP (Hybrid Transactional/Analytical Processing),即在同一个数据库中同时进行在线事务处理和实时分析,避免了数据从 OLTP 库到 OLAP 库的复杂 ETL 过程,大大缩短了数据到洞察的时间。

总而言之,NewSQL 已经不再是单纯的概念,而是真实存在且被广泛采用的技术趋势。随着分布式系统和云计算的普及,NewSQL 数据库在解决传统关系型数据库扩展性瓶颈的同时,保留其核心优势,成为了许多企业构建高并发、高可用、强一致性应用的首选。

三、传统数据库厂家动态

像 IBM、Oracle、微软这样的传统数据库巨头也积极地在 NewSQL 领域布局和推出相关产品及解决方案,尽管它们可能不直接使用 "NewSQL" 这个词来宣传,而是将其作为现有产品线的增强或新服务推出。

这些传统厂商拥有深厚的关系型数据库技术积累,它们主要通过以下几种方式来提供 NewSQL 类似的能力:

Oracle

Oracle 在其旗舰产品 Oracle Database 中通过引入分片 (Sharding)Exadata 等技术来提供接近 NewSQL 的扩展性和性能:

  • Oracle Sharding: 这是 Oracle 数据库的一项核心功能,允许用户将一个大的数据库水平地分割成多个独立的、共享无 (shared-nothing) 的数据库(称为分片或 Shard)。每个分片都是一个完整的 Oracle 数据库实例,可以在不同的服务器上运行。

    • NewSQL 特性: Oracle Sharding 提供了水平扩展能力,可以随着数据量和并发请求的增长线性增加硬件资源。同时,由于每个分片都是完整的 Oracle 数据库,它依然保持了 Oracle 强大的 ACID 事务、SQL 兼容性、PL/SQL 等传统关系型数据库的优势。它支持各种分片策略,并提供了分片目录 (Shard Catalog) 来管理全局元数据。
    • 应用场景: 非常适合需要超大规模 OLTP 性能的应用,例如全球性的电商平台、电信运营商、金融机构等,这些场景需要处理海量数据和高并发交易,并且对数据一致性和可用性有极高要求。
  • Oracle Exadata: 虽然 Exadata 是一个集成软硬件的数据库一体机,但它的设计哲学与 NewSQL 的高性能目标不谋而合。Exadata 通过智能存储、列式存储、闪存加速、高带宽互联等技术,极大地提升了 Oracle 数据库的 OLTP 和 OLAP 混合负载性能。

    • NewSQL 特性: 提供了极高的单节点或集群性能,能够支持大规模并发事务。虽然它本质上是垂直扩展的增强,但其卓越的性能表现使其在某些方面能够与 NewSQL 相媲美。

IBM

IBM 在其 Db2 产品系列中也持续进行创新,以适应分布式和云原生的需求,提供 NewSQL 类似的能力:

  • Db2 pureScale: 这是 IBM Db2 的一个高可用性、高扩展性架构。它基于共享磁盘架构,允许多个 Db2 实例同时访问共享存储,提供近似于单系统的弹性扩展和故障转移能力。

    • NewSQL 特性: 尽管是共享磁盘架构,但 pureScale 提供了透明的横向扩展能力,可以支持大规模 OLTP 工作负载,并具备很高的可用性。它旨在提供大型机级别的可靠性和可扩展性。
  • Db2 on Cloud / Db2 Warehouse / IBM Cloud Databases for Db2: IBM 将 Db2 部署为云服务,并集成了容器化、Kubernetes、微服务等云原生技术,使其更容易在分布式环境中部署和管理。

    • NewSQL 特性: 云服务提供了弹性伸缩的能力,可以根据需求动态调整资源。部分云上的 Db2 产品也可能引入了分片或分布式存储等技术,以增强其在云环境下的水平扩展性。

Microsoft

微软在 Azure 云平台上的数据库产品,特别是 Azure SQL Database,在 NewSQL 方面有显著的进展:

  • Azure SQL Database Hyperscale: 这是 Azure SQL Database 的一个服务层级,它采用了一种云原生的分布式架构,将计算层和存储层分离,并采用页面服务器 (Page Servers) 和日志服务 (Log Service) 来实现近乎无限的存储扩展和快速的数据库恢复。

    • NewSQL 特性: Hyperscale 提供了极高的存储和计算扩展能力(最高可达 100TB),同时保持了完整的 SQL 兼容性和 ACID 事务。它的架构使其能够快速备份和恢复,并支持多副本以实现高可用性。这正是 NewSQL 追求的分布式、高扩展且保持关系型特性的目标。
    • 应用场景: 适用于各种规模的 OLTP 工作负载,尤其是那些数据量巨大且需要高性能和高可用性的应用。
  • Azure Cosmos DB (部分 SQL API): 虽然 Cosmos DB 本身是一个多模型的 NoSQL 数据库,但它提供了 SQL API,可以像关系型数据库一样使用 SQL 查询。更重要的是,Cosmos DB 提供了全球分布式、多主写入、低延迟和高吞吐量的能力,并且可以在文档级别或基于特定条件提供强一致性。

    • NewSQL 特性: Cosmos DB 的 SQL API 使得开发者可以用熟悉的 SQL 语法操作分布式数据,同时享受其全球扩展、高可用和灵活一致性模型(包括会话一致性和有界陈旧一致性,在某些情况下可以满足接近强一致性的要求)。虽然它不是传统的 NewSQL 关系型数据库,但在某些分布式 SQL 的能力上有所重叠。

总结

这些传统巨头并没有直接使用 "NewSQL" 这个标签来发布全新产品线,而是通过以下策略来满足类似 NewSQL 的需求:

  • 增强现有核心产品: 在现有成熟的关系型数据库产品(如 Oracle Database、IBM Db2、SQL Server)中增加分布式、扩展性相关的特性(如分片、集群技术)。
  • 云原生化: 将其数据库产品部署到云平台,并利用云的弹性、可扩展性、服务化能力来提供类似 NewSQL 的体验。
  • 混合模式: 开发或收购结合关系型和非关系型特性的产品,以满足更广泛的应用需求。

因此,可以说这些传统厂商已经通过不同的方式提供了与 NewSQL 概念相符的产品和能力,并且在很多企业级应用中得到了广泛应用。它们是 NewSQL 市场的重要参与者,尤其在那些对数据可靠性、成熟度和企业级支持有更高要求的场景中。

你可能感兴趣的:(行业发展,数据库,ibm,oracle,微软,人工智能,ai,程序人生)