怎么建设素材网站,软件商店vivo官方下载,制作网页的最后一个阶段工作是什么,广州番禺区房价8 月 30 日#xff0c;由 NineData 和 SelectDB 共同举办的主题为“实时数据驱动#xff0c;引领企业智能化数据管理”的线上联合发布会#xff0c;圆满成功举办#xff01;双方聚焦于实时数据仓库技术和数据开发能力#xff0c;展示如何通过强大的生态开发兼容性#xf…8 月 30 日由 NineData 和 SelectDB 共同举办的主题为“实时数据驱动引领企业智能化数据管理”的线上联合发布会圆满成功举办双方聚焦于实时数据仓库技术和数据开发能力展示如何通过强大的生态开发兼容性对接丰富的大数据生态产品助力企业快速开展数据分析业务共同探索实时数据驱动的未来企业智能化数据管理解决方案。
本文根据玖章算术技术副总裁陈长城天羽在 NineData X SelectDB 联合发布会的主题演讲内容整理。 玖章算术技术副总裁陈长城天羽 陈长城曾任阿里云数据库中台负责人和阿里云数据库生态工具部总经理前阿里云资深技术专家。带领阿里云数据库基础设施完成三次架构变革从去 IOE 到分布式、异地多活、容器化和存储计算分离是历年双 11 大促的数据库核心负责人和容量、架构规划者。主导云原生工具体系架构升级并打造一站式管理能力。发表过多篇技术专利和 VLDB、ICDE 数据库顶会论文。 01 NineData 产品介绍
在数据和云的时代企业数字化面临诸多挑战从 Gartner 和 Percona 的报告中我们知道 80%以上的企业会选择多云或混合云而超过 70%的企业会选择使用多种数据库来满足业务需求。在行业的分析报告中我们发现如果企业能够有效使用多源基础架构和新的数据架构它们的创新能力和整体盈利能力将会明显提升。然而在数据和云的时代下企业数据管理的挑战更多例如数据孤岛、多源异构数据管理复杂度以及开发效率等都是急需解决的。
基于上述普遍存在的问题和挑战玖章算术建设了 NineData 云原生智能数据管理平台。最底层 IaaS 接口层统一对接各场景的各种数据源基于此建设 NineData 数据备份、数据复制、数据对比和 SQL 开发四大核心功能模块与企业的数据库、搜索、消息队列、数仓等数字系统紧密联动帮助企业保护数据资产基于多云和混合云灵活构建基础设施统一安全管理提升数据库开发效率。 这里展开介绍一下 SQL 开发它是一种让企业内外部所有开发者都遵循统一数据访问规范并提升效率的最佳实践产品化当前企业面对多云和多种数据源虽然各种数据源有各自的 CLI 或图形管理工具但存在这些问题 权限分散、审计欠缺安全管控难度大 各个工具建设程度不一体验一般开发效率低 无法形成统一规范数据库生产稳定性缺乏保障 多环境、多种数据源无法统一管理。
针对这些问题NineData 设计了企业级数据库安全管理能力通过统一数据源对接各云厂商和自建的各种数据源设计任务流和审批流、安全规则配置、权限管理与操作审计、SSO 支持等基础组件将企业的数据实例、库、表 账号角色 操作类型 通过规则引擎统一管理并内置数据库 SQL 开发的稳定性和安全最佳实践提供数据库访问权限管理、变更管理、敏感数据管理、数据导入导出等功能。NineData 提供简单 GUI 的个人版和高效协同的企业版两种服务方式并结合大模型 AIGC 的能力在自然语音查询数据、表结构设计改写、SQL 优化建议方面提升开发者效率。 企业在数据复制场景下也面临着多数据源、多云数据打通、跨地域长周期复制以及由此带来的同能和稳定性方面的问题。NineData 数据复制致力于提供数据流动的基础设施。消除不同数据库类型、不同厂商、不同环境下的造成的数据流动难点帮助企业最大地发挥数据价值。目前 NineData 以及支持 13 种数据源的单双向链路强劲的复制性能和完善的数据对比功能具体将在后面展开。
02 数据复制技术架构
先介绍下 NineData 整体架构基于多云和多源能力我们构建了数据备份、数据复制、数据对比和 SQL 开发能力。
2.1 多云角度
从多云角度为了帮助企业统一管理分散在多云或混合云的各种数据源我们设计了灵活的云原生架构、容器化弹性拉起、网络架构等。
支持专属集群
支持多云的同时我们通过专属集群的技术能够让企业独享本身的资源。包括我们可以把企业的 worker 节点放置在企业本地或 VPC 内部实现数据的内部闭环提高企业数据安全和 worker 执行效率。 云原生的 SAAS 模式
NineData 作为一个云原生的 SAAS 产品按需拉起、弹性伸缩是最基本的能力。
网络安全
网络方面基于安全考虑很多企业客户不希望暴露数据库的公网端口因此我们设计了一个数据库网关通过这种设计用户只需拉起一个 NineData 数据库网关就能够连接我们的中心管理节点从而建立反向访问通道能够把散落在各地、以及包括内部的数据源的统一管理。此外我们的 NineData worker 也可以放到用户本地实现数据链路的内部闭环而管理链路依然可以通过中心控制台实现统一的链路管理。
2.2 多源方面
在多源方面我们主要设计了统一数据源接入层。为了接入众多数据源我们对数据源的连接池管理、属性配置、连接检查和安全认证做了统一抽象。这样可以将所有的数据源统一接入。我们的四大主要功能模块都使用相同的数据源接入层实现一次接入所有功能都可用。对于用户来说就实现了真正的统一管理。 在 NineData 的产品设计中安全不是单一的任务或功能而是自始至终灌输在产品设计、开发、运维的全过程中我们在数据传输加密、运维白屏、操作审计方面做了很多工作同时 NineData 通过内部测试和三方审计多方位保护数据安全。
一个典型的 NineData 数据复制链路拓扑当您配置完源和目标之后NineData 就会让整个链路开始运行。一开始会有一个预检查检查您的网络连接、账号密码等是否正确。接下来会进行结构复制抓取和写入全量数据和增量数据。
从产品层面我们要支持多云多源除了上面介绍的弹性架构和网络架构外我们在复制模块的多种数据类型兼容和扩展性做了重要的设计同时多源异构长期运行必然存在少部分不兼容场景我们在可观测和可干预方面也重点做了功能设计。数据传输内核模块的底线是保障数据一致同时在吞吐和延时上具备领先的优势因此我们在这方面做了很多工作。后面核心特性的分享将围绕这几个点进行展开。
03 数据复制的核心特性
3.1 吞吐能力
以全量性能为例主要有几个重要的优化项
大表迁移性能
大表迁移性能是最常见的瓶颈假设我们在源端有一些数据需要处理其中有许多表而且它们的数据量都不同。如果我们同时启动三个并发线程进行处理那么可能会出现一些数据量小的表已经处理完了但是一些数据量较大的表仍然在等待单个线程进行处理的情况。如果表级并发就会类似的问题。因此为了提高整个效率我们必须增强表内的并发能力。具体来说我们需要考虑表的切片是否均匀。为此我们制定了一项策略即默认组件支持一键拆分依次通过主键、非空唯一键、可空唯一键、普通键等这种顺序支持拆分以尽力最均衡的方式实现并发处理。
并发写入还连带着一个空间问题在使用过程中在源端如果您将 100G 的数据写入在目标端它可能会变成 150G。这是因为如果单个表乱序提交的话就可能会产生一些数据空洞。为此NineData 在切片大小和并发顺序方面进行了优化以控制写入放大。
目标库写入
要以对目标库损耗最少的方法写入才能获得最大性能。解决通道性能并且它可以线性扩展之后吞吐量的瓶颈就不在通道上而在目标库的写入上。因此目标库的写入姿势就非常重要。如果每条 SQL 都需要在目标端进行解析那么性能肯定会差。因此我们需要采用一些批量提交的方式。同时在处理压缩开关时需要注意 CPU 的数量。在 CPU 数量较少的情况下启用压缩会对性能产生较大的影响。
内存优化
内存优化可以提升吞吐性能。因为整个全量复制的特点是批量加载到内容而且快速写入目标库然后这个数据就被淘汰了。所以整个 JVM 的参数上做一些针对性的配置优化从而降低内存和 CPU 开销提升通道性能。
3.2 低延时
那么 NineData 如何构建低延时呢我们从多个维度考虑低延时特性。
通道性能
在通道性能角度包括一些如 Batch、热点数据的合并等。其中热点数据的合并如果一条记录从 A1 改到 A2再改到 A3一般同步模型是全轨迹修改但开启热点能力后它可能直接合并成终态的 A3 插入语句不会插入 A1 或 update A2通过这种能力直接以终态的数据写入在内存中把这个队列直接合并掉。在通道性能层面还有一些其他设计。例如在 redis 的复制链路中减少队列的序列化代价从而让整个队列的消耗降到最低。
通道管理层设计
通道管理层面对低延迟的整体系统设计也非常重要这是在我们多年的实践中得出的经验。要能够以最小的代价面对同步链路中的各种异常。
a)降低异常情况下重拉的可能。数据库出现延迟但是数据服务端的日志已经被清除作为我们云原生的产品我们会怎么做呢我们会获取源端数据库的接口检查是否存在被上传到 OSS 或者其他对象存储的日志。如果有我们会自动获取并接续上之前的记录从而避免重新进行全量拉取减少延时。 (b) 尽量少地回退数据。我们设计了表级别的安全位点。每张表都会有一个自己最新的位点。如果在回放过程中这张表的位点曾经被使用过我们会将其抛弃以避免位点回退。
c)干净地运维。针对日常的运维操作NineData 复制线程会使队列中的所有数据都提交完成使得 16 个线程到达一个一致的位点然后再关闭进程。通过这种能力我们实现了一个干净的 cleandown用户重新启动后就不会遇到需要回放数据这是非常优雅的方式之一。
3.3 一致性数据同步
数据一致性重要性毋庸置疑这里从数据一致性和 DDL 结构一致性两方面各重点介绍一个 NineData 的设计特性同时 NineData 实现了完善的数据对比功能。 数据一致性
数据本身的一致性问题如何保障事务一致性。举个例子假设我们有 T1 到 T5 这五个事务其中 B1 是订单状态从 B1 创建订单到 B3 可能是用户付款这时会产生一个物流订单 L。如果我们采用正常的行级同步方式订单和物流订单会分别存储在不同的表中由于行级的并发性无法保证它们的顺序性。因此B1 和 L 可能同时出现在目标库中也就是说在创建订单时物流订单也已经被创建了。对于在线业务来说这肯定是违背业务逻辑无法支持在线业务的正常运行。
因此我们构建了一个事务一致性能力用户可以开启事务能力。当用户开启事务能力时我们会检查 T3 这个事务中的每条记录与之前所有事务是否存在依赖关系。如果存在T3 将等待其他事务都提交完毕后再提交确保数据的一致性。因此第一次提交只会提交 T1 到 T4T3 会等待 T2 提交完毕后再提交。这是一种保证数据一致性的同步机制。
DDL 变更同步的一致性
DDL 变更同步的一致性问题具体来说以表结构为例如果我们遇到了表结构的变更一般的解决方法是查看源端的表结构。然而由于数据日志中大部分只有数据和表名缺少结构和类型等信息因此我们需要回查数据源来获取结构信息并拼接出最终的结果。但是很可能在回查时源端已经发生了第二次 DDL导致我们获取到的是已经又被修改过的 DDL从而拼接出的数据不一致和出现错误。
因此我们开发了一种 DDL 解析能力即在 DDL 解析完成后直接在同步线程解析线程中进行重放。同时我们记录每个变更的版本重放的同时生成新版本旧版本不删除。这样任何表在任何时刻都可以随时查到其 Meta 结构而不需要像其他业界实践一样需要从头开始重新回放一遍。
数据对比
在数据对比方面NineData 将其作为一个重要的产品能力进行建设我们认为数据对比对整个数据质量的影响非常重要。因此在结构对比、数据对比以及订正 SQL 生成等方面我们在功能上做得非常全面。其次我们会考虑数据对比对用户的源库和目标库带来的负载。这些负载对于许多生产人员来说非常重要。因此我们制定了许多策略例如仅对不一致的数据进行复检可以控制并发和限流设置抽样比例和条件过滤仅对某一范围内的数据进行比较等等。同时在性能方面我们也做有特色的优化。常规的数据对比会拉出源和目标的所有数据就会耗费大量计算资源和带宽因此我们做了比较优雅的计算下推只对不一致数据进行回表再逐个字段对比。 3.4 可扩展性加速实时数仓构建
在可扩展性方面如何在 NineData 里面支持快速地新增数据源意味着我们需要快速支持结构和数据类型的转换以及快速将通道产品化这些都是我们的目前重要的思考因素。我们的整个设计思路就希望说把原来的各种源到目标的这种 N 乘 M 的这种拓扑方法能够通过 N 加 M 的这种方式来实现。
我们先讲一下数据类型因为数据类型可能会对于最终一致性大家会更加的在意业界无论是在 FiveTran、Airbvte、NIFI、NineData 等方面的开源项目或者还是商用项目中都定义了很多中间类型。今天NineData 也是定义了一些中间类型因为中间类型抽象得越好它的种类就越少这意味着新增的数据源我们需要开发 convert 的工作量就越少。因此如何更好地抽象到更少的样本集里是整体更好的抽象方法。
第二个抓取和写入模块的插件化最大程度复用代码提升产品化效率和稳定性。我们提供了一个叫做关系数据提交框架。该框架把 DDL/DML 的库、表、主键级别冲突等待事务冲突等待热点合并和攒批优化 SQL 都抽象出来使得后面接入的数据源可以天然地具备这些能力。 当前 NineData 已经广泛支持了 MySQL、PostgreSQL、SQLServer、 Redis、MongoDB、Kafka、 ElasticSearch、SelectDB(Doris)等数据库并在其系列上对接了主流的各云厂商产品。这里重点介绍下 SelectDB 和 ClickHouse 我们的特性设计。 结构复制
NineData 支持了 MySQL 所有 DDL 自动同步到 SelectDB包括 Distribute Key 的自适应和 SQL 改写跨库的 create table like SQL 改写等。
数据复制
我们定义了 NineData 中间类型到 SelectDB 数据类型的一一映射实现数据类型以及字符集映射同时对于时间类型支持根据服务端 Global TimeZone 进行跨时区数据迁移。
数据处理
支持在复制过程中筛选同步对象同时进行操作类型过滤如只复制 Insert 不复制 Delete)、基于数据计算进行过滤、数据类型转换。
性能优化
除了复制框架支持的写入合并外NineData 数据复制支持以 Stream 模式进行全量或增量写入在 MySQL-SelectDB(Doris)的测试中云上同 Region 测试 30 个并发可以达到 209MB/S88W RPS单行平均 250B 左右。
NineData 在 ClickHouse 的支持上也做了细致的设计结构映射方面支持用户选择 CollapsingMergeTree 或 ReplacingMergeTree 进行复制支持了 ClickHouse 各数据类型的映射包括默认值差异的处理。在性能方面类似于 Airbyte 的做法会将所有增量数据合成一个文件因为 ClickHouse 引擎中的许多增删改都是变成直接增加因此这种方式相对简单。但这种方式会带来较大的延迟。因此在实现过程中我们考虑使用 SQL 的方式进行提交来了多少条就立即转集批提交可以动态地控制例如超过 1000 条或 0.5 秒可以几百毫秒就提交。此外ClickHouse 的 Jdbc 在解析每条语句时性能较差因此我们进行了一些优化采用批量提交的方式来提高性能。
3.5 高可用机制
节点容灾
NineData 所有组件采用高可用架构规避单点风险。任务节点跑在分布式容器集群上容灾系统自动检测异常任务、异常节点并自动完成任务跨机漂移容灾。
任务鲁棒性
通过动态内存管理结合动态分片、动态攒批、流式读写、弹性扩缩容等技术提升链路对负载的自适应能力有效保障任务稳定性。
断点续传
所有模块支持定期位点记录包括结构复制、全量复制、增量复制、数据对比任意任务或服务节点异常会基于断点重启任务。通过完善的重试、干预手段提升劣网、数据高负载、硬件异常等场景下链路的健壮性。
3.6 可观测可干预能力
可观测性
1复制系统针对每个链路有有秒级日志打点可以查看秒级 RPS累计 DDL/DML 操作数队列堆积数等指标查看任务各模块状态。
2实时查看提交线程状态。例如如果有 16 个线程正在运行我们会显示这 16 个线程分别在执行哪条 SQL或者任务是否被 DDL 卡住等信息。可以通过类似于 MySQL Processlist 的方式查看每个线程正在执行哪些操作已经执行了多长时间等信息。在同步过程中用户可能会在目标端、新的写入等可能会遇到一些问题导致这个两边写数据冲突等。因此我们在可观测性方面不仅会将基本状态完全透露给用户还会提供每个线程提交的语句。
可干预能力
1修改同步对象对于长期复制任务用户可能因为业务变化需要添加新的对象到同步链路中可以在界面上直接添加后台会创建新对象的结构初始化、全量和增量并在追上后合并同步对象到现有链路中。
2成熟的异常处理能力。对于异常任务NineData 会显示具体的报错信息用户可以进行 SQL 级别的语句订正和重试或者跳过从而在少量目标双写或结构不一致情况下依然可以快速修复任务保障目标数据的及时性和正确性。 3.6 能力数据复制小结
NineData 数据复制的设计目标是 Any Where、Any Data、AnyTime 的服务客户的数据流动场景。当前主流数据源以及比较完整兼容适配了各种复杂的网络环境深度适配 VPN、专线、堡垒机、云厂商 VPC 和私网访问等方案可以通过 SaaS 服务或专属集群方式服务客户保障数据安全和复制稳定
04 典型用户案例
4.1 国资云客户
某大型国资云数据复制客户全国有 30Region本身有很多数据需要同步同时还要提供数据复制产品给他的客户使用比如该云的客户从其他云厂商或自建系统中迁移上云。包括很多复杂的应用场景如迁移上云、跨云迁移、跨区域迁移、数据容灾、异地多活等业务场景。也面临非常复杂的网络环境Region 内部/Region 之间和其他云厂商与客户自有系统之间等各种链路。客户在考察了市面上主流云厂商、数据复制专门厂商的方案后选择了 NineData。 4.2 跨境电商企业
某跨境电商企业通过 NineData 实现实时数仓指导运营分析决策。客户的分析和运营活动基于 ClickHouse。MySQL 生产是分散在世界各地比如日本、韩国等他将各个地方的在线数据汇聚到国内的 ClickHouse 进行统一分析和运营决策。在这个过程中他使用了我们的 NineData 复制产品NineData 在跨地域的复制方面是具备一些优势。我们的解析模块、读取模块和写入模块可以异地部署解析模块能够靠近用户的源端写入端能够靠近用户的目的端从而实现了整个性能的更加优化。 4.3 大型地产企业
某大型地产企业使用 NineData 实现统一数据管理。该企业拥有大量的数据库但其开发流程涉及许多合作伙伴例如 ISV 或第三方软件开发提供商。因此他们需要将数据源的权限控制委托给这些合作伙伴。在以往的人工管理过程中权限管理变得非常复杂且流程繁琐难以统一管理。为此NineData 提供了一个统一管理数据源的解决方案。通过该方案统一纳管了企业的所有数据源开发人员的账户初始化、权限申请以及数据开发流程的可视化等均得到了优化从而大大提升了开发效率和协同效率。 最后NineData 已经和数据源、云厂商产生了很多密切的合作关系并且取得云服务、信息安全管理、质量管理等多项认证在多个行业的头部企业中广泛应用。NineData 致力于为客户提供更加稳定、更智能的数据库服务帮助客户快速构建统一的数据管理让每个人用好数据和云欢迎大家体验使用。 NineData 是新一代的云原生智能数据管理平台包含了数据复制、SQL 开发、数据备份以及数据对比等多种功能。NineData 采用领先的云原生与 AIGC 技术为云与 AI 时代的架构设计提供了智能数据管理平台。作为业界首个支持跨云和本地 IDC 无缝打通的平台能够帮助客户轻松完成数据上云、跨云数据实时传输、ETL、数据备份、企业级智能 SQL 开发、数据库研发规范、生产变更以及敏感数据管理等功能从而让客户的数据使用更加安全高效。