当前位置: 主页 > 数据库

sql数据库同步方式-数据传输的同步方式

发布时间:2023-02-13 09:16   浏览次数:次   作者:佚名

Michael Stonebraker,2014年图灵奖得主,PostgreSQL数据库创始人。 目前数据库领域有四位图灵奖获得者:

sql数据库同步方式_数据传输的同步方式_sql数据库表同步

伯克利是 Postgres 的摇篮

(图片:伯克利著名地标萨瑟门,CSDN从东方IC下载)

PostgreSQL的特点可以用下图来概括。 PostgreSQL 的架构最适合企业级数据库。

数据传输的同步方式_sql数据库表同步_sql数据库同步方式

2个

基于PostgreSQL的开源项目分支

说完PostgreSQL的历史,我们再来说说PostgreSQL在开源社区世界的发展。 我们知道,过去40年数据库的发展基本上是一个从RDBMS到OLTP/OLAP分离,再到分布式数据库发展的过程。

PostgreSQL 的历史也是如此。 从PostgreSQL核心开始,又经历了OLTP分支,OLAP分支,再到大势所趋。 两者重新整合并向混合的 OLA/TP 分布式数据库发展。

数据传输的同步方式_sql数据库表同步_sql数据库同步方式

3个

分布式PostgreSQL-X2架构介绍

既然PostgreSQL已经发展到混合部署阶段,那我们就从本文的主旨出发,看一下X2架构的特点。

首先,X2是一个基于PostgreSQL源码改造的分布式数据库,所以它几乎具备了单机数据库的所有功能:

其次,X2的主要目的是实现数据的水平分片,也就是说要解决数据基于分库分表的线性扩展问题。

第三,X2是OLAP的shared-nothing架构,是一种MPP技术原理,可以实现ETL的数据仓库处理。

最后,API完全兼容,外部应用可以透明访问Postgres-X2,原始jdbc等不同编程语言的驱动基本不用修改就可以访问Postgres-X2。

sql数据库同步方式_sql数据库表同步_数据传输的同步方式

从上图中的X2架构我们可以看出X2主要由三部分组成:

4个

分布式PostgreSQL-X2的CAP分析

数据传输的同步方式_sql数据库表同步_sql数据库同步方式

我们知道,CAP原则是一个考虑数据库高度的评价标准。 在RDBMS时代,Oracle和MS SQLServer可以更好的接近CAP。 在分布式数据库时代,CAP理论仍然是我们评估的主要工具。 AP原则,也称为CAP定理,是指分布式系统中的一致性、可用性和分区容错性。 CAP原则就是这三个要素最多只能同时达到两个点,不可能三者兼顾。

首先,在一致性方面,PostgreSQL-X2使用GTM来实现:

数据传输的同步方式_sql数据库表同步_sql数据库同步方式

GTM对事务的强一致性保护可与传统RDBMS相媲美,是生产级的。 与2PC、MVCC相比,是先进的。 但是总体开销会比较高。 如果是上亿级并发访问的庞大互联网应用场景,很难有比MySQL更好的表现。

2PC 也称为两阶段提交协议。 2pc是一个非常经典的强一致和中心化的原子提交协议。 这里所说的中心化是指协议中有两类节点:一种是中心化的协调者节点(coordinator)和N个参与节点(participant)。

数据传输的同步方式_sql数据库同步方式_sql数据库表同步

MVCC的英文全称是Multi-Version Concurrency Control,翻译成中文就是多版本并发控制。 MVCC的实现是通过保存某个时间点的数据快照来实现的。 这意味着无论事务运行多长时间,您都可以在同一事务中看到一致的数据视图。 根据事务的开始时间不同,也意味着不同的事务在同一时刻看到的同一张表中的数据可能是不同的。

sql数据库同步方式_sql数据库表同步_数据传输的同步方式

客观上,我们认为是一个乐观锁的完整实现,即每一行都有一个版本号,保存时根据版本号判断是否成功。

在扩展性方面,Postgres-X2的扩展可以同时扩展Coordinator和Datanode的容量。

sql数据库同步方式_sql数据库表同步_数据传输的同步方式

Postgres-X2 符合分布式数据库线性扩展的标准。 在x86横行的时代,将计算资源和存储资源横向扩展到机器是分布式的核心思想。 在这一点上,Postgres-X2 也是这样做的。

但是Postgres本身的问题就是不能支持很大的数据量。 数据量在 40 TB 到 200 TB 之间。 对于大型数据仓库,性能会随着数据量的增加和节点数量的增加而衰减。 它不能完全遵循线性扩展。 做线性性能叠加。 这是很容易被人诟病的一点。

还有一个,它不能很好地支持在线热插拔和热添加。 如果添加了新节点,则需要将其关闭并重新启动。 在这种情况下,实时ODS等应用无法应用在基于Postgres-X2构建的OLAP上。

分区容错性不是 PostgresSQL 的主要关注点。 因为大多数分布式系统都分布在多个子网中。 每个子网称为一个分区。 分区容忍意味着间隔通信可能会失败。 例如,如果一台服务器位于中国,另一台服务器位于美国,这是两个地区,它们之间可能无法通信。

数据传输的同步方式_sql数据库同步方式_sql数据库表同步

上图中,G1和G2是两个spanning server。 G1 向 G2 发送消息,G2 可能不会收到该消息。 在设计系统时必须考虑到这种情况。 在这种情况下,目前亚马逊QWS S3、谷歌Spanner、阿里云的OceanBase等大型云厂商都在重点打造。 Postgres-X2 我们只从数据中心的高可用来讨论:

sql数据库表同步_数据传输的同步方式_sql数据库同步方式

在高可用方面,与Greenplum不同,GTM只有一个master节点,不适合OLTP业务。 Postgres-X2本身虽然没有自动高可用,但是可以通过SPOF(单点故障)分析,根据不同的业务情况进行高可用建设。 比如上图就是使用Primary-Standby的方式搭建高可用架构。 另外,原来Postgres-XC的D-Nodes不能传输数据,数据需要聚合到C节点处理。 Postgres-X2 允许 D-Node 之间的数据传输。

以上,我们对PostgresSQL及其分布式项目Postgres-X2有了比较全面的了解,我们可以总结一下:

sql数据库表同步_数据传输的同步方式_sql数据库同步方式

5个

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

我们已经提到,数据库可以分为几类:

数据传输的同步方式_sql数据库同步方式_sql数据库表同步

经过40年的数据库发展,从RDBMS到MPP再到NoSQL数据库,现在我们开始关注NewSQL数据库。 每个阶段有什么特点?

数据传输的同步方式_sql数据库表同步_sql数据库同步方式

最经典的是传统的关系型OLTP数据库,主要作为结构化数据库进行事务处理。 典型的例子有企业转帐核算、订单和商品库存管理。 它面临的核心挑战是高并发、高可用、高性能下的数据正确性和一致性。

其次是NoSQL数据库和专用数据库,主要用于存储和处理非结构化或半结构化数据(如文档、图形、时间序列、时空、KV),不强制数据一致性,以换取系统水平扩展和吞吐量提高。

另一种是分析型数据库(On-Line Analytic Processing,OLAP),其应用场景是海量数据、复杂的数据类型和复杂的分析条件,可以支持深度智能分析。 它面临的挑战主要是高性能、分析深度、与TP数据库的联动、与NoSQL数据库的联动。

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

NoSQL数据库解决了可扩展性和高并发访问,但是还有很多不尽如人意的地方,比如:

于是NewSQL就要问世了。

6个

说起NewSQL数据库,就不得不从Google的F1/Spanner大型分布式数据库说起。

1. 谷歌 F1/扳手

和很多互联网公司一样,谷歌在早期大量使用了Mysql。 Mysql是单机的,可以使用Master-Slave进行容错,分区进行扩展。 但是,它需要大量的人工运维工作,有很多局限性。 于是Google开发了一个容错和可扩展的RDBMS——F1。 不同于一般的分布式数据库,F1对应的是RDMS应该具备的功能,毫不妥协。 最初 F1 是基于 MySQL,但会逐渐迁移到 Spanner。

sql数据库表同步_sql数据库同步方式_数据传输的同步方式

F1具有以下特点:

sql数据库表同步_sql数据库同步方式_数据传输的同步方式

Spanner 是 Google 的全球分布式数据库(Globally-Distributed Database)。 Spanner 的可扩展性已经达到了惊人的全球水平,可以扩展到数百万台机器、数百个数据中心和数万亿行。 更重要的是,除了夸张的可扩展性之外,还可以通过同步复制和多个版本同时满足外部一致性,可用性也非常好。 突破CAP的束缚,实现三者的完美平衡。

sql数据库表同步_数据传输的同步方式_sql数据库同步方式

Spanner 是一个可扩展的、多版本的、全球分布式的数据库sql数据库同步方式,也支持同步复制。 这是谷歌的第一个全球可扩展和外部一致的交易。 Spanner 可以在没有使用 GPS 和原子钟实现的时间 API 的情况下执行此操作。 该 API 可以将数据中心之间的时间同步到 10ms 以内。 因此,核心功能有几个:无锁读事务、原子模式修改、无块读取历史数据。

由于F1/Spanner不开源,我们通过现有的公开资料只能看到F1/Spanner的沧海一粟,所以我们主要通过Google的公开资料来学习和发展自己,这比PostgreSQL有价值得多。

2、F1 Query为NewSQL打下基础

2018年,谷歌发表论文《F1 Query: Declarative Querying at Scale》,意味着对F1/Spanner架构的升级。 解决了以下核心问题:

数据传输的同步方式_sql数据库同步方式_sql数据库表同步

于是将F1数据库扩展成了这样的数据库:

一种数据,在完美融合CAP原理后,解决了同时支持OLTP、OLAP、ETL场景的数据库使用问题。 可以说,它给我们带来了一个“新”的世界,因为它开创了数据库的“新”时代。 这个“新”被 451 Group 分析师 Matthew Aslett 命名为“NewSQL”。

3. NoSQL谢幕,NewSQL登场

NewSQL 一词是由 451 Group 分析师 Matthew Aslett 在一篇研究论文中创造的。 它指的是一种新型的数据库系统,挑战现有的数据库供应商。 NewSQL是各种新型可扩展/高性能数据库的缩写。 这类数据库既具有NoSQL存储和管理海量数据的能力,又保持了传统数据库支持ACID和SQL的特性。

NewSQL就是指这样一种新型的关系型数据库管理系统。 对于 OLTP(读写)工作负载,它寻求提供与 NoSQL 系统相同的可扩展性,同时仍然保持 ACID 和 SQL 的特性(可扩展和 ACID 和(关系和/或 sql-access))。

NewSQL一经问世,发展至今,已经形成了一个庞大的技术家族:

sql数据库表同步_数据传输的同步方式_sql数据库同步方式

7

由上可知,NewSQL的优势在于SQL的支持能力、可扩展性、实时性和事务处理能力。 在NewSQL蓬勃发展的前提下,许多新兴科技公司开始打造自己的新一代分布式数据库。 其设计理念:

1.分布式架构

通过master节点发送任务的方式,每个节点都可以提供服务,master在扩展性上不会成为瓶颈。

数据传输的同步方式_sql数据库同步方式_sql数据库表同步

相比之下,PostgreSQL目前的分布式架构是MPP,share nothing,存在增减节点数据再分配的问题。

2、从分库分表到Sharding and Partition(分片和分区)

通过我们之前对PostgreSQL的解读,数据分片和分片是一种被迫的选择。 如果不分片就可以做到,尽量不要做这种设计,因为会对业务强加要求,或者改变业务。 因此,在NewSQL的设计中,我们需要做更多的Sharding and Partition(分片和分区)的设计。

数据分区

分区就是把一张表的数据分成N块。 从逻辑上讲,它只是一张表,但底层是由N个物理块组成的。

什么时候应该考虑使用分区? 当一个表的查询速度慢到影响使用,数据量大,优化SQL,对表中的数据进行分段,或者对数据的操作往往只涉及部分数据而不是所有的数据。

分区解决的问题主要是提高查询效率。

数据传输的同步方式_sql数据库同步方式_sql数据库表同步

数据分片

在分布式存储系统中,数据需要分布存储在多个设备上。 数据分片(Sharding)是一种用于确定数据在多个存储设备上的分布的技术。 数据分片有三个目的:

sql数据库表同步_sql数据库同步方式_数据传输的同步方式

3. 数据同步与一致性-Raft/Paxos

目前主流的NewSQL数据库的数据同步都是基于Raft协议。

sql数据库表同步_sql数据库同步方式_数据传输的同步方式

Raft 中的三个角色:

Leader:负责接收客户端请求,将日志复制到其他节点并告诉其他节点什么时候可以安全地应用这些日志;

Candidate:用于选举Leader的角色;

Follower:负责响应Leader或Candidate的请求。

sql数据库同步方式_sql数据库表同步_数据传输的同步方式

木筏状态机:

数据传输的同步方式_sql数据库表同步_sql数据库同步方式

至此,PostgreSQL-X2的架构由主备模式决定。

4.分布式事务

sql数据库表同步_sql数据库同步方式_数据传输的同步方式

这样做的好处是可以实时保证数据的新鲜度,数据更新插入和分析可以一起完成,比如实时数仓,可以实现实时统计汇总计算。 相比之下,PostgreSQL中的OLAP可以通过批量或插入的方式进行更新,但需要人工优化,持续投入人为干预,被动的性能保障。

sql数据库同步方式_sql数据库表同步_数据传输的同步方式

5.存储层——KV存储

在存储方面,我们有两种选择:

非堆存储只能通过key获取数据,会导致连续离散读,无法适配AP场景。

sql数据库表同步_sql数据库同步方式_数据传输的同步方式

相比之下,PostgreSQL是一种本地化存储,存储也可以分为列存储和行存储。

6. 多源异构与数据联邦

NewSQL的多源异构数据需要考虑到对过去数据库的全面支持,尤其是NoSQL和Hadoop生态,因为毕竟这两个已经很火了。

数据传输的同步方式_sql数据库表同步_sql数据库同步方式

在多源异构方面,PostgreSQL通过FDW支持多源异构,可以访问Oracle、PG、MySQL、MongoDB等,对Hadoop系统和NoSQL的支持较低,难以做到极致的效率和表现。

7、基于NewSQL的分布式数据库实践

基于以上六点sql数据库同步方式,通过NewSQL:

我们综合设计研发,推出自主可控的国产分布式数据库——哈勃。 Hubble同时支持OLTP和OLAP场景,即在同一份数据上,实现事务处理的同时支持实时分析,省去了耗时的ETL过程。

最后,以Hubble为代表和PsostgreSQL-X2进行横向分析,可以帮助我们更好地理解本文开头所说的——分布式数据库两大喇叭各自的技术路线。

数据传输的同步方式_sql数据库表同步_sql数据库同步方式

作者简介:张秋健,天云数据上海分公司副总经理,资深金融行业大数据技术架构专家。 计算机科学与技术硕士后,曾在IBM等公司工作,曾任九三学社财务委员会委员。 目前主要为银行、证券、保险等金融行业客户提供大数据平台、人工智能平台的规划与方案设计。 在IEEE等期刊发表多篇论文。

推荐