论大数据仓库的事务处理之法
论大数据仓库的事务处理之法
李万鸿2020-10-25
这是一个大数据时代,几乎所有的好产品都离不开大数据的支持,人工智能更是如此。那么,建立数据仓库并使用其中的大数据有何困难呢?那就是事务问题,大数据一般是OLAP,而非OLTP,不具备事务管理功能,但实际使用时存在实时更新数据何查询数据的场景,因此,事务是必不可少的。这个给出一个简单的办法加以解决。
一.加锁原理和方法
Reids的redLock可以提供分布式锁,可以用来简单巧妙解决大数据的事务问题。对基于HIve、Clickhouse等大数据仓库,如果同时读写,可以采用RedLock进行事务控制。RedLock对某个操作提供分布式锁,对SQL语句中的执行加锁,如果写如数据库时,就不让读取数据,反之依然。
对于事务要求不高的场景来说,这是够用的,毕竟,大数据仓库不存在过于频繁的写入,大多是读取数据,所以这个方案是够用的。
举个例子,当根据数据库log实时ETL某个数据后,就需要对数据仓库DW进行更新,并更新DM主体数据库,而此时业务应用正在读取DM或DW的数据,为此,可以在更新写入DW、DM时加个锁,完毕后删除锁,读取数据时首先取锁,如果可以获取,就读数据,否则就等待,直到写入程序删除锁,才能获取锁,并完成读取,然后删除锁。写入也一样,需要先获取锁才能完成写入,否则需要等待读取完成并删除了锁,才可以拿到锁并进行写入,完成后删除锁,让其他程序可以写入或读取数据。
二.关键代码
@Slf4j
public class RedLockDemo {
public static void main(String[] args) {
//连接redis
Config config = new Config();
config.useSingleServer().setAddress("redis://127.0.0.1:6379");
RedissonClient redisson = Redisson.create(config);
log.info("连接Redis");
//1.定义锁
RLock lock = redisson.getLock("myTest001");
try {
//尝试加锁的超时时间
Long timeout = 300L;
//锁过期时间
Long expire = 30L;
//2.获取锁
if (lock.tryLock(timeout, expire, TimeUnit.MILLISECONDS)) {
//2.1.获取锁成功的处理
log.info("加锁成功");
//...do something read or write dw 、 dm
log.info("使用完毕");
} else {
//2.2.获取锁失败的处理
log.info("加锁失败");
log.info("其他处理");
}
} catch (InterruptedException e) {
log.error("尝试获取分布式锁失败", e);
} finally {
//3.释放锁
try {
lock.unlock();
log.info("锁释放成功");
} catch (Exception e) {
//do nothing...
}
}
//关闭连接
redisson.shutdown();
log.info("关闭redis连接");
}
}
三.不需要锁的情况
当没有写入只有读取的时候不需要锁,或只有写入没有读取的时候也不需要锁,为此需要加个判断量Flag,放在Redis,首先设为1表示读,2表示写,程序写或读的时候先取这个变量Flag,如果是读,而flag=1,就不需要锁;else flag=2 ,就需要拿锁。写的时候与此类似,如果是写,而flag=2,就不需要锁;else flag=1 ,就需要拿锁。
这样可以减少用锁,提高效率。
总之,大数据仓库的事务是不能忽视的,加RedLock锁是一个简单巧妙的解决办法,可以一试。
论大数据仓库的事务处理之法相关推荐
- 基于阿里云数加MaxCompute的企业大数据仓库架构建设思路
摘要: 数加大数据直播系列课程主要以基于阿里云数加MaxCompute的企业大数据仓库架构建设思路为主题分享阿里巴巴的大数据是怎么演变以及怎样利用大数据技术构建企业级大数据平台. 本次分享嘉宾是来自阿 ...
- Flume在企业大数据仓库架构中位置及功能
Flume在企业大数据仓库架构中位置及功能 hadoop 数据仓库 flume 数据仓库架构 1.如下图所示,外部数据中,关系型数据库导入到HDFS用sqoop,由Nginx产生的文件实时监控用Flu ...
- 大数据仓库技术实训任务2
大数据仓库技术实训--任务2 请按照要求完成以下内容: 1. 启动hadoop,hive start-all.sh hive 2. 在hive中创建数据库empdb和empdb1 create dat ...
- 九大数据分析方法:结构分析法
大家好,我是爱学习的小xiong熊妹. 今天继续跟小伙伴们分享九大数据分析方法系列--结构分析法.结构分析法是一种很简单的方法,也是数据分析是否入门的重要标志.一般没入门的人,对分析方法的掌握就到此为 ...
- 什么是大数据?漫谈大数据仓库与挖掘系统
什么是大数据?漫谈大数据仓库与挖掘系统 任何比较关注业界新闻的人,都会知道近两年数字信息领域的几个关键字: 移动端.LBS.SNS和大数据(Big Data).前边三个,大家应该是很熟悉的,因为身边早 ...
- 时间复杂度以及空间复杂度(大O的渐进表示法)
目录 1.算法效率 2.时间复杂度 2.1 时间复杂度的概念 2.2 大O的渐进表示法 3.空间复杂度 1.算法效率 算法效率分析分为两种:第一种是时间效率,第二种是空间效率. 时间效率被称为时间复杂 ...
- 300大作战怎么在电脑上玩 300大作战电脑版玩法教程
<300大作战>是一款根据300英雄改编而成的二次元MOBA竞技类对战游戏,在英雄的设定上,所有的人物均来自于二次元世界中的诸多作品,游戏继承了端游中的完美品质,且在玩法和交互上面更胜一筹 ...
- 6大思维管理方式分析法,绝对干货,超实用!
无论是在工作中还是生活中,都要时刻保持着清醒的头脑,所以,今天小编为大家带来了6大思维管理方式分析法,需要的赶紧来哦! 1. SWOT分析 SWOT分析具体是指:(1) S (strengths)是优 ...
- 小程序源码:仿各大APP种树-多玩法安装简单
这是一款仿各大APP的种树获取水果的一款微信小程序 可以对树浇水,杀虫,修剪等等 另外还有夺宝,更多小程序推荐 支持流量主模式等等 可以进行邀请好友加快树木的成长速度 小程序源码下载地址: 小程序源码 ...
- 大数据仓库技术实训任务3
大数据仓库实训-任务3 淘宝双11数据分析与预测 案例简介 淘宝双11数据分析与预测课程案例,涉及数据预处理.存储.查询和可视化分析等数据处理全流程所涉及的各种典型操作,涵盖Linux.MySQL.H ...
最新文章
- 深度学习会议论文不好找?这个ConfTube网站全都有
- html页面关闭前提示信息,【转】表单提交及关闭当前页面并刷新数据
- Android静态安全检测 - WebView明文存储密码
- Coursera ML笔记 - 神经网络(Learning)
- location驱动包_Zynq SDK 驱动探求(三):论一个外设驱动的全部身家·Xilinx SDK 驱动源码结构...
- 利用Zabbix ODBC monitoring监控MySQL
- CodeChef Chef and Churu [分块]
- css hover变成手_web前端入门到实战:彻底掌握css动画「transition」
- 04-numpy-笔记-transpose
- 训练日志 2018.9.5
- oracle vm传输,XML 传输 - Oracle VM Server for SPARC 2.0 管理指南
- SQL基础知识总结(SQL必知必会)
- MMA8452Q 三轴加速度传感器驱动
- Paragon ntfs2022轻松让mac读写NTFS格式磁盘移动硬盘U盘
- github网站进不去怎么办
- CVE-2017-12635+12636 复现+反弹shell
- Shapely——基础操作汇总
- quot;title_activity_distquot; is not translated in quot;zh-rCNquot; (Chinese: China)
- 无线AP 的频段(2.4GHZ or 5GHz)
- 【归档】证明V的三个子空间的并是V的子空间,当且仅当其中一个子空间包含另外两个子空间