PostgreSQL到Doris的迁移技巧:实时数据同步新选择!

PostgreSQL可以说是目前比较抢手的关系型数据库了,除了兼具多样功能和强大性能之外,还具备非常优秀的可扩展性,更重要的是它还开源,能火不是没有理由的。

虽然PostgreSQL很强大,但是它也有短板,相对于专业的数据分析产品,大致上有下面几点不足:

  • PostgreSQL本身不太适合用于实时数据分析,尽管PostgreSQL具备扩展能力以支持相应能力,但是在处理大量实时数据时性能可能不会非常理想。
  • 作为一个业务系统,PostgreSQL中历史数据的堆积会严重影响数据库的性能,同时大幅增加存储成本,也是一个不得不解决的问题。

而 Doris 就是一个专业的数据分析产品,它是一个实时数仓,海量数据下以亚秒级的速度返回查询结果,同时支持高并发点查询以及高吞吐复杂分析场景,非常适用于实时数据的分析与查询。

因此,我们可以选择Doris搭配PostgreSQL使用,这样就可以相对完美地弥补PostgreSQL的短板。

太棒了~ 目标定下了,那么问题来了...

如何将PostgreSQL的数据实时同步到Doris?

众所周知,在两个毫不相干的数据管理系统之间进行数据同步,特别是实时同步,其复杂程度足以让高级DBA脑瓜疼。因为有几个不得不解决的问题:

表的初始化:在同步数据之前,需要手动在Doris端创建和源端一致的表结构,然后才能从源端接收数据。当源端有大量表且表结构很复杂的情况下,是不是想亖的心都有?

数据结构的映射:两者数据结构不同,怎么确保数据从源端同步过来后的完整性?除非你对两者的数据模型的理解非常极致,且保证绝对不出错,才能达到理想的结果。

实时同步的速率:通过Doris进行数据实时分析的大前提是,当前Doris中的数据必须是最新的,即和源端的PostgreSQL完全一致,分析结果才有意义。要保证这一点,可不是一个轻松的工作。

源端DDL语句的联动:最痛的一个点,如何保证源端的数据结构发生变化时,同步链路不中断?那就需要实时捕获源端PostgreSQL的DDL变更,并及时在目标端的Doris中同步执行。

这些问题如果可以顺利解决,那实时同步工作将会相当丝滑。那么如何解决呢?方法自然是有的,而且丝毫不费力。对于上述 4 个问题,NineData有绝对的发言权,我们先来看看它的特性:

结构复制:基于目标端数据源的特性,自动高效地完成表的创建、数据结构的映射等工作。

复制性能:基于动态攒批、并行复制、Stream Load等技术,复制性能轻松达到200MB/S。

DDL捕获与执行:实时检测源端中的DDL操作,并同步在目标端中执行,保证其他业务变更能够稳定地进行。

轻松解决且非常愉快,下面来看看怎么操作。

步骤一:录入源和目标数据源

登录 NineData 控制台,单击数据源管理>数据源,然后在页面中单击创建数据源,选择需要录入的数据源。

根据页面提示进行配置,然后单击创建数据源完成创建。

步骤二:配置同步链路

登录NineData控制台,单击数据复制>数据复制,然后单击创建复制。

根据页面提示配置复制任务,由于我们想要实现长期的实时数据同步,需要在复制类型处额外勾选增量复制。

配置完成后启动任务,针对您配置的所有同步对象,NineData会先对所有的存量数据进行全量迁移,接下来就是实时同步PostgreSQL中新增的增量数据,所有新写入的数据都将一条不漏地同步到Doris,每当目标端的增量数据追平源端时,任务面板中会显示延迟 0 秒,如下图所示。

步骤三(可选):校验目标端同步数据的完整性

除了同步功能以外,NineData 还提供了同步后源端和目标端同步数据的对比功能,以确保目标端数据的完整性。

登录NineData控制台,单击数据复制>数据复制,然后单击步骤二中创建的复制任务 ID。

单击数据对比页签,并单击开启数据对比(如果步骤二的任务配置中已勾选开启数据一致性对比,则此处直接展示对比结果)。

提示

开启后,系统将自动对比源端和目标端的同步对象,并给出对比结果。

您可以在一段时间后,单击页面中的重新对比,校验最新增量数据的同步结果。

步骤四(可选):配置任务异常告警

由于是长期任务,您可能需要系统实时监控任务状态,在任务有异常时即刻通知您。

登录NineData控制台,单击数据复制>数据复制,然后单击步骤二中创建的复制任务 ID。

单击右上角的配置告警。

输入策略名称,单击保存配置即可。您可以直接使用内置的默认规则,在任务运行失败,或复制延迟大于等于 10 分钟的时候,发送短信提醒您。您也可以自定义创建规则,根据您的需求来进行通知。

总结

至此,您已经得到了一条长期稳定的 PostgreSQL 到 Doris 的实时同步链路,对于需要使用 Doris 实时分析业务数据的用户来说,这样的链路不可或缺。同时,在把存量的旧数据同步至 Doris 后,就可以在 PostgreSQL 端进行旧数据清理,空出存储空间,特别是对于使用云上资源的企业来说,云资源是较为昂贵的,这样做可以极大程度上降低存储成本,转而投入到更为重要的业务中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/293426.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Netty实现文件服务器

1.文件上传下载的常用方法 文件上传下载是一种非常常见的功能,特别是在web服务网站。 常用的文件上传下载协议有以下几种: FTP(File Transfer Protocol):是一种用于在计算机间传输文件的标准网络协议。它使用客户端-服务器架构…

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记12:DAC数模转换

系列文章目录 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记01:赛事介绍与硬件平台 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记02:开发环境安装 嵌入式|蓝桥杯STM32G431(…

2024年天津体育学院退役大学生士兵专升本专业考试报名安排

天津体育学院2024年退役大学生士兵免试专升本招生专业考试报名安排 一、报名安排 1.报名对象:免于参加天津市文化考试的退役大学生士兵(已参加天津市统一报名且资格审核通过) 2.报名时间:2024年4月4日9:00-4月5日17…

Stream流 --java学习笔记

什么是Stream? 也叫Stream流,是|dk8开始新增的一套APl(java.util.stream.*),可以用于操作集合或者数组的数据。优势:Stream流大量的结合了Lambda的语法风格来编程,提供了一种更加强大,更加简单的方式操作集合或者数组中的数据&a…

1.10 类、方法、封装、继承、多态、装饰器

一、介绍类 类(class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例 实例化:创建一个类的实例,类的具体对象。 对象:通过类定义的数据结构实例。对象包括两个数据成员&#x…

windows安全中心设置@WindowsDefender@windows安全中心常用开关

文章目录 abstractwindows defender相关服务👺 停用windows Defender临时关闭实时防护使用软件工具关闭defender control(慎用)dismdControl 其他方法使其他杀毒软件注册表修改 保护历史恢复被认为是有病毒的文件添加信任目录,文件,文件类型或进程 abstract window…

算法学习——LeetCode力扣动态规划篇4(377. 组合总和 Ⅳ、322. 零钱兑换、279. 完全平方数、139. 单词拆分)

算法学习——LeetCode力扣动态规划篇4 377. 组合总和 Ⅳ 377. 组合总和 Ⅳ - 力扣(LeetCode) 描述 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保…

2、Cocos Creator 下载安装

Cocos Creator 从 v2.3.2 开始接入了全新的 Dashboard 系统,能够同时对多版本引擎和项目进行统一升级和管理!Cocos Dashboard 将做为 Creator 各引擎统一的下载器和启动入口,方便升级和管理多个版本的 Creator。还集成了统一的项目管理及创建…

pytorch反向传播算法

目录 1. 链式法则复习2. 多输出感知机3. 多层感知机4. 多层感知机梯度推导5. 反向传播的总结 1. 链式法则复习 2. 多输出感知机 3. 多层感知机 如图: 4. 多层感知机梯度推导 简化式子把( O k O_k Ok​ - t k t_k tk​) O k O_k Ok​(1 - O k O_k Ok​)起个别名…

Python(django)之单一接口展示功能前端开发

1、代码 建立apis_manage.html 代码如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>测试平台</title> </head> <body role"document"> <nav c…

谈谈 MySQL 的锁

前言 在MySQL中&#xff0c;锁这个定义其实还是蛮重要的。经过我这几天的学习&#xff0c;我感觉锁是一个可以说难又可以说不难的知识点。难就难在锁可以与事务、多线程、并发结合在一起&#xff0c;这就很难了。但是&#xff0c;假如锁没有结合这些知识点&#xff0c;就单单一…

webpack搭建开发环境

webpack搭建开发环境 一.webpack开发模式二.webpack打包模式三.webpack打包模式应用四.Webpack 前端注入环境变量五.Webpack 开发环境调错 source map六. Webpack 设置解析别名路径七.优化-CDN的使用八.多页面打包九.优化-分割公共代码一.webpack开发模式 作用:启动 Web 服务…

六、Django开发

六、Django开发 1.新建项目2.创建app2.1 第一种方法&#xff1a;2.2 利用pycharm中tools工具直接创建app 3.设计表结构&#xff08;django&#xff09;4.在MySQL中生成表5.静态文件管理6.部门管理6.1 部门列表 7.模板的继承8.用户管理8.1初识Form1.views.py2.user_add.html 8.2…

leetcode131分割回文串

递归树 下面这个代码是遍历处所有的子串 #include <bits/stdc.h> using namespace std; class Solution { public:vector<vector<string>> vvs;vector<string> vs;vector<vector<string>> partition(string s) {dfs(0,s);return vvs;}vo…

笔记本电脑上部署LLaMA-2中文模型

尝试在macbook上部署LLaMA-2的中文模型的详细过程。 &#xff08;1&#xff09;环境准备 MacBook Pro(M2 Max/32G); VMware Fusion Player 版本 13.5.1 (23298085); Ubuntu 22.04.2 LTS; 给linux虚拟机分配8*core CPU 16G RAM。 我这里用的是16bit的量化模型&#xff0c;…

是德科技KEYSIGHT N5234B网络分析仪

181/2461/8938产品概述&#xff1a; 描述 主要特性和功能 对无源元件和简单有源器件进行基本分析在成本敏感型应用中以高达43.5 GHz的高精度测量S参数获得全球最佳的微波制造性价比为信号完整性测量和材料表征配置经济的解决方案使用多点触控显示屏和直观的用户界面加快对组…

librdkafka的简单使用

文章目录 摘要kafka是什么安装环境librdkafka的简单使用生产者消费者 摘要 本文是Getting Started with Apache Kafka and C/C的中文版&#xff0c; kafka的hello world程序。 本文完整代码见仓库&#xff0c;这里只列出producer/consumer的代码 kafka是什么 本节来源&#…

踏入网页抓取的旅程:使用 grequests 构建 Go 视频下载器

引言 在当今数字化的世界中&#xff0c;网页抓取技术变得越来越重要。无论是获取数据、分析信息&#xff0c;还是构建自定义应用程序&#xff0c;我们都需要从互联网上抓取数据。本文将介绍如何使用 Go 编程语言和 grequests 库来构建一个简单的 Bilibili 视频下载器&#xff…

UE4_碰撞_碰撞蓝图节点——Line Trace For Objects(对象的线条检测)

一、Line Trace For Objects&#xff08;对象的线条检测&#xff09;&#xff1a;沿给定线条执行碰撞检测并返回遭遇的首个命中&#xff0c;这只会找到由Object types指定类型的对象。注意他与Line Trace By Channel(由通道检测线条&#xff09;的区别&#xff0c;一个通过Obje…

AI如何影响装饰器模式与组合模式的选择与应用

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL应用》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 &#x1f680; 转载自热榜文章&#xff1a;设计模式深度解析&#xff1a;AI如何影响…