当前位置: 首页 > news >正文

ShardingSphere-JDBC

1. 什么是分库分表?

分库分表是一种数据库扩展技术,通过将数据拆分到多个数据库(分库)或多个表(分表)中来解决单一数据库或表带来的性能瓶颈。分库分表可以有效提升系统的可扩展性、性能和高并发处理能力,避免单一数据库或表的负载过重。

1.1 什么是分库?

分库指的是将数据分散到多个数据库实例中,以减轻单一数据库的负载。分库可以有两种方式:垂直分库水平分库

  • 垂直分库:

    • 垂直分库是指根据业务模块的不同,将不同模块的数据存储到不同的数据库中。例如,将用户数据存储在 user_db 中,将订单数据存储在 order_db 中,将商品数据存储在 product_db 中。每个数据库只负责一部分业务数据。
    • 适用场景: 适用于系统中各个模块的数据量差异很大,或者需要对不同模块进行独立管理的场景。
  • 水平分库:

    • 水平分库是指将同一业务的不同数据根据某些规则(如时间、地域等)拆分到多个数据库中。例如,按照地区划分,将美国的用户数据存储在 db_us 中,将欧洲的用户数据存储在 db_eu 中,或者按照时间将数据按年、月划分到不同的数据库中。
    • 适用场景: 适用于数据量巨大,且需要根据某些标准进行数据拆分的场景。
1.2 什么是分表?

分表是指将同一张表中的数据拆分到多个表中,以避免单个表过大而导致性能问题。分表也有两种方式:垂直分表水平分表

  • 垂直分表:

    • 垂直分表是指将一张表中的不同列分拆到多个表中。通常是将表中的列根据功能或访问频率进行划分。例如,将一个包含用户详细信息的表,按照访问频率将常用字段(如用户名、密码等)拆分成 user_basic 表,而将不常用的字段(如用户画像、日志等)拆分成 user_extra 表。
    • 适用场景: 适用于表中包含大量列,但并非所有列都会频繁访问的场景。
  • 水平分表:

    • 水平分表是指将表中的数据按照某些规则(如ID范围、时间等)拆分到多个表中。例如,用户表的数据根据用户ID范围分拆成多个表,如 user_1, user_2, user_3 等,或者按时间拆分成 user_2023, user_2024 等。
    • 适用场景: 适用于数据量过大,导致单表查询性能低下的情况。

2. 分库分表场景

2.1 什么场景分表?

分表适用于以下场景:

  • 单表数据量过大: 当某个表的记录数达到千万级,查询时可能会非常缓慢,尤其是涉及全表扫描的操作,分表可以有效提高查询效率。
  • 高并发读写: 单表无法承载高并发的查询和写入请求时,可以通过水平分表将压力分散到多个表上。
  • 单表的数据结构复杂,且访问频繁的列较少: 在这种情况下,垂直分表可以将高频访问的列提取到单独的表中,提高性能。
2.2 什么场景分库?

分库适用于以下场景:

  • 数据库连接数不足: 单个数据库的连接数上限(如 MySQL 默认为 4000 个连接)无法满足高并发的请求时,可以通过分库将连接请求分散到多个数据库实例上。
  • 数据库资源瓶颈: 当单个数据库的 CPU、内存、磁盘等资源无法满足需求时,分库可以将数据分布到多个数据库实例上,从而避免单点故障和资源瓶颈。
  • 高并发读写: 当需要处理大量并发请求时,单个数据库无法支撑,需要通过分库将请求分散到多个数据库节点上。
2.3 什么场景分库分表?

分库分表适用于以下场景:

  • 数据量巨大且访问量大: 当数据量达到数千万甚至更大,且访问量高时,单库单表无法满足存储、查询和写入需求。此时,分库分表能有效地提高查询性能和扩展系统能力。
  • 高并发写入和查询: 在高并发的业务场景中,单库单表的性能瓶颈可能导致系统无法处理所有请求。分库分表能够将数据分布在不同的物理节点上,提高系统的并发处理能力。
  • 资源瓶颈和高可用性需求: 当数据库实例的资源有限,且为了保证高可用性,必须将数据分散到多个数据库和表中,避免单点故障和资源耗尽。

3. 什么是 ShardingSphere?

ShardingSphere 是一个开源的分布式数据库中间件,提供数据库分片、分库分表、数据路由、分布式事务、数据脱敏等功能。它可以在不修改应用代码的情况下,为应用提供透明的分库分表支持,简化了分布式数据库的管理和维护。

ShardingSphere 的主要特点包括:

  • 数据分片: 支持灵活的分库分表策略,可以根据用户需求定制分片规则。
  • 分布式事务: 提供跨库跨表的分布式事务管理,确保数据一致性。
  • 读写分离: 提供读写分离功能,将读请求路由到从库,提高系统性能。
  • 弹性扩展: 支持动态添加新的数据源,帮助系统应对数据增长带来的压力。

4. 数据分片核心概念

4.1
  • 逻辑表: 应用层面上的虚拟表,实际数据存储在多个物理表中。
  • 真实表: 存储在数据库中的实际表,数据按分片规则分布在不同的物理表中。
  • 绑定表: 多个表之间具有外键关系或逻辑关联,需要绑定在一起进行分片操作。
  • 广播表: 一些小型表(如配置表、字典表等)将数据广播到所有数据库节点中,不进行分片。
  • 单表: 不需要分片的表,数据存储在单个表中。
4.2 数据节点
  • 均匀分布: 数据均匀地分布到多个数据节点中。
  • 自定义分布: 开发者可以定义特定的分布规则,决定数据如何在不同的数据节点上分布。
4.3 分片
  • 分片键: 决定数据如何分配到不同分片的字段,通常选择具有唯一性、分布均匀的数据字段作为分片键。
  • 分片算法: 根据分片键和预定义的算法将数据分配到不同的分片上,常见的算法有哈希分片、范围分片等。
  • 自动化分片算法: 系统自动根据配置的分片规则选择合适的分片算法。
  • 自定义分片算法: 开发者可以定义自己的分片算法,以满足特定的业务需求。
  • 分片策略: 定义了数据如何进行分片,包括按ID、时间、范围等不同策略进行数据划分。
  • 强制分片路由: 强制要求某些操作使用特定的分片策略进行路由,通常用于特定业务需求。
4.4 行表达式

行表达式是指描述分片规则的表达式,帮助系统决定某一行数据应该放入哪个分片。

4.5 分布式主键

分布式主键确保在多个数据库和表中生成全局唯一的主键,避免出现主键冲突,通常通过全局唯一ID生成策略来实现。

相关文章:

ShardingSphere-JDBC

1. 什么是分库分表? 分库分表是一种数据库扩展技术,通过将数据拆分到多个数据库(分库)或多个表(分表)中来解决单一数据库或表带来的性能瓶颈。分库分表可以有效提升系统的可扩展性、性能和高并发处理能力&…...

企业如何选择远程控制软件来远程IT运维?

在当今企业的日常运作中,IT运维无疑是核心环节之一,它对于保持企业信息系统的稳定运行和数据安全至关重要。随着科技的快速进步,远程控制软件在IT运维中的应用变得越来越重要。今天,我们就来探讨一下远程控制软件如何助力企业IT运…...

Meta Llama 3.3 70B:性能卓越且成本效益的新选择

Meta Llama 3.3 70B:性能卓越且成本效益的新选择 引言 在人工智能领域,大型语言模型一直是研究和应用的热点。Meta公司最近发布了其最新的Llama系列模型——Llama 3.3 70B,这是一个具有70亿参数的生成式AI模型,它在性能上与4050…...

【银河麒麟高级服务器操作系统】修改容器中journal服务日志存储位置无效—分析及解决方案

了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://documentkylinos.cn 服务器环境以及配置 【机型】 整机类型/架构&am…...

go语言zero框架对接阿里云消息队列MQ的rabbit的配置与调用

在 Go 语言中对接阿里云消息队列(MQ)的 RabbitMQ 配置与调用,首先需要安装和配置相关的 Go 库,并了解如何通过 RabbitMQ 与阿里云消息队列进行交互。 ### 步骤一:安装 RabbitMQ Go 客户端库 阿里云的消息队列&#x…...

《Vue进阶教程》第四课:reactive()函数详解

往期内容: 《Vue零基础入门教程》合集(完结) 《Vue进阶教程》第一课:什么是组合式API 《Vue进阶教程》第二课:为什么提出组合式API 《Vue进阶教程》第三课:Vue响应式原理 通过前面的学习, 我们了解到r…...

【开源】A065—基于SpringBoot的库存管理系统的设计与实现

🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看项目链接获取⬇️,记得注明来意哦~🌹 赠送计算机毕业设计600个选题ex…...

memmove函数(带图详解)

c语言系列 文章目录 c语言系列一、memmove函数介绍1.1、函数基本功能1.2、函数参数2.3、函数返回值 二、memmove的使用2.1、拷贝字节不可大于目标空间2.2、同一空间拷贝 三、函数功能的模拟实现3.1、函数参数及其返回值的设定3.2、函数体实现 四、代码实现 一、memmove函数介绍…...

【Java数据结构】时间和空间复杂度

本章开始将进入数据结构的知识,时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间,。 时间复杂度 算法中执行的次数决定了时间复杂度。 在计算执行次数时,只需要计算大概的次数&#xff…...

八斗深度学习

八斗深度学习第二周笔记 一、深度学习步骤:1. 选定模型结构2. 模型参数随机初始化3. 构造模型损失函数4. 选择优化算法并设置超参数5. 数据准备与预处理6. 训练模型7. 模型评估8. 测试模型9. 应用模型 损失函数极小值、导向意义 超参数的影响迭代次数epoch批次量大小…...

安卓报错Switch Maven repository ‘maven‘....解决办法

例如:Switch Maven repository ‘maven(http://developer.huawei.com/repo/)’ to redirect to a secure protocol 在库链接上方添加配置代码:allowInsecureProtocol true...

Scala编程技巧:正则表达式与隐式转换

1. 引言 在Scala编程中,正则表达式和隐式转换是处理字符串匹配和类型转换的强大工具。本文将通过一个实用的示例——电话号码和身份证号码验证器,来展示如何使用这些工具。 2. 知识概括 2.1 正则表达式基础 正则表达式是用于字符串搜索和匹配的强大工…...

UnityShaderLab 实现黑白着色器效果

实现思路:取屏幕像素的RGB值,将三个通道的值相加,除以一个大于值使颜色值在0-1内,再乘上一个强度值调节黑白强度。 在URP中实现需要开启Opaque Texture ShaderGraph实现: ShaderLab实现: Shader "Bl…...

在Windows 10中使用SSH远程连接服务器(附花生壳操作方法)

SSH 在 linux 中是一种重要的系统组件,用户可以使用 SSH 来远程连接 linux 系统的计算机,或者传输文件。不过在 win10 以前,windows 并不原生支持 SSH,需要借助第三方工具来使用 SSH 功能。而实际上,微软在 2015 年就曾…...

在算网云平台云端在线部署stable diffusion (0基础小白超详细教程)

Stable Diffusion无疑是AIGC领域中的AI绘画利器,具有以下显著优势: 1、开源性质,支持本地部署 2、能够实现对图像生成过程的精确控制 虽然SD在使用上有很多的有点,但缺点也是不言而喻的,由于AI绘画的整个过程以及现…...

ubuntu存储空间不足快速解决

几个自己常用的释放空间命令,备忘 将文件夹下的文件按从大到小排列 ls -lhS /var/log/syslog 过大 sudo truncate -s 0 /var/log/syslog /var/log/Xorg.0.log.old过大 sudo truncate -s 0 /var/log/Xorg.0.log.old 清理系统日志文件: sudo journalctl --…...

Prescan simulink carsim联合仿真平台搭建问题总结

解决办法主要来自忠厚的老王:自动驾驶决策规划算法第二章第一节 决策规划仿真平台搭建_哔哩哔哩_bilibili 这部分直接复制的老王视频的: Q1:prescan安装了,但是找不到Demo_Carsim3D A1:这个文件夹是我自己建立的不是prescan自带的&#xff0…...

STM32(HAL_工程模板的搭建)

目录 一、准备文件 二、创建工程 三、创建分组 四、配置文件处理 五、编译错误处理 一、准备文件 准备HAL库文件: ST官网( 意法半导体-STMicroelectronics )搜索STM32Cube, 本文使用“STM32Cube_FW_F4_V1.24.1” 版本的HAL库, 使用的是F4的库文件。 创建文件&#xff1a…...

Flask入门一(介绍、Flask安装、Flask运行方式及使用、虚拟环境、调试模式、配置文件、路由系统)

文章目录 一、Flask介绍二、Flask创建和运行 1.安装2.快速使用3.Flask小知识4.flask的运行方式 三、Werkzeug介绍四、Jinja2介绍五、Click CLI 介绍六、Flask安装 介绍watchdog使用python–dotenv使用(操作环境变量) 七、虚拟环境 介绍Mac/linux创建虚拟…...

CAD C# 批量替换当前图中块

本案例功能为选择当前文档中一个块(旧块),然后选择新图元(新块),运行插件后新块将替换图中所有的旧块。 效果如下: public static class Class1{//选取对象替换块定义[CommandMethod("TT&…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

OpenLayers 分屏对比(地图联动)

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL

ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...