AntDB 存储技术——Hash分片技术

news2024/9/19 12:54:47

单台机器很难处理海量的数据或者很高的并发查询,需要把数据拆分到多个节点上,在多个节点上进行存储和处理,这种技术叫作数据分区,也称为数据分片。数据分片的主要目的是提高可扩展性,使数据分散到多个节点上,如果对单个分区进行查询,每个节点都只对自己所在的节点进行独立查询。

分布式存储系统需要解决的两个最主要的问题:数据分片和数据冗余, 通过图 3-3 来解释其概念和区别。

图 3-3 中,数据集 A、B 属于数据分片,原始数据被拆分成三个正交子集分布在三个 DN 节点上。而数据集 C 属于数据冗余,同一份完整的数据在三个节点都有存储。

图 3-3 数据分片及数据冗余示意图

AntDB 提供 Hash 分片、Mod 取模分片、Random 随机分片及复制表等多种分片方式。下面重点描述 Hash 分片技术。哈希表(散列表)是最常见的数 据结构,根据记录的关键值将记录映射到表中的一个槽(slot)中,便于快速访问。绝大多数编程语言都支持 Hash 表,如 Python 中的 dict,C++ 中的 map,Java 中的 Hashtable,Lua 中的 table,等等。在 Hash 表中,最为简单的散列函数是mod N(N 为 DN 节点的个数)。即首先由关键值计算出 Hash 值(这里是一个整型),通过对 N 取余,余数即是在表中的位置。

AntDB 数据分片的 Hash 技术也是基于这个思想,即按照数据的某一特征(key)来计算哈希值,并将哈希值与系统中的节点建立映射关系,从而将哈希值不同的数据分布到不同的节点上。

示例如图 3-4 所示。假如选择 id 作为数据分片的 key,那么各个节点负责的数据如下:

图 3-4 Hash 分片数据分布示意图
 

由此可见,按照 Hash 方式做数据分片,映射关系非常简单,需要管理的元数据也非常少,只需要记录节点的数目以及 Hash 方式就可以了。

但 Hash 分片方式的缺点也非常明显:当加入或者删除一个节点的时候, 大量的数据需要移动。比如在某处增加一个 DN4_1 数据节点且 DN4_1 数据节点也想共同存储 test 表数据,那么 N(DN 节点的个数)由 3 变成 4 了,原本的 mod 3 就需要变成 mod 4,test 表数据需要移动。因此,当前 AntDB 新增加数据节点的情况下,原本表的分布节点不会主动发生变化。在 AntDB 数据库中, 为了减少迁移的数据量,在线热扩容技术里节点的数目均是成倍增长,这样最多有 50% 的数据发生迁移。

Hash 方式还有一个缺点,即很难解决数据不均衡的问题。有两种情况:第一,原始数据的特征值分布不均匀,导致大量的数据集中到一个物理节点上; 第二,对于可修改的记录数据,单条记录的数据变大。这两种情况,都会导致节点之间的负载不均衡,而且在 Hash 方式下很难解决。对于此场景,AntDB 提供 random 随机分片方式可以解决该类数据倾斜的问题。

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

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

相关文章

【Java】冒泡排序

文章目录 一、什么是冒泡排序定义冒泡思想代码实现 二、冒泡排序的优化第一次优化第二次优化 三、鸡尾酒排序 一、什么是冒泡排序 定义 冒泡排序(bubble sort)是最基础的排序算法,它是一种基础的交换排序。它的原理就像汽水一样,汽水中常常有许多小气泡…

Vue第八篇Vue3

一 Vue3的变化 1.性能的提升 打包大小减少41% 初次渲染快55%, 更新渲染快133% 内存减少54% 2.源码的升级 使用Proxy代替defineProperty实现响应式 重写虚拟DOM的实现和Tree-Shaking 3.拥抱TypeScript Vue3可以更好的支持TypeScript 4.新的特性 Composition API&#…

Leetcode---349周赛

题目列表 2733. 既不是最小值也不是最大值 2734. 执行子串操作后的字典序最小字符串 2735. 收集巧克力 2736. 最大和查询(这题难度较大,等以后有时间再和大家分享) 一、2733、既不是最小值也不是最大值 关键是看到题目中说数组中的元素不…

一文快速了解软件技术基础

前言 数据结构和算法是计算机科学的基石,它们为我们提供了处理和组织数据的方法和工具。通过学习数据结构,您将能够理解如何存储和操作不同类型的数据,如何优化内存使用和访问效率,以及如何设计高效的算法来解决各种计算问题。掌…

iOS -- isa指针

isa指针:isa指针是一个指向对象所属类或元类的指针。它决定了对象可以调用的方法和属性。isa指针在对象的结构中存在,并且在运行时会被自动设置。isa 指针,表示这个对象是一个什么类。而 Class 类型, 也就是 struct objc_class * …

XML 的命名空间及其在OPCUA中的应用

为了防止不同XML 使用的名称冲突,XML 规范中规定的命名空间,平时编写单一命名空间的XML 文档,没有过多地注意XML 命名空间的细节。当开发OPCUA 信息模型时,被命名空间搞得云里雾里。为此,做了一个笔记。 URI(Uniform R…

Vue3_ElementPlus_简单增删改查(2023)

Vue3,Element Plus简单增删改查 代码:https://github.com/xiaoming12318/Vue3_ElementPlus_CRUD.git 环境: Visual Studio Code Node.js 16.0或更高版本,https://nodejs.org/en axios 快速上手: 如果已经有16.0及…

Vue单文件组件

单文件组件 单文件组件是在开发中用的比较多的,它的后缀都是.vue结尾的 既然是.vue结尾,那么直接给浏览器是不能运行的,.vue文件是vue团队打造的特殊文件,想让.vue文件让浏览器识别并且运行,需要对它进行处理加工成纯…

5款大厂设计师都在用的网页设计工具

本文收集了5款大厂设计师使用的几种流行易用的网页设计工具,其中一个可以AI自动生成设计稿,非常的方便,相信一定有一个适合你的网页设计工具。 1.即时设计 即时设计是一款免费的在线 UI 设计工具,无系统限制,浏览器打…

三个原则判定电源环路稳定性

1 环路稳定性评价指标 衡量开关电源稳定性的指标是相位裕度和增益裕度。同时穿越频率,也应作为一个参考指标。 (1) 相位裕度是指:增益降到0dB时所对应的相位。 (2) 增益裕度是指:相位为0deg时所对应的增益大小(实际是衰减)。 (3) 穿越频率…

DVWA下载、安装及使用教程,网络安全小白必看!

DVWA是一款基于PHP和mysql开发的web靶场练习平台,集成了常见的Web漏洞。旨在为安全人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程; 一、DVMA介绍 DVWA官网 (opens new window)DVWA Github (ope…

springboot配置文件中的巨坑!!

问题 application.yml test:password1: 030030password2: 030030使用此配置的bean Component public class Test {Value("${test.password1}")private String password1;Value("${test.password2}")private String password2;PostConstructpublic void …

企业微信建设代开发应用的基本流程及实现

一、企业微信代开发应用的基本流程 企业微信中除了系统提供的应用以及上架应用商店的第三方应用外,也可以使用自己开发的应用,不过多数企业都不具备开发能力,只能采用代开发的形式进行定制。就给大家分享一下企业微信代开发应用的基本流程&a…

java八股面试文(带答案,万字总结,精心打磨,建议收藏)堪称2023最强

前言 2023秋招即将来临,很多同学会问Java面试八股文有必要背吗? 我的回答是:很有必要。你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。 国内的互联网面试,恐怕是现存的、最接近科举考试的…

【Java项目】不使用ES实现关键词搜索问题

文章目录 需求解决思路基本设计查询流程插入流程修改流程删除流程 优化思路总结 需求 ok,这个需求是我提的,然后我问了我的一位杭州的朋友,然后我们最后一起敲定这个方法。 我的项目有一个根据关键字进行商品名称的搜索功能,用户…

安卓期末考试知识总结

文章目录 第一章:Android基础入门习题总结重点知识 第二章:Android常见桌面布局&第三章:Android常见界面控件知识总结习题总结 第一章:Android基础入门 习题总结 Android系统采用分层架构,由高到低分为4层&#…

MySQL数据库 --- 运维篇

一、日志 1.1、错误日志 错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。 该日志是默认开启的…

实训笔记6.12

实训笔记6.12 6.12一、座右铭二、知识回顾2.1 面向对象的两大核心概念:类和对象2.2 面向对象的三大特征封装性继承性多态性-必须在继承之上抽象性 2.3 面向对象的常用关键字2.4 Java设计模式中适配器模式2.4.1 接口适配器2.4.2 类适配器2.4.3 对象适配器 三、Java常…

Linux基础知识3

Linux基础知识 适合有Linux基础的人群进行复习。 禁止转载! 用户与用户组管理 Linux系统下的3类用户和功能; 答: root用户(或称根用户、超级用户):Linux的内置用户,权限最高,具有…

wps安装提示nsis error

1.安装时弹出「NSIS error」错误框,无法安装。 此问题为一般为安装包损坏导致,可重新下载安装包尝试安装。 我遇到的提示也是这个。文件损坏。但是换了绿色U盘(格式是FAT32)复制过去就能安装。 之前用白色U盘(格式是N…