




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
码农70%时间看别人的代码,30%的时间自己写代码。本人也是这样由于手头上的项目,花几天的时间把Tokyocabinet看了一下。Tokyocabinet 是一个DBM的实现,这里的数据库由一系列key-value对的记录构成。Key和value都可以是任意长度的字节序列。Tokyocabinet的源码结构md5.c myconf.c tcadb.c tcamgr.c tcatest.c tcawmgr.c tcbdb.c tcbmgr.c tcbmttest.c tcbtest.c tcfdb.c tcfmgr.c tcfmttest.c tcftest.c tchdb.c tchmgr.c tchmttest.c tchtest.c tctdb.c tctmgr.c tctmttest.c tcttest.c tcucodec.c tcumttest.c tcutest.c tcutil.c其中,tca*.c是抽象出来的数据库的代码,这个的库可以是hashtable,fix-length array database,b+ tree database 中的任何一种。tcb*.c是b+ tree数据库的相关代码,tcf*.c是fix-length array 数据库的相关代码,tch*.c是hashtable型数据库相关代码,tct*.c是table database相关的代码。理解了这些数据存储类型的区别,才能理解后来tokyotyrant的一些参数设置.在下一节就专门讲述这些; tcu*.c是工具类的杂项函数集。 基本上所有的数据库类型都有*test和*mttest,*mgr三个二进制程序。比如fix-length-array database有tcftest.c,tcftest.c,tcfmttest.c都有是main函数的。Tokyocabinet的存储类型n 如果DB名字为“*” 内存中的Hash存储n 如果DB名字为“+” 内存中的B+存储n 如果DB名字为“.tch” 硬盘上的HASH存储n 如果DB名字为“.tch” 硬盘上的B+存储n 如果DB名字为“.tcf” 像数组一样的连续数字对应定长值的存储n 如果DB名字为“.tct” 一个key值下面对应很多个name-value的形式Tokyocabinet的关键参数 bnum : 指定bucket array的数量。推荐设置为存储总记录的0.5 4倍,使key的哈希分布更均匀,减少在bucket内二分查找的时间复杂度。 xmsiz: 指定TCHDB的扩展MMAP内存大小。 rcnum: 缓存内存的记录条数 dbgfd : 设置为1,调试信息下面是硬盘上HASH存储的源码分析文件结构 图1 tch文件格式 如上图,文件大概分为3个部分1 256个字节的头,见下表;2 bnum个bucket数组,每个bucket保存offset, bucket 下第一个数据的绝对偏移量(文件);3 数据部分 表1 头的结构magic number032identification of the database. Begins with ToKyO CaBiNeTdatabase type321hash (0x01) / B+ tree (0x02) / fixed-length (0x03) / table (0x04)additional flags331logical union of open (10) and fatal (11)alignment power341the alignment size, by power of 2free block pool power351the number of elements in the free block pool, by power of 2options361logical union of large (10), Deflate (11), BZIP2 (12), TCBS (13), extra codec (14)bucket number408the number of elements of the bucket arrayrecord number488the number of records in the databasefile size568the file size of the databasefirst record648the offset of the first recordopaque region128128users can use this region arbitrarilyOn-memory hash结构 图2 这是On-memory hash结构图 1 最上层是maps数组,长度固定为8,对key的访问先hash到其中一个map; 2 每个map由buckets数组组成(bnum/8)。Key经过第二次hash到其中一个bucket; 3 hash到同一bucket的recor
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师招聘之《小学教师招聘》考试押题卷附参考答案详解(基础题)
- 2025年教师招聘之《幼儿教师招聘》综合提升测试卷附参考答案详解(研优卷)
- 教师招聘之《幼儿教师招聘》通关检测卷附答案详解【基础题】
- 教师招聘之《小学教师招聘》能力提升打印大全审定版附答案详解
- 2025年智能建筑系统集成节能降耗中的建筑能耗管理平台构建报告
- 2025年环境监测智能化技术发展趋势与数据质量控制策略分析报告
- 2023年广东省华南师大附中平行班中考一模数学试题及答案
- 教师招聘之《小学教师招聘》考前冲刺练习题完美版附答案详解
- 内蒙古呼伦贝尔农垦集团有限公司招聘笔试题库及答案详解(夺冠系列)
- 2025年教师招聘之《幼儿教师招聘》经典例题及一套答案详解
- 人事行政部每月工作总结
- 《工业自动化控制系统基础》课件
- 2025年中国造影剂行业市场发展监测及投资战略规划研究报告
- 风电场运行管理课件(改)
- 医院医用耗材SPD服务项目投标方案
- 债务重组合同协议书样本
- 杜绝“死亡游戏”(梦回大唐)学生安全主题班会课件
- 《妇产科学》课件-9.2产力异常
- 职工食堂服务(技术方案)
- 金融领域反腐
- 《机械制图(多学时)》中职完整全套教学课件
评论
0/150
提交评论