IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 业务主键多维度多值情况下如何保证数据唯一性?(示例纯属虚构,如有雷同纯属巧合) -> 正文阅读

[大数据]业务主键多维度多值情况下如何保证数据唯一性?(示例纯属虚构,如有雷同纯属巧合)

目录

背景

示例:

发展历程:

单表唯一索引

新增业务锁表

重整旗鼓

终局(上价值):


背景

为了保证数据质量,防止重复数据对业务数据进行污染。所以我们一般在写数据时,需要做防重校验。例如新增接口时,为了保证接口的幂等。

示例:

目前需要保证同一个姓名+手机号+性别,不重复。路由key 是姓名。

发展历程:

单表唯一索引

这不是很简单么,对这几个字段加上唯一索引不就OK了么。

几天后,测试同学突然来反馈说发现了重复数据。不可能呀,唯一索引都加上了咋还会重呢。不可能。

经过半小时的查看,突然发现重复数据为以下情况。

居然还有这种情况。。。

新增业务锁表

既然合并在一起会失效,那么单独出来存储,总不会错了吧。所以单独新增锁表(路由key=uuid)。如下:

几天之后,测试同学又来反馈问题了,这个数据还是有重复呀。(这个测试可真厉害)

通过排查发现出现了以下数据

?这是咋回事呀。明明第一次张三同学就写入了两个手机号呀,怎么锁表里面只有一条数据呢。马上查看了日志。发现由于业务表(姓名)、锁表(UUID)。这两个表同时保存数据的时候,无法保证事务。所以凉凉。

难度要上分布式事务么,不科学呀,分布式事务那么重,要是给加上,不是又得再进行几轮性能优化吗。应该咋整呢?

重整旗鼓

梳理下思路,目前我们主要做防重,防重的方案有

1、数据库唯一索引(行不通)

2、每次写之前先查一次数据是否存在(并发情况下,没法控制数据写入)

第一条路,目前是卡住了,能不能走走第二条路呢?第二种情况主要是并发的情况下会有问题,能不能把并发这个问题给解决了呢。

解决并发的两条路:

1、将数据库的隔离级别调整为序列化(所有请求单线程处理,性能影响极大)

2、加入分布式锁,对某些固定资源进行加锁处理。防止并发造成问题。

第二条路看似是可行的,可是加锁容易,那什么时候释放锁呢。普通情况都是业务逻辑操作完就释放锁了。但是目前业务数据和锁数据可没法保证事务呀。

插图

必须得等到锁数据完全写成功之后,才能释放锁,那么怎么知道锁数据完全写入成功了呢?

既然同步没法搞定,能不能想想别的招呢?这时,最终一致性突然跳出来了。

最终一致性:这个概念是在学习分布式事务时学到的。既然不能用2PC,3PC这种重的流程。那么咱们可以采用异步重试机制呀。

终局(上价值):

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 20:57:41  更:2022-03-21 20:59:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:28:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码