亚信安慧AntDB数据并行加载工具的实现(一)

news2024/11/25 1:06:52

1.概述

数据加载速度是评判数据库性能的重要指标,能否提高数据加载速度,对文件数据进行并行解析,直接影响数据库运维管理效率。基于此,AntDB分布式数据库提供了两种数据加载方式:

一是类似于PostgreSQL的Copy命令,二是通过AntDB提供的并行加载工具。Copy命令是大家都比较熟悉的,但Copy命令导入数据需要通过CN节点,制约了数据的导入性能,无法实现并行、高效的加载。而AntDB并行加载工具可以绕过CN节点,直连数据节点,大大提高了加载的速率。

2.实现原理

2.1并行加载工具整体流程

并行加载工具有两种线程,一种是文本处理线程,另外一种是数据处理线程。文本处理线程只有1个,用来读取文件,并按行进行拆分,拆分后将行数据发送到数据处理线程。数据处理线程是多个,并行分析行数据,并加载到相应数据节点。

图1 并行加载工具架构

2.2文本处理

并行加载工具支持Text和Csv两种格式的文件,下面简要说明下。Text和Csv文件都是以纯文本形式存储表格数据的,文件的每一行都是一个数据记录。每个记录由一个或多个字段组成,用分隔符分隔。文本处理线程的任务就是从文件中提取一行完整的记录,然后发送给数据处理线程。

文件中每一行数据以字符’\n’或者’\r\n’结尾。当是Csv文件是,由于Csv文件支持引用字符,当‘\n’、’\r\n’出现在引用字符中间时,作为普通字符处理,不能作为行结尾。Csv的引用字符为单字节字符,用户可以根据需要自己指定,未指定的话默认是双引号。

2.3行数据处理

数据处理线程用来分析文本处理线程发来的行数据,行数据由一个或多个字段组成,用分隔符分隔,分隔符可以指定。

数据处理线程从CN获取数据库及表相关信息,包括数据库编码方式,表分片方式,表的分片键等。

AntDB数据库中的表支持以下4中分布方式:

  1. 复制表
  2. Hash分片表
  3. 取模分片表
  4. 随机分片表

并行加载工具会根据表的分布方式生成相应的导入策略。以下以不同的表分布方式说明并行加载工具的导入策略。

  • 复制表在每个DN数据节点都保留完整的数据,复制表的数据导入时,需要将行数据插入到所有DN节点。

图2 复制表数据加载流程

  • Hash分片表将表数据分散到各DN节点,通过对分片键进行Hash,确定行数据属于哪个DN节点。并行加载工具的行处理线程,通过CN节点获取Hash分片表的分片健,对其进行Hash,然后将该行数据插入对应的DN节点,并行加载工具中的Hash分片的算法需要和CN节点的Hash算法一致。

图3 hash分配表数据加载流程

  • 取模分片表也是将表数据分散到各DN节点,通过对分片键进行取模确定行数据所属DN节点,并行加载工具导入的处理策略与Hash分片表相同,只是将Hash计算换成了取模的方式。
  • 随机分片表没有分片键,而是将数据根据随机分配到各DN节点。并行加载工具在每行数据导入前执行各随机函数,根据函数的返回值确定应该导入哪个节点。

图4 随机分片表数据加载流程

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

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

相关文章

java spring boot 自定义 aop

以一个锁的加锁和释放为例 1、先定义注解 /*** 锁切面* author fmj*/ Retention(RetentionPolicy.RUNTIME) Target(ElementType.METHOD) public interface VersionLockAOP { }2、然后定义切面类以及切点 /*** 切面*/ Component Aspect Slf4j public class VersionLockAOPAspe…

GitHub Copilot 终极详细介绍

编写代码通常是一项乏味且耗时的任务。现代开发人员一直在寻找新的方法来提高编程的生产力、准确性和效率。 像 GitHub Copilot 这样的自动代码生成工具可以使这成为可能。 GitHub Copilot 到底是什么? GitHub Copilot 于 2021 年 10 月推出,是 GitHub 的…

idea配置docker推送本地镜像到远程私有仓库

目录 1,搭建远程Docker 私有仓库 Docker registry 2,Windows10/11系统上安装Docker Desktop 3,idea 配置远程私有仓库地址 4,idea 配置Docker 5,idea在本地构建镜像 6,推送本地Docker镜像到远程 Dock…

第3课 获取并播放音频流

本课对应源文件下载链接: https://download.csdn.net/download/XiBuQiuChong/88680079 FFmpeg作为一套庞大的音视频处理开源工具,其源码有太多值得研究的地方。但对于大多数初学者而言,如何快速利用相关的API写出自己想要的东西才是迫切需要…

USB -- STM32F103 USB VIDEO(视频)Camera同步传输讲解(九)

目录 链接快速定位 前沿 1 描述符修改 1.1 设备描述符修改 1.2 配置描述符修改 1.3 字符串描述符修改 1.4 编译报错修改 2 增加功能函数 2.1 Camera功能模块介绍 2.2 USB复位函数修改 2.3 Speaker_Data_Setup函数修改 2.4 非零端点函数修改 2.5 JEPG数据获取 3…

IDEA使用HDFS的JavaApi

注:以下代码操作是利用junit在java测试文件夹中实现。 1. 准备工作 1.1 创建测试类 创建测试类,并定义基本变量 public class HDFSJAVAAPI {// 定义后续会用到的基本变量public final String HDFS_PATH "hdfs://hadoop00/";Configuration …

骑砍战团MOD开发(27)-module_tableau_materials.py材质

一.配置材质资源 OpenBrf寻找对应材质资源. tableau配置材质资源 ("round_shield_1", 0, "sample_shield_round_1", 512, 256, 0, 0, 0, 0,[(store_script_param, ":banner_mesh", 1),(set_fixed_point_multiplier, 100),(init_position, pos1),…

基于Freeswitch实现的Volte网视频通知应用

现在运营商的Volte网络已经很好的支持视频通话了,因此在原来的电话语音通知的基础上,可以更进一步实现视频的通知,让用户有更好的体验,本文就从技术角度,基于Freeswitch来实现此类应用(本文假设读者已对Fre…

【Maven】linux部署maven

简介 最近学习hyperledger-fabric超级账本(区块链),需要使用到java和maven,所以重新学习了一下如何部署maven,这里附上参考文档。在附上官方网站的下载地址:https://maven.apache.org/download.cgi。首先去…

刷算法-- leetcode 96. 不同的二叉搜索树

思路 观察树的组成,可以发现n3时的二叉搜索树可以由,头节点分别为1、2、3时的所有结果组成!定义dp[i]为由i个节点组成的二叉搜索树的个数。确定递推公式,dp[i] 由1为头节点组成的二叉搜索树个数由2为头组成的个数…由i为头节点组…

idea远程开发环境搭建

idea远程开发环境搭建 一、安装包下载二、环境准备2.1服务器端jdk、maven安装,代码下载略2.2JetBrainsClients下载配置 三、远程环境配置3.1 创建项目3.2 填写服务器连接信息![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4aa09073af5e4a66a5e83e7c5d1…

《异常检测——从经典算法到深度学习》25 基于深度隔离林的异常检测算法

《异常检测——从经典算法到深度学习》 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3 基于One-Class SVM的异常检测算法4 基于高斯概率密度异常检测算法5 Opprentice——异常检测经典算法最终篇6 基于重构概率的 VAE 异常检测7 基于条件VAE异常检测8 Donut: …

《论文阅读:Backdoor Attacks Against Dataset Distillation》

数据浓缩下的后门攻击 1. 摘要 数据集蒸馏已成为训练机器学习模型时提高数据效率的一项重要技术。它将大型数据集的知识封装到较小的综合数据集中。在这个较小的蒸馏数据集上训练的模型可以获得与在原始训练数据集上训练的模型相当的性能。然而,现有的数据集蒸馏技…

儿童学python语言能做什么,孩子学python哪个机构好

大家好,小编为大家解答儿童学python语言能做什么的问题。很多人还不知道孩子学python哪个机构好,现在让我们一起来看看吧! Source code download: 本文相关源码 我们准备了很久的Python3课程终于要来了。 为什么Python3课程花了我们这么久的时…

draw.io学习笔记

1、链接 1.1、自动连接图形 鼠标放在图形上,点击出现的箭头,会自动出常用图形 1.2、固定连接 如果拖动其中一个图形的话,固定链接的形状会是曲线连过去。 方法:不要点击左边图形鼠标放在边框上面左边出现绿圆点鼠标左键点击图形的…

【模拟电路】常见电子元器件

一、常见电子元器件 二、电阻器 三、电容器 四、电感器 五、电容电感组成LRC振荡电路 六、保险丝、熔断器 七、锂电池 八、接插件 九、蜂鸣器 立创商城_一站式电子元器件采购自营商城-嘉立创电子商城 华秋商城(原"华强芯城")官网_电子元器件采购网_自营现货电子元器…

Python之自然语言处理库snowNLP

一、介绍 SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是&…

【Azure 架构师学习笔记】- Azure Databricks (4) - 使用Azure Key Vault 管理ADB Secret

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (3) - 再次认识DataBricks 前言 Azure Databricks有access token,是具有ADB内部最高权限的token。在云环境中这些高级别权限的sec…

Javaweb小案例-基于SpringBoot+Vue实现的Timo商城

前言 Timo商城是基于Springbootvue的web商城系统,包含了商城的后台管理系统手机端微信小程序端 底层采用web-flash作为底层基础框架搭建 基本功能包含一下模块基础模块 部门管理用户管理角色管理菜单管理权限分配参数管理数据字典管理定时任务管理操作日志登录日志…

写回(write back)与 写分配(write allocate)的差异

写回(write back): 写回是一种缓存策略,它延迟将修改后的数据写入主存。当发生写入操作时,修改的数据首先被写入缓存中。相应的缓存行被标记为“脏”,表示已经被修改。写操作在此时被视为完成,…