摘要:企业信息化过程形成了大量的数据孤岛,这些并不连通的数据孤岛是企业数字化转型的巨大挑战。Tapdata Real Time DaaS 采用的CDC模式,具有巨大的优势,同时是一个有技术壁垒的活。当然,我们应对数据挑战的方式不止于此。

关键词:Tapdata,DaaS,实时数据同步,数据孤岛,CDC模式

(这部分放在文章的摘要和关键词那里)

 
随着信息化的日渐成熟,企业构建的相对孤立的数据系统也逐渐增多,从数十到数百,在大中型企业已经比比皆是。在这种情况下,想要使用企业的一些关键数据来做一些新业务,无论是可视化运营面板,还是建立一个新的CRM,都面临着企业数据难以获取的难题。
 
Tapdata 就致力于解决企业日趋严重的数据孤岛问题。我们的愿景是让这些企业可以像自来水(Tap Water)一样简单的使用数据。
 
那我们如何实现简单使用数据呢?

Tapdata DaaS 架构

类似与 IaaS,PaaS 或者 SaaS,Tapdata 给你提供一个 DaaS (Data as a Service),把你想要的数据作为一个服务提供出来。Tapdata 将企业各个业务系统的数据汇总到一个中央化平台,经过低代码方式治理以后,形成可复用的企业数据资产,通过无代码数据接口方式提供给业务使用方。

那 Tapdata 和其他数据平台的核心区别点和创新点是什么呢?Tapdata 做的是一个实时同步+实时处理+实时服务三位一体的全链路实时数据处理及服务平台。在Tapdata,我们坚信,实时的数据,才更有价值(查看Tapdata 产品理念)。

 
 

举个栗子:保险公司如何解决数据孤岛问题?

想象一下你在一家保险公司做研发。这家保险公司有若干套业务系统,寿险,财产险,特殊险等等。因历史原因系统是由不同业务部门分别建设的,所以各个业务系统都在各自管理自己业务的客户和保单数据。领导说为了提高客户体验,希望做一个微信小程序来让公司的客户可以通过小程序端来管理他们的所有保单,包括基本信息维护,保单一览表,保单付费管理等功能。基本的诉求就是要能够在一个地方看到不同保险业务系统的数据。为了做到这一点,你需要一个聚合表CombinedPolicyTable,需要将来自Life, Property 和 Specialty系统内的保单数据全部集中放到一个中央的表里,然后让小程序来访问。
 
 
 
如何将不同业务系统的数据抽取到合并的CombinedPolicyTable?
方法有不少。
 

脚本方式

数据库导出脚本,ETL工具,自己写个SQL脚本。
 
 
 
通常这种脚本或者ETL都是定期执行的,比如说每天晚上会去各个业务系统库里运行这条命令:
SELECT * FROM POLICY;
将每个业务库的全量结果取出来写到CombinedPolicyTable里。
 
上面主流的模式香不香?
不香。
为什么?
其一,如果源库数据量大的话,这个是非常消耗资源的。每天晚上要对全量数据读一遍(源库),写一遍(目标库),哪怕白天只有100个保单更新。
其二,数据不及时。想象下如果小明同学在寿险系统里交了保费,但是要到第二天他才能在小程序中看到更新的状态(已支付),这个体验不连贯。
 
有没有体验好一点,源库的数据可以更加及时一点的方式?有。
 

双写方案

找业务同学改下代码,来个双写方案呗!当用户在源业务系统提交一个更新,先写原业务系统的表,紧接着把数据写到聚合表。
 
 
 
这种方式无疑是可以做到第一时间就把业务库的数据更新写入到目标表,然后给小程序提供最及时最新的客户及保单数据。
但也让人头疼:你要找原来的业务团队更新原有业务代码,并且这种方案对源系统有很大的侵入性。对于老大关注的顶级项目,没问题可以调动资源。但是如果类似的需求多了,就会出现不可管理,风险极高的后果。
有什么更好的解决方案呢?
 
认识更好的方案:Tapdata Real Time DaaS
Tapdata 的 Real Time DaaS 架构可以比较理想的解决上述问题。
 

CDC模式

从本质上,Tapdata的第一步就是将批量、滞后的ETL换成了CDC方式。
 
 
 
 

CDC模式的优势

 
CDC模式的优势很明显:
  1. 对源库性能影响小。取决于实现方式,有可能在单独读取日志文件,对源库主进程无影响。
  2. 只需要读取、处理数据库的变更事件(增删改),所需要资源消耗远小于全量跑批需要的资源
  3. 最重要的是,从事务在源端提交开始到更新写入同步的目标库,延迟可以小于1秒。这种准实时数据复制可以解锁大量对实时性要求较高的业务场景。
 
CDC 同步是一个有技术壁垒的活:
  • 缺乏标准。大部分数据库都会提供标准的访问操作接口,如SQL。但是WAL日志属于各家内部实现,99.99%的程序员也不需要了解这个机制。
  • 分布式下处理复杂。新一点的数据库都是分布式,如何在集群存在多个写节点的情况下保证WAL日志的顺序一致性和事务性?
  • 日志的格式都会比较复杂,特别是涉及到事务提交及回滚的情况。
 

应对数据挑战不止于此

这听上去就是一个数据库实时同步的工作,那我是不是找一个同步工具就可以了呢?非也非也。
确实到目前为止,我们只是把需要的数据从源库里面无侵入,准实时的抽取了出来。这个也是Tapdata 数据平台的第一个核心部分:实时数据同步。 数据抽出来后,接下来的工作还包括:
  • 如果数据来自多个库,往往需要对这些数据进行合并;
  • 如果数据来自一个很老很复杂的关系型设计,往往需要对不太容易理解的表结构进行重构,组成新的模型;
  • 如果数据来自一个主表(比如Policy),但是我们希望借这个动作,把Policy里面的客户信息也补齐进去。
这就涉及到一些实时的数据处理技术。欢迎继续关注 Tapdata 实时数据平台的第二环节:实时流数据处理。下期见!

本文作者:TJ 唐建法

 
2010-2019年 TJ 先后任职联邦快递首席架构师和MongoDB大中华区首席架构师,2019年至今于深圳创立Tapdata 并获千万美元融资。TJ 是具有丰富海内外工作经验的大数据领域专家,获得了阿里云 MVP、 腾讯云 TVP、极客时间 MongoDB 高手课金牌讲师等荣誉,创建了全球最大的MongoDB 技术社区,并引领国内实时数据服务技术发展。
 
也许你还想了解:
 
-------------------------
招人小广告:我们现在迫切需要更多的工程师来加入我们一起,把 Tapdata 打造成一个世界级的实时数据处理平台,欢迎各位朋友一起过来撸代码,冲浪和定义平台未来。
 
我们亟需这些岗位的朋友加入我们:研发Leader,Java 中间件研发工程师,测试Leader,产品经理/总监,MongoDB数据库研发工程师,MongoDB 高级DBA,Oracle 高级DBA 查看详细岗位介绍
 
原文地址:http://tapdata.net/tapdata-real-time-daas-technical-details-1.html

Tapdata Real Time DaaS 技术详解 PART I :实时数据同步的更多相关文章

  1. 《Windows驱动开发技术详解》之IRP的同步

    应用程序对设备的同步异步操作: 大部分IRP都是由应用程序的Win32 API函数发起的.这些Win32 API本身就支持同步和异步操作.例如,ReadFile.WriteFile和DeviceIoC ...

  2. 《Windows驱动开发技术详解》之驱动程序的同步处理

    中断请求级 中断请求被分为软件中断和硬件中断两种,这些中断都映射成不同级别的中断请求级.每个中断请求都有各自的优先级别,正在运行的线程随时都可以被中断打断,进入到中断处理程序.优先级高的中断来临时,处 ...

  3. Oracle Job定时任务详解、跨数据库数据同步

    业务需求,需要与A公司做数据对接,我们公司用的Oracle,A公司用的SQL Server数据库,如何跨数据库建立连接呢?这里使用的是DBLink,不会配置的请看我的另外一篇博客:https://ww ...

  4. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  5. 「视频直播技术详解」系列之七:直播云 SDK 性能测试模型

    ​关于直播的技术文章不少,成体系的不多.我们将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面.深入地了解视频直播技术,更好地技术选型. 本系列文章大纲如下: ...

  6. 手游录屏直播技术详解 | 直播 SDK 性能优化实践

    在上期<直播推流端弱网优化策略 >中,我们介绍了直播推流端是如何优化的.本期,将介绍手游直播中录屏的实现方式. 直播经过一年左右的快速发展,衍生出越来越丰富的业务形式,也覆盖越来越广的应用 ...

  7. 《CDN技术详解》 - CDN知多少?

    开发时间久了,就会接触到性能和并发方面的问题,如果说,在自己还是菜鸟的时候完全不用理会这种问题或者说有其他的高手去处理这类问题,那么,随着经验的丰富起来,自己必须要独立去处理了.或者,知道思路也行,毕 ...

  8. Comet技术详解:基于HTTP长连接的Web端实时通信技术

    前言 一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Ser ...

  9. SSE技术详解:一种全新的HTML5服务器推送事件技术

    前言 一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Ser ...

随机推荐

  1. Ansible Notes: Tower Credential的本质

    Ansible AWX/Tower credential 的本质 Ansible Tower (社区版本叫AWX)用credential这个资源来对象来存储playbook运行过程中用到的机密信息.比 ...

  2. Ubuntu 系统安装,VMware

    系统版本   ubuntu-18.04.5-server-amd64.iso 1.自定义安装 2.默认下一步 3. 稍后安装操作系统 4.选择ubuntu 64位 5.选额安装的目录 6.设置虚拟机c ...

  3. Mysql数据库基础_复习思维导图

    Mysql复习的一个小总结,用xmind写的.(字数没有都不给我发博客) 下面是一些备注 子查询 MySQL子查询称为内部查询,而包含子查询的查询称为外部查询. 子查询可以在使用表达式的任何地方使用, ...

  4. Mybatis-Plus入门实践

    简介 Mybatis-Plus 简称 MP ,是 Mybatis 的增强工具,提供了一批开箱即用的功能.特性.接口.注解,简化了应用程序访问数据库的相关操作,完善了Mybatis作为ORM仅能做到半自 ...

  5. java_简单学习笔记

    java_study笔记 前言: 所有笔记均总结自狂神的java基础视频 https://www.bilibili.com/video/BV12J41137hu?p=1 idea小技巧 psvm+回车 ...

  6. 【WPF】WPF开发用户控件、用户控件属性依赖DependencyProperty实现双向绑定、以及自定义实现Command双向绑定功能演示

    前言: Wpf开发过程中,最经常使用的功能之一,就是用户控件(UserControl)了.用户控件可以用于开发用户自己的控件进行使用,甚至可以用于打造一套属于自己的UI框架.依赖属性(Dependen ...

  7. drools动态增加、修改、删除规则

    目录 1.背景 2.前置知识 1.如何动态构建出一个kmodule.xml文件 2.kmodule.xml应该被谁加载 3.我们drl规则内容如何加载 4.动态构建KieContainer 3.需求 ...

  8. 关于TornadoFx和Android的全局配置工具类封装实现及思路解析

    原文地址: 关于TornadoFx和Android的全局配置工具类封装实现及思路解析 - Stars-One的杂货小窝 目前个人开发软件存在设置页面,可以让用户自定义些设置,但我发现,存储数据的代码逻 ...

  9. 《Unix 网络编程》08:基本UDP套接字编程

    基本UDP套接字编程 系列文章导航:<Unix 网络编程>笔记 UDP 概述 流程图 recvfrom 和 sendto #include <sys/socket.h> ssi ...

  10. 图的连通性--Tarjan算法

    一些概念 无向图: 连通图:在无向图中,任意两点都直接或间接连通,则称该图为连通图.(或者说:任意两点之间都存在可到达的路径) 连通分量: G的 最大连通子图 称为G的连通分量. 有向图 (ps.区别 ...