200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > HashMap Redis MySQL 到 分布式 HBase

HashMap Redis MySQL 到 分布式 HBase

时间:2022-09-14 07:51:39

相关推荐

HashMap Redis MySQL 到 分布式 HBase

hashmap redis mysql 分布式 hbase️问题引入:1w个元素数组链表线性表 1.数据有序二分查找才是最快的,o logn2.数据无顺序只能从头到尾 ,此时时间复杂度o(n)3.或者跳跃表或者红黑树🌲️核心:分治思想如果使用数组为长度为4的,每个下面是一个2500长度的链表接着对每一个元素进行hash,1.每个元素得到一个hash值,2.用hash值对4进行取余那么就把这个元素放到指定位置下后面在查找某一元素的时候就先对查找元素进行hash,然后得到是在哪一个数组下标下补:hashset 底层实现就是hashmap ,value为null树可以使用二分查找 效率很高上面的设计存在一个问题是:每一个元素下的链表长度并不是一致的,有的长有的短,即:hash值取余之后某一个比较多带来问题:有的查询快,有的查询慢为了解决这一问题,我们在使用的时候,可以将大于一定长度的链表转为 树 结构进行存储,树的遍历二分查找是很快的️存储技术:计算机一开始发展,我们使用文件📄存储数据,到mysql redis hbase等等如果一个文件把数据全部堆进去,使用线性查找,其实是很慢的补:计算机系统的瓶颈:对于io设备来说,单看寻址时间一般是毫秒级磁盘寻址时间:毫秒级 10ms左右内存寻址:纳秒秒 毫秒 微妙 纳秒 那么内存快于磁盘的 10w倍左右对于吞吐来说:磁盘io吞吐:百兆级磁盘:顺序读写 500m 随机读写 kb级一个感受:拷贝一堆小文件到电脑,很慢,因为是磁盘的随机读写,拷贝一个大文件还是很快,顺序顺序写一个大文件全量io是很慢的,好多技术框架都在规避全量io放文件放数据库数据库感受上还是要快一点的,文件📄是存磁盘,数据库也是存磁盘,为啥数据库就是要快一点呢文件类比成一个大的格子存储数据库类比成许多小格子,也叫数据页 datapage,相当于先分治,光分治还不能提升查询速度还要构建索引或者使用啥算法或者啥映射关系mysql在这里就是,如果没有索引其实也是一个一个小格子查,还是一样慢。所以我们才会为表创建索引数据库快:分治 ➕索引索引不命中:退化为全表扫描,即全量io,就慢面试技巧:给自己加点盐🧂,不然和大家一样素增删改:写查:读就查询而言:一个连接,一个查询,where又命中索引。毫秒级返回高并发情况下:许多连接,许多查询,各种查询类型都有。那么datapage磁盘到内存这个过程 受吞吐影响,1秒移动的数据是一定的,那么可能部分查询的返回就要先排队,现象就是:页面查询过了几秒才返回数据库痛点:磁盘io,不是高并发只是高并发带来了磁盘io瓶颈有一家公司做了一个数据库产品,直接把数据存放到内存,比如内存2t。唯一缺点就是贵,还有就是同样一批数据其实放到 磁盘占用空间更大。同一数据内存只存一份,磁盘就得存多份。️由于太贵了,所以redis出场了公司其实分为冷热数据的,读多写少的数据等等场景redis就是一种技术来只存热数据,读频繁的数据关系型数据库:表数据之间是有关联关系的,为了不让数据冗余,同时也能减少io,使用范氏建模展开:维度退化 宽表分散:范氏建模为啥kv类型的快,不像关系型数据库那样sql组织能力的丰富查询(即连表),只是单纯的取数。redis规避集合操作redis工作线程一个线程,one by oneredis6读取io 多线程,处理还是单线程 如果处理使用多线程,那么就会有一致性问题,那么就会上锁 这样复杂型一下就上来了。举个例子:比如过河取面吃,一开始是自己过河取自己吃redis6之后就是雇佣一帮小弟帮自己取,吃还是自己吃,这样自己就很快能吃完继续rediskv单线程io 多线程value类型: 本地方法:计算像数据移动 ,还是数据像计算移动memcache vs redis (主流缓存对比)memcache value类型只有string所以当存储一个数组(转json),这个时候想要取数组里某个下标的数据,就需要把数据先查回来,自己在代码里面处理。即:数据会从服务端移动到客户端,且客户端自己实现计算redis value是有类型的那么还是存数组数据,那么可以选用redis 的list 类型,同时list 类型也提供了本地方法。那么就可以直接调本地方法返回指定下标的数据老师总结:二章节10分钟核心:io️下面进入分布式 (hbase分布式里面必须要有角色,协调和工作一起来完成一件事。主从 主备(ha)先以hdfs引入你有一批数据存到4台机器上,那么可以分散存到4台上namenode 就用来管理数据存哪,元数据, 角色的概念datanode就是存放数据文件可以切成小块,这取决的硬盘的io性能。1.先找namenode ,告知数据存哪2.namenode 查询了一番,把数据存放到哪几台,存好之后 把文件和存储位置记下来存好:所以datanode和namenode就要通信副本:pipline 流水线 :变种的并行。接收客户端的数据的 同时 把数据写入到副本机器上第一副本本地优先️hbase —-》big table新瓶装旧酒新技术的学习成本取决于老技术的了解深度对于mysql极大的表:垂直切:范氏外键关联水平分:分库分表 分库分表 :关联查询性能低对于hbase极大的表天生分布式列列族:列族(多个列)为单位放到一个存储里面,生产把和业务关联紧密的字段放到一个列族下,类似范氏分表水平分:region 水平分表 ,可以理解为一个region是一个子表一个region存储从row key 1到row key n有点类似kafka的存储总之,使用row key 去取值简单小结:垂直范氏水平分表进阶:region server进程一个表的数据会散在多个region server进程里面,这里借用redis的特征,读写数据优先放在内存里的,其实mysql感觉也是类似的,但是mysql还有个wal机制保障事务通过hbase写数据到磁盘,使用的是hdfs的副本能力保障数据可靠性redis hbase es各个选型特点时点数据:记录某一时间点的数据,静态数据,且庞大。️本节课核心:存储技术选型文件系统接口:d hdfsb hbasef ftps es等等h1 hive映射h2 copy对于外部来说,就是使用文件系统就可以数据交换平台:oracle db2 mysql源目标字段类型转换

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。