七分钟,数据转换器get到了

news2024/11/24 16:07:32

0fa34c432ee37899ce294236cc0ad936.gif

全文阅读时间 | 预计七分钟

KING BASE

开源 OR 闭源?

在瞬息多变的软件市场上,开源还是闭源是一个恒久不变的话题。开源软件得益于基础架构和基本功能的全面开放,开发者能自由使用和二次开发,但使用前提是需要投入大量成本对软件进行学习,后续维护也需要投入一定的精力。

反之,闭源软件依靠于开发厂商,在软件的稳定性上优于开源软件,也正是因为闭源的原因,当软件出现错误时,客户需要联系厂商进行问题定位和修复,对效率就会产生负面影响,严重时甚至会阻塞项目流程。

半开半闭的软件使用形态

4191d61b27c7a9b4e32254fa977fc7ed.gif

KFS提供了一种半开半闭的软件使用形态:对外不开放自己的基础架构和基础功能,但对一些核心功能的扩展提供了开放接口,客户或者开发者可利用这些接口进行二次开发以适配自己的项目或者一些特殊场景,极大提高了KFS软件的易用性和可维护性。

KING BASE

KFS开放能力

数据转换器

01

KFS运行架构

KFS的主要角色分为源端和目标端,其中源端连接源数据库,通过实时采集数据库的日志信息并解析处理,统一成以KUFL数据存储格式的物理文件。目标端通过网络连接到源端,不断获取由源端产生的KUFL文件,解析以后由目标端连接目标数据库,以遵循事务完整性的原则将数据写入到目标数据库中。而转换器可配置在采集阶段或者应用阶段,以适应不同的数据转换处理场景。

d010e0d8c14eaeef5380e51d60f98fd5.png

02

数据转换器

KFS的数据转换器主要用于对同步数据的处理,可以对数据进行转换、映射、计算、过滤等操作。KFS支持两种过滤器的扩展方式,第一种为原生Java,第二种为JavaScript脚本。本文主要介绍基于JavaScript脚本的扩展方式。

KFS目前支持的数据转换器 ●●

1.replaceStatementFilter,DDL语句替换转换器;

2.dropcolumnFilter,列过滤转换器;

3.dataMarkFilter,数据标记转换器;

4.还有诸如dropStatementData(DDL过滤转换器),replicate(表数据转换器),skipeventbyvalue(值数据转换器)等不同需求环境的转换器。

数据转换器的出现,可以大大拓宽KFS的使用场景,比如:

1.使用replaceStatementFilter来进行异构数据库之间DDL语句涉及语法内容的转换;

2.使用dropcolumnFilter来进行某个表过滤指定列,主要用于过滤数据汇集时一些没有业务需求的列;

3.使用dataMarkFilter来进行增删改数据的操作标记和操作时间标记,主要用于一些需要对数据变更进行操作记录的场景。

KFS转换器具体接口及功能

0866bdab6352a4507dcda0b169fd3a76.png

KING BASE

手把手教你

做一个KFS数据转换器

使用场景

在数据汇集的场景,多个源端服务传输的数据中,可能有大部分的数据是冗余或无用的,但是冗余的数据有一定的规律(例如:冗余数据是以0000开头)。如果这些数据也一起同步到了目标端,在目标端数据入库时会挤占正常数据入库所需要的资源。基于这种情况,设计一个转换器插件对这些冗余数据进行处理就很有必要。

插件设计和示例

1

给插件命名

uselessDataFilter

2

设计和开发

入参

fe060eae8e6215b9e04b1e668adcb3d2.png

该参数的设计是基于使用场景中所提到的需求:需要转换具有一定规律的冗余数据。

代码逻辑

准备

08129f142bb587335f9a08a1870f1bcc.png

此处主要是获取参数的值,该值由用户在配置文件中所定义。

匹配 

277fb2613af855e612cb03faf13e4a54.png

此处的实现主要是基于使用场景中的描述:冗余数据以0000开头,因此对于相关数据的匹配就调用startwith()方法,进行开头数据的匹配。当匹配成功时,就需要将匹配的冗余数据从转换的数据集中删去。

清理

该转换器不涉及系统资源的调用,因此不需要释放相关的资源。

上述逻辑具体需要实现在名为uselessdata.js的文件中,具体实现如下:

f929b8f854b6d3f6c895c575d7568181.png

3

导入KFS

Js文件导入

296683aed1e39537af5bef3c15e27971.png

将编写好的转换器uselessdata.js文件,移动到下述目录中。

配置文件编写      

在安装目录的flysync-replicator/samples/conf/filters/default中新建一个  以新增转换器名称小写的以.tpl为后缀的文件。

de442ce93079e0b148ee3baaf39d01e8.png

在目标端flysync.ini文件中添加如下参数

c56362fbc03cc639d6c68e724f93535a.png

重新安装部署

进入安装目录中tool下,执行./fspm install

KING BASE

效果展示

测试模型

硬件环境:

内存大小:8G

硬盘大小:180G

操作系统:CentOs7-x86_64

表结构展示

650612252bd738fdeef21cf368bf088a.png

每张表各插入一万条数据。

业务模型

五张业务表中,每张表有三列数据,其中冗余数据随机出现在不同表的不同列中,且冗余数据所占比例为50%。单表数据量为1万条。

c24197defdc7bbda9cb4f6199782418c.png

说明

在此基础上可以增加更多的判断规则及有关的判断功能选择。此处根据场景将转换的匹配功能固定为判断开头的数据是否等于自定义的数据,如果等于就进行转换。除此而外,还可以添加是否包含数据,是否以数据的末尾进行判断,是否等于某些数据等功能,不同功能可以添加额外添加功能选择参数(例如:replicator.filter.uselessdata.type)去控制在匹配数据是所生效的匹配功能。

KING BASE

快速实操上手

上述“保姆级”教程你get到了嘛?那针对以下实验场景快来实操,练练手吧。

实验场景一

A客户现在需要将其源数据库中的数据同步到指定的目标数据库中,源数据库中存在一个时间列,A客户仅想同步某个时间段内的数据。

实验场景二

B客户需要进行数据汇集,将4个源数据库的数据同步到1个目标数据库中,每个源数据库不定期会产生一些固定的DDL语句,这些语句不用在目标端执行,在同步时需要把这些DDL的信息过滤掉。

实验场景三

C客户场景为月度工资分发,需要从总部数据库中将不同子公司员工的薪资信息同步到每个子公司的数据库中,但是总公司所记录的薪资信息会有不同的类型(即多列记录薪资结构),需要将多列的薪资数据进行计算后再同步到子公司数据库中。

d7b17f1605477ff6194e5d4e4b2f3604.png供稿:产品研发中心

编辑:王堇

审核:日尧

436388aac7c8b111c0e958b9bf296316.gif

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

centos 7.9系统安装向日葵

1.下载地址 向日葵远程控制app官方下载 - 贝锐向日葵官网 2.下载依赖 yum install -y libappindicator-gtk3 安装好依赖之后,然后再安装向日葵软件 3.安装软件 sudo rpm -ivh 文件名.rpm 4.安装成功之后的位置

【Android Framework系列】第16章 存储访问框架 (SAF)

1 概述 Android 4.4(API 级别 19)引入了存储访问框架 (Storage Access Framework)。SAF让用户能够在其所有首选文档存储提供程序中方便地浏览并打开文档、图像以及其他文件。 用户可以通过易用的标准 UI,以统一方式在所有应用和提供程序中浏…

【神印王座】龙皓晨竟然上了头版头条!内容违背,新闻真实性原则

Hello,小伙伴们,我是小郑继续为大家深度解析神印王座国漫。 大家有没有发现,当龙皓晨他们从驱魔关回到圣城时,有这么一幕,一个卖报小孩边走边说:驱魔关大捷,少年英雄龙皓晨操控守护与怜悯之神印王座&#x…

使用Pugixml库,轻松处理XML文件

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C-CSDN博客 目录 1.介绍 2.Pugixml库 3.配置Visual Studio开发环境 4.节点 5.常见的节点类型 6.命名空间pugi 7.xml_document装载整个XML文档结构 8.xml_node文…

WeCanStudio工具套件介绍

直接上视频,在超燃的《天马座幻想》的背景音乐下,再次了解一下该工具套件吧。 WeCanStudio开发套件介绍

setrlimit限制进程的cpu使用时间

linux可以用setrlimit进行资源限制&#xff0c;今天说的是setrlimit限制进程的cpu使用时间 代码如下&#xff1a; #include <sys/time.h> #include <sys/resource.h> #include <unistd.h>int main() {struct rlimit rlim;rlim.rlim_cur 10;rlim.rlim_max …

星际争霸之小霸王之小蜜蜂(十四)--资本家的眼泪

系列文章目录 星际争霸之小霸王之小蜜蜂&#xff08;十三&#xff09;--接着奏乐接着舞 星际争霸之小霸王之小蜜蜂&#xff08;十二&#xff09;--猫有九条命 星际争霸之小霸王之小蜜蜂&#xff08;十一&#xff09;--杀杀杀 星际争霸之小霸王之小蜜蜂&#xff08;十&#xf…

stm32无人机-飞行力学原理

惯性导航&#xff0c;是一种无源导航&#xff0c;不需要向外部辐射或接收信号源&#xff0c;就能自主进行确定自己在什么地方的一种导航方法。 惯性导航主要由惯性器件计算实现&#xff0c;惯性器件包括陀螺仪和加速度计。一般来说&#xff0c;惯性器件与导航物体固连&#xf…

阿里云2核2G服务器e系列租用优惠价格182元性能测评

阿里云服务器经济型e实例2核2G配置优惠价格182.04元一年&#xff0c;系统盘ESSD Entry盘20GB起&#xff0c;公网带宽默认按使用流量&#xff0c;也可以选择按固定带宽计费&#xff0c;带宽值从1M到100M可选&#xff0c;阿腾云分享阿里云服务器2核2G优惠价格、详细配置及e系列CP…

异常记录-VS

1.文件加载失败 无法找到指定路径 Frame GUID: a6c744a8-0e4a-4fc6- 886a-064283054674 Frame mode: VSFM_ MdiChild Error code: 0x80131515 未理会这个提示&#xff0c;可以打开运行项目&#xff0c;只是会跳出这个弹窗。 无法关闭这个异常的窗口。

CorelDraw是什么软件?好用吗

很多人都听过CorelDraw的名字&#xff0c;但不知道CorelDraw是什么样的软件。下面就让小编为大家详细介绍一下。 coreldraw是什么软件 CorelDraw是一款专业的图形设计软件。它的主要功能包括矢量图形和位图的编辑。用户可以利用其矢量图形编辑能力,设计各种图标、Logo等精细图…

《算法竞赛·快冲300题》每日一题:“矩阵”

《算法竞赛快冲300题》将于2024年出版&#xff0c;是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码&#xff0c;以中低档题为主&#xff0c;适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 质…

每日已开源的AI论文分享【2023920期】

目录 前言 3D语义场景补全 视频修复 3D人脸重建 视频线条检测 3D物体重建 尾言 前言 作者介绍&#xff1a;作者本人是一名人工智能炼丹师&#xff0c;目前在实验室主要研究的方向为生成式模型&#xff0c;对其它方向也略有了解&#xff0c;希望能够在CSDN这个平台上与同…

【TypeScript】类、类的属性及抽象类(七)

【TypeScript】类、类的属性及抽象类&#xff08;七&#xff09; 【TypeScript】类、类的属性及抽象类&#xff08;七&#xff09;一、前言二、语法及属性定义三、类的继承四、属性类型五、readonly修饰符六、static 静态属性七、存取器-get/set八、抽象类 一、前言 传统的Jav…

定制SQLmap和WAF绕过

1. SQLmap tamper 脚本编写 以sqli-lab第26关为例 输入?id1’ --&#xff0c;报错字符型注入 考虑闭合问题&#xff0c;输入?id1’ and 1&#xff0c;但是回显中and和空格消失了&#xff0c;可知and和空格被过滤了 因为and和or被过滤考虑使用双写绕过手段&#xff0c;空格使…

2023华为杯数学建模D题第三问——区域双碳目标情景设计样例

在第二问建立好预测模型的基础上&#xff0c;如何设计第三问所说的区域双碳路径&#xff0c;以对宏观政策进行指导&#xff01; 采用STIRPA的基本模型对中国碳达峰时间进行预测&#xff0c;对该模型公式两边取对数得到&#xff1a; 其中&#xff1a;P为人口&#xff0c;A为GDP…

NIO圣经:一次穿透NIO、Selector、Epoll底层原理

此pdf电子书&#xff0c;是尼恩架构团队持续升级、持续迭代的作品。 目标是&#xff0c;通过不断升级、持续迭代&#xff0c;为大家构筑一个超底层、超强悍的高性能技术内功。 原 &#xff1a;《九阳真经&#xff1a;彻底明白操作系统 select、epoll 核心原理》 改&#xff1…

2023年研赛华为杯选题人数发布

选题人数发布&#xff01;经过长达30个小时&#xff0c;各个平台的相关选题投票、相关文章阅读量等各项数据进行统计&#xff0c;利用之前的评估办法&#xff08;详见注释&#xff09;。在开赛后30小时&#xff0c;我们基本确定各个赛题选题人数&#xff0c;大致为 题号选题人数…

时间轮算法

思考 假如现在有个任务需要3s后执行&#xff0c;你会如何实现&#xff1f; 线程实现&#xff1a;让线程休眠3s 如果存在大量任务时&#xff0c;每个任务都需要一个单独的线程&#xff0c;那这个方案的消耗是极其巨大的&#xff0c;那么如何实现高效的调度呢&#xff1f; 时…

兰贡生物:打造生物医药研发“独角兽”

当我们站在医学科学的最前沿&#xff0c;探索着无尽的健康奥秘时&#xff0c;生物制药行业正经历着前所未有的变革和机遇。新的疾病不断涌现&#xff0c;现有的治疗方法也在不断演进&#xff0c;这需要有着创新精神和科学追求的企业来推动新药研发的进程。值此时代背景下&#…