大数据
文章平均质量分 92
一缕阳光a
(1)、从2018年8月开始从事分布式数据库内核开发工作,包括自研分布式分析型数据库OLAP、自研分布式数据库HTAP,根据开源数据库实现本公司集群型的OLTP产品,以及现在正在做的根据opengaussDB开发的HTAP类型数据库。
(2)、乐于专研,对分布式数据库有强烈的兴趣。
个人邮箱: zgaoq@163.com。
展开
-
分布式事务2PC、3PC模型
工作中使用最多的是本地事务,但是在对单一项目拆分为 SOA、微服务之后,就会牵扯出分布式事务场景文章以分布式事务为主线展开说明,并且针对 2PC、3PC 算法进行详细的讲解,最后通过一个 Demo 来更深入掌握分布式事务,文章目录结构如下 什么是事务 什么是分布式事务 DTP 模型和 XA 规范 什么是 DTP 模型 什么是 XA 规范 2PC 一致性算法 2PC-准备阶段 2PC-提交阶段转载 2021-03-26 18:36:49 · 326 阅读 · 0 评论 -
Elasticsearch是如何做到快速索引的
最近在参与一个基于Elasticsearch作为底层数据框架提供大数据量(亿级)的实时统计查询的方案设计工作,花了些时间学习Elasticsearch的基础理论知识,整理了一下,希望能对Elasticsearch感兴趣/想了解的同学有所帮助。 同时也希望有发现内容不正确或者有疑问的地方,望指明,一起探讨,学习,进步。介绍Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎.Elasticsearch 是一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引.转载 2021-03-19 17:43:38 · 168 阅读 · 0 评论 -
Presto基本概念
Presto基本概念Presto是Facebook开源的MPP SQL引擎,旨在填补Hive在速度和灵活性(对接多种数据源)上的不足。相似的SQL on Hadoop竞品还有Impala和Spark SQL等。这里我们介绍下Presto的基本概念,为后续的笔记做基础。Operator Model & Iterator ModelMPP(Massive Parellel Processing)系统的鼻祖是一个叫Volcano的并行数据库(论文在此),它提出了一种并行执行SQL的设计,即通过转载 2020-11-12 20:38:47 · 424 阅读 · 0 评论 -
presto领读 查询引擎翻译
原文链接:https://prestodb.io/docs/current/overview/concepts.html#data-sources最近在看presto-分布式SQL查询引擎的代码,使用翻译工具翻译了一版,有些概念比较难以理解,整理如下:一、概览虽然很容易理解语句和查询,但作为最终用户,您应该熟悉一些概念,例如stage和split,以充分利用Presto执行有效的查询。作为一个Presto管理员或一个Presto贡献者,您应该理解Presto的阶段映射到任务的概念..翻译 2020-11-12 20:37:08 · 165 阅读 · 0 评论 -
深入理解Presto
深入理解Presto阿里云日志服务已关注50 人赞同了该文章简介Presto是一个facebook开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。presto的架构由关系型数据库的架构演化而来。presto之所以能在各个内存计算型数据库中脱颖而出,在于以下几点:清晰的架构,是一个能够独立运行的系统,不依赖于任何其他外部系统。例如调度,presto自身提供了对集群的监控,可以根据监控信息完成调度。 简单的数据结构,列式存储,逻辑行,大部分数据都可以轻易转载 2020-11-05 17:47:49 · 1103 阅读 · 1 评论 -
Presto入门介绍
最近在调研presto查询引擎的模块,先了解了下大体的框架和基本知识。这篇文章适合入门的童鞋看,因此转载了,用于以后查询使用。1,Presto基本认识1.1 定义Presto是一个分布式的查询引擎,本身并不存储数据,但是可以接入多种数据源,并且支持跨数据源的级联查询。Presto是一个OLAP的工具,擅长对海量数据进行复杂的分析;但是对于OLTP场景,并不是Presto所擅长,所以不要把Presto当做数据库来使用。和大家熟悉的Mysql相比:首先Mysql是一个数据库,具有存储和计...转载 2020-11-05 15:39:42 · 268 阅读 · 1 评论 -
在leveldb中,为什么要有immutable memtable?
目的是:为了防止写入kv时被阻塞。设想,如果没有immutable memtable,当memtable满了之后后台线程需要将memtable 立即flush到新建的sst中,在flush的过程中,新的KV记录是无法写入的,只能等待,就会造成新写入的KV记录被阻塞。盗一个其他人的图如下:延伸:在leveldb中只有两个memtable:memtable和immutable memtable;但是在rocksdb中,memtable的数量是可以配置的,当memtable中的数据量超过设定值后,原创 2020-10-23 19:49:19 · 779 阅读 · 1 评论 -
leveldb中为什么L 0层中每个sst文件中key的范围都是有重叠的?
在leveldb中,level 0层中的sst文件是由immutable memtable通过后台线程flush得到的,但是由于immutable memtable中的key可能是由重复的,因此在leveldb中将sst文件中key的范围有重叠的所有sst文件都放在了level 0层中,而其他level层中sst文件中的key不会有重复的。下面的图使用了其他作者的图,如下:这样在查询的时候,将读放大的倍数都放在了level 0层中。...原创 2020-10-23 19:39:07 · 756 阅读 · 1 评论 -
聊透分布式系统一致性
一、强一致性一致性大家庭中,虽然细分种类很多,但是实际上只有两大类,其中之一就是强一致性,其具体包含了严格一致性(也叫原子一致性或者线性一致性)和顺序一致性。 严格(原子/线性)一致性 严格一致性代表着,当数据更新后,所有Client的读写都是在数据更新的基础上。如下图所示,我们假设每份数据有三个副本,分别落到三个节点上。当Client1尝试将X的值置为1时,严格一致性要求当Client1完成更新操作以后,所有Client都要在最新值的基础上进行读写,这里的Client10读取到的.转载 2020-10-12 20:50:35 · 413 阅读 · 0 评论 -
每个大数据工程师都应该知道的OLAP 核心知识点
转载:https://mp.weixin.qq.com/s/I2WqQoGwK7LRrpB4R2pobw很值得学习的一篇文章,不适用于初学者,适用于中级或者进阶高级的大数据工程师OLAP 系统广泛应用于 BI, Reporting, Ad-hoc, ETL 数仓分析等场景,本文主要从体系化的角度来分析 OLAP 系统的核心技术点,从业界已有的 OLAP 中萃取其共性,分为谈存储,谈计算,谈优化器,谈趋势4 个章节。01谈储存列存的数据组织形式行存,可以看做 N...转载 2020-10-12 20:49:28 · 689 阅读 · 2 评论 -
Parquet格式描述
背景2010年 google 发表了一篇论文《Dremel: Interactive Analysis of Web-Scale Datasets》,介绍了其 Dermel 系统是如何利用列式存储管理嵌套数据的,嵌套数据就是层次数据,如定义一个班级,班级由同学组成,同学的信息有学号、年龄、身高等。Parquet 是 Dremel 的开源实现,作为一种列式存储文件格式,2015年称为 Apache 顶级项目,后来被 Spark 项目吸收,作为 Spark 的默认数据源,在不指定读取和存储格式时,默认读转载 2020-08-27 14:08:28 · 579 阅读 · 0 评论 -
MySQL buffer pool里的三种链表和三种page
mysql buffer pool里的三种链表和三种pagebuffer pool是通过三种list来管理的1) free list2) lru list3) flush listbuffer pool中的最小单位是page,在innodb中定义三种page1) free page :此page未被使用,此种类型page位于free链表中2) clean page:此page被使用,对应数据文件中的一个页面,但是页面没有被修改,此种类型page位于lru链表中3) dirty p.转载 2020-08-17 14:42:04 · 751 阅读 · 0 评论 -
mysql innodb缓存策略之Buffer Pool
The InnoDB Buffer Pool Innodb 持有一个存储区域叫做buffer pool是为了在内存中缓存数据和索引,知道innodb bufferpool怎么工作,和利用它读取频繁访问的数据,是mysql优化重要的方面。 理想状况下,把bufferpool的大小调整到足够大,留下足够的内存空间给其他该服务器上的进程(使其无缺页即可)。bufferpool越大,innodb 月表现为内存型数据库,从硬盘上一次读取数据,之后并成了从内存中读取数据。buffer pool甚至缓存那...原创 2020-08-12 11:11:54 · 375 阅读 · 0 评论 -
MySQL主从复制作用和原理
该文章是转载的,但是原文中有些描述的不准确,进行了修改。一、什么是主从复制?主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。二、主从复制的作用1、做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。2、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。3、读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部转载 2020-08-07 11:34:52 · 407 阅读 · 0 评论 -
含有5亿个整数的大文件,如果排序?
给你1个文件bigdata,大小4663M,5亿个数,文件中的数据随机,如下一行一个整数:61963023557681612158020393452095006174677379343122016371712330287901712966901...7005375现在要对这个文件进行排序,怎么搞?内部排序先尝试内排,选2种排序方式: privatefinalint cutoff = 8; public void perform(Comparable[..转载 2020-08-06 14:55:55 · 301 阅读 · 0 评论 -
谓词/表达式下推
什么是谓词首先我们要了解什么是谓词。谓词,用来描述或判定客体性质、特征或者客体之间关系的词项。根据《现代汉语》的定义汉语的谓词包括动词和形容词。在SQL中,谓词就是返回boolean值即true和false的函数,或是隐式转换为bool的函数。SQL中的谓词主要有 LKIE、BETWEEN、IS NULL、IS NOT NULL、IN、EXISTS接下来了解什么是谓词下推谓词下推的基本思想即:将过滤表达式尽可能移动至靠近数据源的位置,以使真正执行时能直接跳过无关的数据。..转载 2020-07-15 15:30:45 · 309 阅读 · 0 评论 -
skiplist原理与实现
今天继续介绍分布式系统当中常用的数据结构,今天要介绍的数据结构非常了不起,和之前介绍的布隆过滤器一样,是一个功能强大原理简单的数据结构。并且它的缺点和短板更少,应用更加广泛,比如广泛使用的Redis就有用到它。SkipList简介SkipList是一个实现快速查找、增删数据的数据结构,可以做到O(logN)O(logN)复杂度的增删查。从时间复杂度上来看,似乎和平衡树差不多,但是和平衡树比较起来,它的编码复杂度更低,实现起来更加简单。学过数据结构的同学应该都有了解,平衡树经常需要旋转操作..转载 2020-06-13 18:53:33 · 485 阅读 · 0 评论 -
bloom filter
今天的文章和大家一起来学习大数据领域一个经常用到的算法——布隆过滤器。如果看过《数学之美》的同学对它应该并不陌生,它经常用在集合的判断上,在海量数据的场景当中用来快速地判断某个元素在不在一个庞大的集合当中。它的原理不难,但是设计非常巧妙,老实讲在看《数学之美》之前,我也没有听说过这个数据结构,所以这篇文章也是我自己学习的笔记。 原理在我之前的理解当中,如果想要判断某个元素在不在集合当中,经典的结构应该是平衡树和hash table。但是无论是哪一种方法,都逃不开一点,都需要存储原值...转载 2020-06-13 14:56:42 · 167 阅读 · 0 评论 -
LSM Tree
今天给大家分享的内容是LSM树,它的英文是Log-structed Merge-tree。看着有些发怵,但其实它的原理不难,和B树相比简直算是小儿科了。并且这也是一个非常经典的数据结构,并且在大数据系统当中有非常广泛的应用。有许多耳熟能详的经典系统,底层就是基于LSM树实现的。因此,今天就和大家一起来深入学习一下它的原理。背景知识首先,我们先从背景知识开始。我们之前介绍B+树的时候说过,B+树和B树最大的不同就是将所有的数据都放在了叶子节点。从而优化了我们批量插入以及批量查询的效率,而优化的核心转载 2020-06-13 14:29:44 · 347 阅读 · 0 评论 -
HDFS的Block size的默认大小
今天无意中听到了同事说关于HDFS中每个block的大小,特意查了下:从Hadoop的官网上看了各个版本的说明文档中关于 Data Blocks 的说明,发现是从2.7.3版本开始,官方关于Data Blocks 的说明中,block size由64 MB变成了128 MB的。以下是相关连接:Hadoop 1.2.1Hadoop 2.7.2Hadoop 2.7.3Hadoop 2.9.1...原创 2020-06-01 19:15:58 · 7883 阅读 · 0 评论 -
InnoDB一棵B+树可以存放多少行数据?
一个问题?InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛。在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是4k,而对于我们的InnoDB存储引擎也有自己的最小储存单元——页(Page),一转载 2020-05-09 10:23:09 · 154 阅读 · 0 评论 -
哈希(hash)表查找速度为什么那么快?快在哪里了?
先看数组存储数据是怎么样的。现在有一个数组,它里面每个单元存储的是数据的地址这叫指针数组吧,假设它有100个单元我们称他为p[100]现在我想把一百个数据(地址)放到里面我们想把某个数据放到p的第几个单元完全是由我们决定的,可以说想怎么放就怎么放是一种乱放,既然是乱放,那么查找起来就比较耗时。哈希表是怎么存储数据的呢?哈希表同样是一个指针数组。同样需要...转载 2020-05-07 17:28:17 · 10843 阅读 · 8 评论 -
行列存储方式比较
原文链接:https://blog.csdn.net/vagabond6/article/details/79555282写入:行存储的写入是一次完成,数据的完整性因此可以确定。列存储需要把一行记录拆分成单列保存,写入次数明显比行存储多。行存储在写入上占有很大的优势数据修改:行存储是在指定位置写入一次,列存储是将磁盘定位到多个列上分别写入。行存储在数据修改也是占优的数据读取...转载 2019-12-27 16:57:14 · 594 阅读 · 0 评论 -
如何解决数据倾斜问题?
转载:https://blog.csdn.net/Mr_HHH/article/details/89399518今天在工作中遇到了数据倾斜的问题,一条SQL执行了8小时才执行完,看计划是先join再做distinct,卡在了join上,数据量比较大,并且重复数据比较多,后续经过分析计划,查资料,在不影响结果的前提下,改为先进行distinct,然后再join,最后在2min12s就出了结果。...转载 2019-11-19 18:46:30 · 3025 阅读 · 0 评论 -
leveldb资料整理
转自:http://hideto.iteye.com/blog/1328921最近一段时间在学习leveldb的源码,找到了一些相关的资源,用于后续查考和学习使用。leveldb介绍http://code.google.com/p/leveldb/http://en.wikipedia.org/wiki/LevelDBhttp://highscalability.com/blo...翻译 2019-06-23 14:30:09 · 437 阅读 · 0 评论 -
LevelDb实现原理
原文地址:http://www.samecity.com/blog/Index.asp?SortID=12,最近由于工作上的需求,需要用到leveldb,因此转载此文章用于以后的查询使用。LevelDb日知录之一:LevelDb 101 说起LevelDb也许您不清楚,但是如果作为IT工程师,不知道下面两位大神级别的工程师,那您的领导估计会Hold不住了:Jeff Dean和Sanj...转载 2019-06-19 10:20:58 · 184 阅读 · 0 评论 -
HIVE和HBASE区别
转载:https://www.cnblogs.com/justinzhang/p/4273470.html1. 两者分别是什么?Apache Hive是一个构建在Hadoop基础设施之上的数据仓库。通过Hive可以使用HQL语言查询存放在HDFS上的数据。HQL是一种类SQL语言,这种语言最终被转化为Map/Reduce. 虽然Hive提供了SQL查询功能,但是Hive不能够进行交互...转载 2019-05-13 10:01:33 · 129 阅读 · 0 评论