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

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.hqwc.cn/news/115821.html

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

相关文章

基于Vue+ELement搭建登陆注册页面实现后端交互

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《ELement》。🎯🎯 &#x1…

【观察】华为陈帮华:学习“都江堰模式”,构筑强健分销体系

目前在水利生态构建上,最有特点无疑是都江堰工程,它是以无坝引水为特征的水利生态工程,从无坝引水到平原灌溉,均有口无闸,既充分利用了河道的弯曲和崖壁的角度,自然控制流向和水量,同时在不改变…

【数据结构】—交换排序之快速排序究极详解,手把手带你从简单的冒泡排序升级到排序的难点{快速排序}(含C语言实现)

食用指南:本文在有C基础的情况下食用更佳 🔥这就不得不推荐此专栏了:C语言 ♈️今日夜电波:靴の花火—ヨルシカ 0:28━━━━━━️💟──────── 5:03 …

自动化测试的定位及一些思考

大家对自动化的理解,首先是想到Web UI自动化,这就为什么我一说自动化,公司一般就会有很多人反对,因为自动化的成本实在太高了,其实自动化是分为三个层面的(UI层自动化、接口自动化、单元测试)&a…

电巢科技出席第26届西北地区电子技术与线路课程教学改革研讨会,聚焦一流课程建设!

2023年9月15日至17日,北方民族大学召开第26届西北地区电子技术与线路课程教学改革研讨会。本次会议围绕“梳理课程教学内容,改革教学方式,探索虚拟教研室构建方式,完善基层教学组织,推进一流课程和一流教材资源共享&am…

Java 基于微信小程序的学生选课系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 第一章: 简介第二章 技术栈第三章: 功能分析第四章 系统设计第五章 系统功…

java:java.util.MissingResourceException: Cant find bundle for base name解决方式

java:java.util.MissingResourceException: Cant find bundle for base name解决方式 1 前言 代码执行如下: ResourceBundle.getBundle("res.Message",Locale.getDefault(), ReadMyProps.class.getClassLoader());或 ResourceBundle.getBu…

【C语言】指针的进阶(四)—— 企业笔试题解析

笔试题1: int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d", *(a 1), *(ptr - 1));return 0; } 【答案】在x86环境下运行 【解析】 &a是取出整个数组的地址,&a就表示整个数组,因此…

伪原创文章生成器软件的崛起-哪个伪原创文章生成器软件好?

在当今数字化的时代,内容创作已经成为了无处不在的需求。不论您是个人博主、企业家还是网站管理员,都会面临一个共同的挑战:如何在互联网上脱颖而出,吸引更多的读者和访客。 gpt批量图文改写润色软件-147SEO gpt批量图文改写润色…

景联文科技:数据供应商在新一轮AI热潮中的重要性

景联文科技是AI基础行业的头部数据供应商,可协助人工智能企业解决整个人工智能链条中数据标注环节的相对应问题。 随着全球新一轮AI热潮来袭,大量训练数据已成为推动AI算法模型进步和演化的不可或缺的重要因素。数据的质量和数量直接影响了模型训练和性能…

【设计模式】组合模式

文章目录 1.组合模式定义2.组合模式的结构2.1. 安全式组合模式的结构2.2.透明式组合模式的结构 3.组合模式实战案例3.1.场景说明3.2.关系类图3.3.代码实现 4.组合模式优缺点5.组合模式适用场景6.组合模式总结 主页传送门:💁 传送 1.组合模式定义 组合模式…

03【深度学习】YOLOV3-WIN11环境搭建(配置+训练)

一、深度学习:YOLOV3-WIN11环境搭建 本篇文字是【深度学习】YOLOV5-WIN11环境搭建(配置训练),首先介绍win11下 基于Anaconda、pytorch的YOLOV5深度学习环境搭建,环境配置顺序:显卡驱动 - CUDA - cudnn - Anaconda - py…