
DB技术&&数仓技术
hadoop && spark && hbase等
coder andy
腾讯研发高工,致力于前沿技术的研究,大规模互联网后台架构、大规模金融中后台架构、支付与证券中后台架构、云paas、iaas架构、下一代网络技术、云网络技术、网络模拟技术、网络安全技术、虚拟化技术等技术、区块链技术、大模型技术等等。
展开
-
事务隔离级别详解
原创 2021-07-15 23:52:11 · 199 阅读 · 0 评论 -
事务并发过程中脏读、幻读、不可重复读
事务并发会带来什么问题1)脏读读取了其他并发事务未提交的数据,就会出现脏读问题2)不可重复读3)幻读这里的定义基于sql1992标准https://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt原创 2021-07-15 23:40:17 · 216 阅读 · 0 评论 -
mysql事务隔离剖析LBCC(Lock Model)
文章目录1、事务隔离实现方式2、MVCC1、事务隔离实现方式mysql是LBCC和MVCC共用的MVCC是针对LBCC的一个衍生,也就是针对行级锁的一个衍生2、MVCC先看MVCC官网上对innodb锁的方式进行了一个划分这些包含了对不同维度的划分,所以这些是有交集的,不是非黑即白的。意向锁不是用来锁定数据的,而是用来判断有没有已经锁定的数据意向锁是数据库自己创建的,当我们创建排他锁、共享锁的时候,数据库自己创建的,用来判断数据库中有没有被锁定的数据,像是一盏明灯一样如果没有原创 2021-07-15 23:27:13 · 322 阅读 · 0 评论 -
数据库的锁LBCC
文章目录1、record locks2、gap locks3、next-key locks1、record locks记录锁就是一个事务select了一行数据,那么就锁住了,如果另一个事务再去select这一行,那么就select不了,但是它可以select其他行的数据。2、gap locks间隙锁比如select xxx from xxx where xxx >15那么就命中了(11,+oo),其实12 13 这些都是会被锁的那么其他事务想要访问就访问不了。3、next-key l原创 2021-07-15 23:06:44 · 322 阅读 · 0 评论 -
MVCC底层原理
文章目录1、现象2、sql演示3、原因分析1、现象如图三个并发性事务2、sql演示事务c的行为会进行autocommit事务B执行Q1 age是20最后事务A执行Q2的时候,age还是18岁3、原因分析此时事务B去修改update的时候,一定是会有一个"当前读"的操作,会读取数据库此时最大的版本,也就是读取了1002的版本,age=19等,解决了大容量存储和负载均衡的问题,高度追求高性能和扩展性。特别适合以文件为载体的在线服务,如相册万盏、视频网站等等。 FastDFS是由纯C语言实现,支持Linux,FreeBSD的NUIX系统。类google转载 2017-12-11 21:49:17 · 454 阅读 · 1 评论 -
分布式锁的比较
目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。”所以,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致转载 2017-12-25 18:25:07 · 322 阅读 · 1 评论 -
pandaroboot使用
pandaro boot实际上是spring boot的封装。1,集成了mybatis技术;2,同时能在aone生成项目的时候能够同时使用tddl,hsf等,相当于一个能和很多种工具一起,简便的开发出符合多要求的web后端项目;3,如果需要安全等验证功能,在aone上生成项目的时候勾选就行了;上诉是目前使用时候的一些体会,立个flag,日后慢慢补充。原创 2017-10-15 23:51:13 · 595 阅读 · 0 评论 -
dubbo相关总结
1. Dubbo是什么? 互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的。现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应。介绍Dubbo背景 大规模服务转载 2017-10-02 19:25:16 · 1280 阅读 · 1 评论 -
hsf使用总结
hsf是淘宝三个中间件之一(notify,tddl,hsf),其实就是一个高度封装的rpc框架。和opendaylight一样,核心是osgi,容器接入层可以是tomcat jboss,协议栈是rpc等,应用层是hsfSpringProviderBean等,还有核心服务层和日志监控等功能。原创 2017-09-28 20:57:29 · 3220 阅读 · 0 评论 -
实现从oss(阿里云)服务器以附件形式下载文件(含批量下载)
笔者在项目中写一个从阿里云服务器上面以附件形式下载文件的接口时,遇到了问题,网上搜索无任何相关的解决方案,最后通过通过自己查阅API文档,再结合自己的经验,实现了下载功能。 通过查询oss官方文档,我发现只有一个下载文件到本地的方法(方法1),但是这个方法下载的文件只能够将文件下载到本地的一个固定的目录下,即必须要在API提供的方法中写死下载文件的下载路径,而且下载文件时没有任何转载 2017-09-27 15:39:05 · 8082 阅读 · 2 评论 -
mysql批量插入优化
对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,可能每天花费在数据导入上的时间就会长达几个小时之久。因此,优化数据库插入性能是很有意义的。 网络上的牛人很多,总会有一些手段可以提高insert效率,大家跟我一起分享一下吧: 1. 一条SQL语句插入多条数据。 我们常用的插入语句大都是一条一个转载 2017-06-23 11:38:15 · 517 阅读 · 0 评论 -
redo_log与bin_log区别
(书摘备查)首先,二进制日志会记录所有与MySQL数据库有关的日志记录,包括InnoDB、MyISAM、Heap等其他存储引擎的日志。而InnoDB存储引擎的重做日志只记录有关该引擎本身的事务日志。其次,记录的内容不同。无论用户将二进制日志文件记录的格式设为STATEMENT还是ROW,又或是MIXED,其记录的都是关于一个事务的具体操作内容,即该日志是逻辑日志。而InnoDB存储转载 2017-06-20 01:09:43 · 766 阅读 · 0 评论 -
innodb存储引擎实现
Write-Ahead Logging ,WAL:预写日志方式 【1】Redo Log 在Innodb存储引擎中,事务日志是通过redo和innodb的存储引擎日志缓冲(Innodb log buffer)来实现的,当开始一个事务的时候,会记录该事务的lsn(log sequence number)号; 当事务执行时,会往InnoDB存储引擎的日志 的日志缓存里面插入事务日志;当事转载 2017-06-19 23:45:09 · 573 阅读 · 0 评论 -
mysql中的共享锁和排他锁
在 MySQL中的行级锁,表级锁,页级锁 中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突。行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁及排他锁的概念、使用方式及注意事项等。共享锁(Share Lock)共享锁又称读锁,是读取操作创建的锁。其他用户可以并发读取数据,但任何事务都不能对数据进行修改(获取数据上的排他锁),直到已释放所有共享锁。转载 2017-06-19 21:38:50 · 497 阅读 · 0 评论 -
数据库连接池原理
谈谈数据库连接池的原理 帅宏军 这次我们转载 2017-05-29 15:45:29 · 514 阅读 · 0 评论 -
Lateral View
语法定义:lateralView: LATERAL VIEW udtf(expression) table AS columns(',', columns)*fromClause: FROM baseTable (lateralView)*描述:Lateral view 通常和split, explode等udtf一起封装使用,它能够将一行数据拆分成多行数据,在此基础上可以对拆分后原创 2017-03-13 22:53:41 · 6286 阅读 · 0 评论 -
coalesce
用途:返回列表中第一个非null的值,如果列表中所有的值都是null则返回nullcoalesce(expr1, expr2, ...)参数说明:expri是要测试的值,所有这些值类型必须相同,或为null, 否则会引发异常。返回值:返回值类型和参数类型相同。备注:参数至少要有一个,否则返回异常。原创 2017-03-13 22:38:50 · 426 阅读 · 0 评论 -
sql的aggregate
合计函数(Aggregate functions)Aggregate 函数的操作面向一系列的值,并返回一个单一的值。注释:如果在 SELECT 语句的项目列表中的众多其它表达式中使用 SELECT 语句,则这个 SELECT 必须使用 GROUP BY 语句!AVG(column):返回某一列的平均值select Avg(age) from table_name w转载 2017-02-15 15:36:54 · 899 阅读 · 0 评论 -
groupby随笔
1、概述“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。2、原始表3、简单Group By示例1select 类别, sum(数量) as 数量之和from Agroup by 类别返回结果如下表,实际上就是分类汇转载 2016-10-20 10:41:58 · 769 阅读 · 0 评论 -
基于golang的slice /tumbling window流处理器
针对数据量不大,但流处理业务逻辑繁多的场景,没有需要引入flink那种很重的分布式计算框架的需求而golang的协程模式,天然适合处理多流并发读的场景,因此,最近做了个小工具,基于超时队列技术实现流计算的 slice window、tumbling window本文主要分享特定场景的处理思路,有需要源码的可私聊~...原创 2019-04-24 16:09:14 · 523 阅读 · 0 评论 -
阿里的blink
蒋晓伟认真而严谨,在加入阿里之前,他曾就职于西雅图的脸书,负责过调度系统,Timeline Infra和Messenger的项目。而后在微软的SQL Server引擎担任过Principal Engineer,负责关系数据库的架构工作。2014年加入阿里以后,作为阿里搜索事业部资深搜索专家,他负责搜索工程的数据团队。在7月19-21日20:00-21:30 的首届阿里巴巴在线技转载 2017-03-02 18:02:50 · 4307 阅读 · 0 评论 -
oracle后台进程以及large pool
large pool用来分配大内存快,用来处理shared pool更大的内存,是做备用池,用以缓解oracle对共享池和pga区内存的使用压力使用large pool的对象主要有:多线程服务器MTS:在SGA的large_pool中分配UGA语句的并行查询parallel exection:用作进程间的消息缓冲器恢复管理器rman:备份时用作磁盘io缓冲器查看larg原创 2016-10-04 19:22:42 · 2161 阅读 · 0 评论 -
sga中的各种池(pool)
data_buffer_cache用来保存频繁访问的数据的内存缓冲区域,以便oracle用户进程需访问某块数据而首先到data_buffer_cache中来寻找时能够找到(cache hit),从而大大减少从磁盘读取数据所需要的io时间oracle以hash算法快速定位所需要命中缓存快clean buffer在hash chain(hash bucket)上是否存在;oracle以wr原创 2016-10-01 12:30:14 · 1398 阅读 · 0 评论 -
oracle内存结构
oracle内存结构实例instance:启动的数据库,运行在内存中的数据库,是内存中数据库的映射,管理数据库正常运行在os中以oracle_sid标识,在db中以instance_name标识;组成(System global area + background process);查看实例名:host set | grep ORACLE_SIDshow parameter原创 2016-10-01 11:09:58 · 380 阅读 · 0 评论 -
plsql
pl/sql程序化扩展语言比如往表里面插入100万行数据就需要plsqldeclare 变量声明begin 程序主体exception 例外处理end; 程序结束select 语句必须接into,且结果只允许返回单条记录,为空或为多条均报错标识符就是一个对象,比如constant常量,variable变量,exception异常,cursor游标指针,可以存原创 2016-09-30 23:11:34 · 342 阅读 · 0 评论 -
plsql/sql3-各种约束
层次/递归/分级/结构查询如何查询总经理-部门经理-主管-员工的员工层次关系?select Ipad(ename,length(ename)+(level*2)-2,'_') as hierarchyfrom empstart with ename='KING' and mgr is nullconnect by prior empno=mgr;如何查询scott用原创 2016-09-30 22:21:41 · 3157 阅读 · 0 评论 -
sql与plsql2
sql:结构化查询语言数据定义DDL 数据定义语句create alter drop truncate--清空表,只是数据的清空 grant--数据权限 revoke--回收权限... 其中ddl是不能回滚的数据操作DML数据操作语言select insert update delete lock table,...这些语句是可以回滚的,数据控制DCL数据控制语句commi原创 2016-09-30 18:11:06 · 355 阅读 · 0 评论 -
sql/PLsql基础1
sqlplus内部命令select * from scott.emp where sal>2000 order by ename;l 列出上一条命令l 2 列出上一条命令的第二行l 1 2 列出上一条命令的第一行到第二行i order by sal 在当前行后增加一行del 3 删掉第三行/ 执行c/by sal/by abc 修改当前行指定字串,这里把sal改成a原创 2016-09-30 13:50:40 · 501 阅读 · 0 评论 -
scala的apply
Scala 是构建在 JVM 上的静态类型的脚本语言,而脚本语言总是会有些约定来增强灵活性。灵活性可以让掌握了它的人如鱼得水,也会让初学者不知所措。比如说 Scala 为配合 DSL 在方法调用时有这么一条约定:在明确了方法调用的接收者的情况下,若方法只有一个参数时,调用的时候就可以省略点及括号。如 “0 to 2”,实际完整调用是 “0.to(2)”。但 “println(2)” 不转载 2017-05-30 18:18:45 · 376 阅读 · 0 评论 -
scala中的tuple1,2,3
通过下标_n取数据不多说了,下面是几个比较有意思的知识点 知识点1、Tuple 和Function 和Producct一样最多只支持22个元素 比如 (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21) 这样是没问题的 但是(0,1,2,3,4,5,6,7,8,9,10,11,12,13转载 2017-05-30 17:57:03 · 5635 阅读 · 0 评论 -
scala隐式转换
简单说,隐式转换就是:当Scala编译器进行类型匹配时,如果找不到合适的候选,那么隐式转化提供了另外一种途径来告诉编译器如何将当前的类型转换成预期类型。本文原文出处: http://blog.youkuaiyun.com/bluishglc/article/details/50866314 严禁任何形式的转载,否则将委托优快云官方维护权益!隐式转换有四种常见的使用场景:将某一类型转换成预期类转载 2017-05-28 15:24:13 · 477 阅读 · 0 评论 -
scala的模式匹配
首先,我们要在一开始强调一件很重要的事:Scala的模式匹配发生在但绝不仅限于发生在match case语句块中,这是Scala模式匹配之所以重要且有用的一个关键因素!我们会在文章的后半部分详细地讨论这一点。本文原文出处: http://blog.youkuaiyun.com/bluishglc/article/details/51056230 严禁任何形式的转载,否则将委托优快云官方维护权益!转载 2017-05-28 15:03:44 · 433 阅读 · 0 评论 -
scala的闭包
闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量。闭包通常来讲可以简单的认为是可以访问一个函数里面局部变量的另外一个函数。如下面这段匿名的函数:val multiplier = (i:Int) => i * 10 函数体内有一个变量 i,它作为函数的一个参数。如下面的另一段代码:val multiplier = (i:Int) => i * factor转载 2017-05-28 14:47:08 · 345 阅读 · 0 评论 -
scala的lazy
Scala中使用关键字lazy来定义惰性变量,实现延迟加载(懒加载)。惰性变量只能是不可变变量,并且只有在调用惰性变量时,才会去实例化这个变量。在Java中,要实现延迟加载(懒加载),需要自己手动实现。一般的做法是这样的:public class LazyDemo { private String property;public String getProperty()转载 2017-05-26 18:25:35 · 599 阅读 · 0 评论 -
trident
英文原址:https://github.com/nathanmarz/storm/wiki/Trident-tutorial----------------Trident是在storm基础上,一个以realtime 计算为目标的高度抽象。 它在提供处理大吞吐量数据能力的同时,也提供了低延时分布式查询和有状态流式处理的能力。 如果你对Pig和Cascading这种高级批量处理转载 2016-10-25 23:53:47 · 803 阅读 · 0 评论 -
计算广告的指标
CTR:click through rate。 点选广告的次数除以广告索阅的次数. 点选(click):网友在「点选」(click)广告后,通常会连结到广告主的网页,获得更多的产品讯息,而点选次数(click through)除以广告曝光总数,可得到「点选率」(ctr, click through rate),这项指标也可以用来评估广告效果.VTR Vie原创 2016-10-09 15:05:25 · 2947 阅读 · 1 评论 -
storm批处理事物原理
对于容错机制,storm通过一个系统级别的组件acker,结合xor校验机制判断一个tuple是否发送成功,进而spout可以重发该tuple,保证一个tuple在出错的情况下至少被重发一次。但是在需要精确统计tuple的数量如销售额场景时,希望每个tuple被且仅被处理一次,storm 0.7.0引入了transactional topology,它保证每个tuple被且仅被处理一次,这样我原创 2016-10-08 19:31:04 · 2471 阅读 · 0 评论 -
storm集群统一启动和停止shell脚本开发
Hadoop集群start-all.sh 启动全部进程stop-all.sh停止如果用cdh版本+cloudera manager界面化管理的话,直接在界面上点击按钮即可原理:通果ssh执行远程shell脚本storm停止进程Kill -9shell脚本开头:#!/bin/bash./etc/profile以前就是直接去ui看executor下面是哪原创 2016-10-08 14:54:52 · 9791 阅读 · 2 评论 -
storm计算网站UV(去重计算模式)
需求分析:UV统计方案分析:1,传统的方式是把session_id放入Set实现自动去重,Set.size()获得UV,但是这种方式只能在单机上有效2,可行的方案(类似WordCount的计算去重word总数):bolt1通过fieldGrouping进行多线程局部汇总,下一级bolt2进行单线程保存session_id和count数到Map且进行遍历,可以得到:PV,UV原创 2016-10-08 11:31:53 · 4432 阅读 · 0 评论