场景 - 分库分表

分什么

数据量大分表,并发大分库

分表字段如何选择

如果对交易订单进行分表,可以选择的东西很多,比如说商户id,用户id,地区等等

分表的时候要考虑到数据倾斜问题

数据倾斜

比如说按商户号进行分表,一共500w条数据,结果一个商户就有400w条的数据,这样来说 会有严重的数据倾斜问题

解决方案 二次分表

1. 二次分表

根据多个字段进行路由

查询的时候也是根据多个字段进行路由

2. 隔离

把严重数据偏移的商户数据,单独开一个数据库

数据倾斜问题可能导致 资源利用不均匀。

数据关联查询问题

如果订单表根据用户id进行分表

用户可以查询自己的订单

那商户如何查询用户的订单呢?

毕竟商户没有用户的id

解决方案 数据同步

买家表使用canal 做数据同步,将表中的数据同步到一个新的表(商户表)

这个表里面维护了 商家id 和 订单表的数据,根据商家id进行分库分表

商家不需要写入性能,只需要读取性能比较高

比如说可以采用HBASE数据库进行读取

数据id查询问题

如果我想根据订单id直接查询订单信息,如何进行查询呢?

因为此时,我没有路由的建,用户id

解决方案 基因法

生成id的策略可以定义为 订单id+分表路由

这样根据订单id 就可以知道数据存储在哪张表中

这张表根据订单id去做索引

当然还有别的方法,如果是其他无关紧要的数据,可以放入es,搜索引擎,从而对订单进行搜索

分表算法是什么

选择完分表字段了,如何选择分表算法呢?

直接取模

hash

关键字

一致性hash

一致性hash

一致性hash 很好的解决了,多次分表的问题(原来分128张表,现在增加到256张表)

hash环上面有32^2的虚拟节点

再把数据也hash到环上

id往前找到要进行存储的表

如果此时需要新增表,就通过一致性hash,将要加入的表映射到hash换上

这样会有一部分数据进行查找表的时候会有一定的影响

但是受到的影响已经很小了

这个时候可以再去做数据迁移

估计一下单表数据量

公式:( 非叶子节点层数 -1)* 一页内非叶子节点索引数 * 叶子节点的数据量

分表后 全局id如何生成

肯定不能用自增去弄,因为自增会导致id重复

UUID

太长了、无业务含义

雪花算法

雪花算法也有个问题

时间回拨,容易造成id的重复生成

分库分表事务

Seata

流程

TM 向 TC申请 XID

TM带着XID调用RM

RM向TC注册分支事务

TM告诉TC是否commit 或者是 rollback

由TC告知RM进行提交

跨库join

指定库名做join

数据冗余

宽表

es

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

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

相关文章

Java基础入门1-2

跟着韩顺平老师的30天入门java课程学习,整理一下自己的笔记,方便回顾知识点和复习。 另附上视频链接:0034_韩顺平Java_变量原理_哔哩哔哩_bilibili 第一章:学习前的了解 第二章:Java概述 2.1什么是程序&#xff1f…

KPI与OKR的区别:深入解析与案例应用

一、KPI:量化与结果的导向 KPI是一种基于量化指标的绩效管理方法,强调对关键业务成果的衡量和评估。它通常关注那些可以直接影响企业战略目标达成的具体指标,如销售额、客户满意度等。KPI的优点在于其明确性和可衡量性,有助于企业…

简化图卷积 笔记

1 Title Simplifying Graph Convolutional Networks(Felix Wu、Tianyi Zhang、Amauri Holanda de、 Souza Jr、Christopher Fifty、Tao Yu、Kilian Q. Weinberger)【ICML 2019】 2 Conclusion This paper proposes a simplified graph convolutional m…

Oracle 第二章

1- 排序查询 select * from 表名 order by 字段; desc :从大到小排序 默认是从小到大排序 2- 基于伪列的查询 ROWID 和 ROWNUM rowid : 唯一的编号 select rowid,表名.* from 表名 where ROWID AAAStKAANAAAAC/AAC; (rowid号&#…

ROS 话题订阅模型之自定义消息类型 C++实现

ROS 话题订阅模型之自定义消息类型 1.自定义消息类型好处 ROS提供了许多标准的消息类型,如 std_msgs/String、sensor_msgs/Image 等,涵盖了很多常见的数据类型和传感器数据。但是,在实际的开发中,我们经常会遇到需要传输的数据类…

SD-WAN多分支组网案例分享

随着企业规模持续扩大,业务版图日益多元,多分支组网已成为企业网络建设的核心议题。如何构建高效、安全且灵活的网络连接,成为企业急需解决的关键问题。近些年,SD-WAN技术的崭露头角,为企业带来了前所未有的解决方案。…

在浏览器输入网址,Enter之后发生了什么?

在浏览器输入网址,Enter之后发生了什么? 很多八股文会给出: 1. DNS Resolution2. Establishing a Connection3. Sending an Http Request4. Receiving the HTTP Response5. Rendering the Web Page 但今天我斗胆插入第0.9步URL Parsing&#…

为什么堆排序的时间复杂度是O(N*logN)?

目录 前言: 堆排序(以排升序为例) 步骤(用大根堆,倒这排,排升序): 1.先把要排列的数组建立成大根堆 2.堆顶元素(82)和最后一个元素交换(2&…

【随想录】Day30—第七章 回溯算法part06

目录 题目1: 重新安排行程1- 思路2- 题解⭐重新安排行程 ——题解思路 题目2: N皇后1- 思路2- 题解⭐N皇后 ——题解思路 题目3: 解数独(跳过) 题目1: 重新安排行程 题目链接:332. 重新安排行程 1- 思路 思路: 本题实际上是一个…

2024第24届营养健康展/北京健康展/健康食品展

第24届中国国际营养健康产业博览会 2024HEC营养健康展/北京健康展/大健康展 2024北京大健康展/营养健康展/北京健康展 2024第24届营养健康展/北京健康展/健康食品展 2024北京健康展/营养品展/HEC营养健康展 HEC2024与您共同打造健康梦-做中国最具权威性的大健康…

H264 编码标准常见术语解释

H264 编码标准 H.264编码标准,也被称作MPEG-4 AVC(Advanced Video Coding),是一种被广泛使用的数字视频压缩标准,由国际电信联盟(ITU-T)和国际标准化组织(ISO)共同开发。…

ArcGIS教程:降雨量插值

一、目标 制作一副年平均降雨量的地图。 二、数据 某地的175个气象站数据的shp文件station.shp,以及这个地方轮廓的栅格数据idoutlgd。 数据下载链接:数据下载链接 三、制作方法 1.首先加载数据。 2.在菜单栏/customize/toolbars/中找到geostatisti…

AI图书推荐:如何用ChatGPT和Python进行数据可视化

《如何用ChatGPT和Python进行数据可视化》的原版英文图书标题:Python 3 Data Visualization Using ChatGPT - GPT-4 ,作者是 Oswald Campesato ,2023年出版 本书旨在向读者展示Python 3编程的概念和数据可视化的艺术。它还探讨了使用ChatGPT/…

模块化 DeFi L2 “Mode” 整合 Covalent Network(CQT),以获 Web3 最大数据集的支持

Covalent Network(CQT),作为 Web3 领先的数据层,宣布其统一 API 将与 Mode 集成,以加快其基于以太坊构建的专注于 DeFi 的模块化 Layer2 方案的数据访问速度。这一战略合作将通过为开发者提供更强大的工具和能力&#…

8.0MGR单主模式搭建_克隆(clone)插件方式

为了应对事务一致性要求很高的系统对高可用数据库系统的要求,并且增强高可用集群的自管理能力,避免节点故障后的failover需要人工干预或其它辅助工具干预,MySQL5.7新引入了Group Replication,用于搭建更高事务一致性的高可用数据库…

快解析搭建网站解决方案

在如今网络时代下,各行各业都需要有自己的门户网站。 企业搭建自己的门户网站,有着众多实际意义: 1.可以全面详细地介绍企业及企业产品,这是企业网站的一个最基本的功能。企业可以把任何想让大众知道的信息放到网站,当人们想知道…

如何从架构层面降低公有云多可用区同时故障的概率

阿里云和腾讯云都曾出现过因一个组件故障而导致所有可用区同时瘫痪的情况。本文将探讨如何从架构设计的角度减小故障域,在故障发生时最小化业务损失,并以 Sealos 的稳定性实践为例,分享经验教训。 抛弃主从,拥抱点对点架构 从腾…

Xilinx 7系列MMCM/PLL 编程时参数值的确定

MMCM/PLL 的编程必须遵循一套流程,以确保配置的稳定性和性能。本文将描述了如何根据特定的设计要求来编程 MMCM/PLL。设计可以通过两种方式实现:直接通过图形用户界面(Clocking Wizard 时钟向导)或通过实例化来实现 MMCM/PLL。无论…

LabVIEW与Modbus协议的多点温度监控系统

LabVIEW与Modbus协议的多点温度监控系统 随着工业自动化和智能化水平的不断提升,对于现场监控技术的需求日益增长。开发了一种基于LabVIEW与Modbus协议的多点温度监控系统,实现高效、准确的温度数据采集、处理和显示,以及数据存储功能&#…

python爬虫学习第二十八天-------了解scrapy(二十八天)

🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天…