18-04 数据库分布式架构

news2024/7/6 20:08:09

分布式ID

UUID

  • 优点:

    • 使用简单
    • 无需引入额外组件
  • 缺点

    • 无序,无法实现范围查询
    • 插入操作比自增ID性能差不少(大概四倍)
    • 建议用自增ID(表的主键) + UUID(唯一标识)

Redis

  • Incr指令
  • 优点:
    • 使用简单
    • 性能不错
  • 缺点
    • 需要引入额外组件
    • 强依赖Redis

利用数据库的自增能力

在这里插入图片描述

  • 优点:
    • 使用简单
    • 对代码没有侵入性
  • 缺点
    • 扩展性不佳
    • 非单调递增,只能趋势递增

号段模式

  • Spring的MySQLMaxValueIncrementer

  • 简单号段模式
    在这里插入图片描述
    在这里插入图片描述

  • 优点:取得号段之后,不再强依赖数据库

  • 缺点:趋势递增的,而非单调递增

类Snowflake算法

在这里插入图片描述
在这里插入图片描述

  • 优点:
    • 不依赖任何中间件
    • 性能好
    • 单调递增
  • 缺点:
    • 依赖时钟的一致性
    • 时钟回拨会有问题

分库分表中间件

  • 每个库只存储部分数据,如何根据查询条件路由到对应库
  • 一条语句可能要同时查询多个实例,才能获得最终结果
  • 跨库join:参与join的表,分别属于不同的数据库实例
  • MyCat教程

数据迁移

迁移数据的场景

  • 机房迁移,阿里云迁移到华为云
  • 系统重构,表结构发生重大变化
  • 分表调整
  • 更换数据库选型

迁移数据的诉求

  • 数据准确
  • 不能影响用户体验:中途不能停机

迁移的方案

挂从库

  • 在这里插入图片描述
  • 优点:
    • 迁移成本比较低
    • 操作简单
  • 缺点:
    • 有段时间不可写入
    • 只适合数据库选型不变,同时表结构不变的场景

双写

在这里插入图片描述

  • 优点:
    • 灵活,能满足各种业务场景
    • 不会停机
  • 缺点
    • 复杂度相对高
    • 要修改业务代码
    • 迁移周期相对长

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

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

相关文章

Hudi系列23:常见问题

文章目录 一. 存储一直看不到数据二. 数据有重复三. NoSuchMethodError3.1 问题描述3.2 解决方案3.2.1 查看源码3.2.2 avro版本问题3.2.3 hudi-flink1.14-bundle jar包的问题 四. Merge On Read 写只有 log 文件4.1 问题描述4.2 解决方案1(测试未通过)4.2 解决方案2(测试通过:)…

[LitCTF 2023]Flag点击就送!(cookie伪造)

随便输一个名字 尝试admin 但是我们在cookie里找到了一些东西 session:"eyJuYW1lIjoiYWRtaW4ifQ.ZGs1vw.7ikpuOhUtXxyB2UV-FH7UGIZkaE" 想到session伪造 先说一下session的作用: 由于http协议是一个无状态的协议,也就是说同一个用…

chatgpt赋能Python-pythonseries访问元素

Python Series: 访问元素 在Python中,我们可以使用列表(List)、元组(Tuple)和字典(Dictionary)等可迭代对象存储和处理数据。在处理这些可迭代对象时,我们经常需要对它们的元素进行…

【WSN覆盖】基于麻雀搜索算法的二维混合无线传感器网络覆盖优化 WSN覆盖空洞修复【Matlab代码#24】

文章目录 【可更换其他算法,获取资源请见文章第6节:资源获取】1. SSA算法2. WSN节点感知模型3. 混合WSN覆盖优化4. 部分代码展示5. 仿真结果展示6. 资源获取 【可更换其他算法,获取资源请见文章第6节:资源获取】 1. SSA算法 网上…

数字逻辑(计科专业)

半加器 用与非门实现 全加器 编码器 编码就是将信息装换成独特的代码或信号输出的电路 普通编码器:任何时候只允许输入一个有效编码信号,否则输出就会发生混乱。 优先编码器:允许同时输入两个以上的有效编码信号。当同时输入几个有效编码信…

【算法学习系列】05 - 对数器的说明与使用

文章目录 对数器说明对数器使用创建随机样本生成器实现 isSorted(int[] arr) 函数验证排序正确性实现选择排序算法进行大样本随机测试验证算法正确性 总结 对数器说明 在算法领域中,对数器指的是一个用于测试算法正确性的工具。对于一个需要被测试的算法A&#xff0…

Redis分片集群搭建及其原理

Redis分片集群搭建及其原理 1.Redis分片集群1.1.搭建分片集群1.2.准备实例和配置1.3.启动1.4.创建集群1.5.测试 2.散列插槽原理2.1.插槽原理2.2.小结 3.集群伸缩3.1.需求分析3.2.创建新的redis实例3.3.添加新节点到redis3.4.转移插槽 4.故障转移4.1.自动故障转移4.2.手动故障转…

十三、进程信号

文章目录 一、什么是信号二、信号列表(一)查看系统定义的信号列表 三、信号处理四、信号产生(一)通过终端按键产生信号1.什么是核心转储?2.核心转储功能有什么用?3.core dump标志 (二&#xff0…

计算机论文写作入门

什么是顶会 顶级会议一般是,在业界(本领域本方向)受到广泛的承认,影响力较大的会议。一方面一般顶级专家、学者都倾向于将paper投到这些 会议;另一方面这些会议的论文代表了该领域的目前很优秀、有重大意义的进展。"顶级会议"的投稿竞争压力一般都很大,属于在经典 p…

05. 数据结构之队列

前言 队列(queue)是一种线性数据结构,队列中的元素只能先入先出(First In First Out,简称 FIFO)。队列和实际生活中的排队相对应,是一种和生活息息相关的数据结构,在很多系统中都会…

MATLAB 之 其他形式的二维图形

文章目录 一、对函数自适应采样的绘图函数二、其他坐标系下的二维曲线图1. 对数坐标函数2. 极坐标图 三、其他特殊二维图像1. 条形类图形2. 面积类图形3. 散点类图形4. 矢量类图形 二维图线除采用直角坐标系外,还可采用对数坐标或极坐标。除了绘制二维曲线外&#x…

大环境不好难找工作?三面阿里,幸好做足了准备,已拿offer

大环境不好难找工作?三面阿里,幸好做足了准备,已拿offer 三面大概九十分钟,问的东西很全面,需要做充足准备,就是除了概念以外问的有点懵逼了(呜呜呜)。回来之后把这些题目做了一个分…

软件测试学习规划(学习思路、学习方法、面试技巧、后期发展、职业规划等)

软件测试学习思路 1、基础知识、理论知识(用例编写,测试方法,用例管理),测试思维的学习,很多人不屑理论,一股劲的扎进测试工具里面。最大的误区,工具永远学不完,测试必须…

【Node.js搭建服务器】使用Nodejs搭建简单的HTTP服务器----公网远程访问

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

C++入门--auto关键字、内联函数学习

目录 1.auto关键字(C11)1.1auto简介1.2auto的使用细则1.3auto函数不能推导的场景1.auto不能作为函数的参数2.auto不能直接用来声明数组 2.基于范围的for循环(C)2.1范围for循环的语法2.2使用auto的for循环2.3基于for循环的使用条件…

【linux网络】firewalld 防火墙

firewalld防火墙 一、firewalld防火墙1.1firewalld防火墙概述1.2firewalld与iptables的区别1.3Firewalld网络区域1.4firewalld数据处理的流程1.5firewalld防火墙的配置方法 二、firewall-cmd的命令选项2.1默认区域2.2网卡接口增删改查区域2.3源地址增删改查区域2.4区域规则的增…

接口测试之测试原则、测试用例、测试流程......

之前都是在网上杂乱得看了很多接口测试的资料,但总感觉不够系统,特地找了本书重新系统的学习一下,结合之前收集的一些资料查漏补缺。 《接口自动化测试持续集成postman》,这本大部分内容还是讲的是 postman 工具的使用方法&#…

spark应用程序的执行

1 SparkContext -》{ sparkconf --配置对象,基础配置 sparkEnv --环境对象,通讯环境 SchedulerBackend --通讯后台 住哟啊用于和Executor之间进行通讯 TaskScheduler – 任务调度器 任务调度 DAGScheduler – 阶段调度器 阶段划分 } spark.sparkContext…

贪心算法专练

⭐️前言⭐️ 本篇文章主要分享几道贪心算法的题目,贪心算法是一种基于自然智慧的算法,这类题目并没有统一的解法,但通常都是每一步做出一个局部最优的选择,最终的结果就是全局最优。 🍉欢迎点赞 👍 收藏 …

图神经网络:(化学领域)再次认识图神经网络

文章说明: 1)参考资料:PYG官方文档。超链。 2)博主水平不高,如有错误还望批评指正。 3)我在百度网盘上传了这篇文章的jupyter notebook和有关文献。超链。提取码8848。 文章目录 Mutagenicity数据集搭建模型训练模型文献阅读重新回来 Mutagen…