欢迎来到天天文库
浏览记录
ID:37323090
大小:1.77 MB
页数:38页
时间:2019-05-21
《CoolHash数据库引擎架构与设计分享彭渊》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、CoolHash数据库引擎架构与设计分享彭渊思路提纲1、存储硬件技术的发展:机械硬盘、固态硬盘的原理2、数据库软件技术的发展:基于裸设备、b/b+树、跳表的的数据库实现原理3、业界典型NOSQL数据库架构分析(Aerospike,KyotoCabinet、Couchbase、Redis)4、Redis解决方案、瓶颈和优化5、CoolHash的数据逻辑结构6、CoolHash的并行架构设计+简单事务处理7、CoolHash的性能分析机械硬盘存储的伟大发明机械硬盘是在金属片上涂以磁性材料,通过对磁性材料磁化后的剩磁状态来存储二进制信息。1、寻找柱面(毫秒级)2、寻找盘面3、寻找扇区操作系统的文
2、件系统实现将连续数据尽量存放同一柱面(不连续即随机读写)每个文件至少存放一个簇(相邻的扇区),目录区存储文件元数据,数据区存储文件内容固态硬盘的存储原理1、主体pcb板2、主控芯片:调配闪存芯片数据负荷和中转。3、缓存芯片:辅助主控芯片进行数据处理。4、闪存芯片(Flash):存储介质,以充电、放电方式写入擦除数据。不用磁头,通过电路传输信号,寻道时间几乎为0,随机读写速度快。(500m/sVS100m/s,<1毫秒)无机械不发热无噪音抗低温抗地震,但是价格贵有擦写次数寿命限制。国内厂商一般购买主控芯片和闪存芯片组装。数据库软件存储技术的发展趋势数据库作为企业信息系统的最基础软件,面临着分
3、布式存储、nosql、k/v、并行数据库等创新技术的冲击结构化存储往非结构化存储发展集中存储往分布式存储发展sql数据库往nosql发展关系数据库往kv数据库发展单进程数据往并行数据库发展随着软硬件技术的发展,缓存和持久化存储的性能越来越接近基于Rawdevice的数据库实现1、Rawdevice,没有经过格式化,不被操作系统直接管理的设备,不通过操作系统文件系统来操作。2、使用应用程序直接操作Rawdevice,不经过文件系统的缓冲。3、由于绕开操作系统和其文件系统,直接操作I/O,控制得当可以提高效率。4、读写很频繁,磁盘I/O成为瓶颈情况下适合操作Rawdevice。5、
4、ORACLE、SQLSERVER等数据库支持使用Rawdevice作为存储介质。开发方式:1、常用c开发操作打开dev/sdb...2、java开发问题(不太适合)://读可以打开RandomAccessFilefile=newRandomAccessFile("\\.\PhysicalDrive1","r");//写抛出异常FileNotFoundExceptionsRandomAccessFilefile=newRandomAccessFile("\\.\PhysicalDrive1","rw");Rawdevice的限制1、sqlserver、oracle安装必须在文件系
5、统上,支持在Rawdevice创建数据库2、数据库没有物理名字,只有磁盘驱动号,每个raw分区只能有一个数据文件3、复制删除重命名等操作无法使用4、备份和管理比较麻烦,linux使用DD底层命令5、数据文件分区大小无法更改6、磁盘整理坏块替换等系统维护无法使用到Rawdevice7、sqlserver推荐使用NTFS或者FAT建立数据库,Oracle11后不再支持Rawdevice(包括OUI,DBCA,命令行)8、硬件专家的经验,一定程度可以提高效率,但是不突出基于B/B+Tree实现数据库内存或者硬盘(p指向对象地址或者数据块地址)(m=5)(n,k1,p1,k2,p2,...,kn,
6、pn)0[p1)33[p2)66[p3)Root:(2<=n<=m)p_rootInternal:(ceil(m/2)<=n<=m)p_firstLeaf:(ceil(m/2)<=n<=m-1)0[p1)10[p2)20[p3)33[p1)45[p2)55[p3)66[p1)75[p2)90[p3)索引数据&热数据硬盘0102033455566759021212354756687991插入节点88,71616414861708597会引起哪些变化?91919445064738998ppppppppp内容数据&冷数据好处:查找、范围查找(锁定两头范围)、遍历方便;每个节点有关键字最大范围,可
7、以控制好数据块存储大小(page),方便做计算;1000阶的3层b+树可以最大存储接近10亿个节点。对一个懒惰的程序员,用b+树实现数据库麻烦在哪里:维持平衡的树结构的开销大,为了动态调整树子节点在最大最小范围内,需要不断的分裂树(插入)、合并树(删除),并容易引起向上左右连锁分裂或合并,指针切换和数据块迁移频繁,编程复杂,招式太多容易影响性能;牵一发动全身,插入删除节点引起周边节点关联变化难以事先预估影响范围,对于多条
此文档下载收益归作者所有