leveldb 学习。
1)大概浏览了leveldb文档的介绍。本想逐步看代码,想想还是自己先实现一个看看如何改进。
2)完成了一个非常丑陋的初版,但是还是比初初版有进步。
3)key value的数据库,不允许有key重复,所以必须检测key。
1,插入检测key重复,太耗时间,不可能去检查数据文件。明显必须加入一个索引文件。形式key,offset。
2, key,offset的索引形式,数据到达5w,简直不可忍受。插入数据时,必须对索引文件排序,之后可以二分法查找key。
3,排序,二分查找法,又必须要求可以对索引文件进行random access 立即访问。所以要求每个记录一样大小。所以自己开始考虑是建立二级索引文件。形式:一级索引元素的offset。
查看了leveldb的实现,自己还是太嫩,既然要求2级索引了,那么一级索引的key,offset,就没有发挥原本可以直接查看key的功效。所以直接去掉key,offset,索引文件直接放入 ,数据文件中每条元素的offset。
4,查找key用二分查找法,插入也必须用二分插入法。
4)非常丑陋的初版完成。基本可以插入数据了。不会出现初初版的到了5w数据,基本不可忍受的插入速度。
5)继续完善,发现一篇介绍leveldb的博文,http://blog.csdn.net/qq112928/article/details/21172841。一下让继续完善的动力,暂停了。leveldb中使用了几个自己完全没有接触的算法和思路。所以暂时暂停。先学习使用到的知识点。再完善。
6)烂尾的项目太多了。唉。。。。随便一个做好都不容易。
leveldb 学习。的更多相关文章
- leveldb 学习记录(三) MemTable 与 Immutable Memtable
前文: leveldb 学习记录(一) skiplist leveldb 学习记录(二) Slice 存储格式: leveldb数据在内存中以 Memtable存储(核心结构是skiplist 已介绍 ...
- leveldb 学习记录(四) skiplist补与变长数字
在leveldb 学习记录(一) skiplist 已经将skiplist的插入 查找等操作流程用图示说明 这里在介绍 下skiplist的代码 里面有几个模块 template<typenam ...
- leveldb 学习记录(四)Log文件
前文记录 leveldb 学习记录(一) skiplistleveldb 学习记录(二) Sliceleveldb 学习记录(三) MemTable 与 Immutable Memtablelevel ...
- leveldb学习:Versionedit和Versionset
VersionEdit: compact过程中会有一系列改变当前Version的操作(FileNumber添加.删除input的sstable,添加输出的sstable).为了缩小version切换的 ...
- LevelDB学习笔记 (1):初识LevelDB
LevelDB学习笔记 (1):初识LevelDB 1. 写在前面 1.1 什么是levelDB LevelDB就是一个由Google开源的高效的单机Key/Value存储系统,该存储系统提供了Key ...
- LevelDB学习笔记 (3): 长文解析memtable、跳表和内存池Arena
LevelDB学习笔记 (3): 长文解析memtable.跳表和内存池Arena 1. MemTable的基本信息 我们前面说过leveldb的所有数据都会先写入memtable中,在leveldb ...
- LevelDB 学习笔记1:布隆过滤器
LevelDB 学习笔记1:布隆过滤器 底层是位数组,初始都是 0 插入时,用 k 个哈希函数对插入的数字做哈希,并用位数组长度取余,将对应位置 1 查找时,做同样的哈希操作,查看这些位的值 如果所有 ...
- LevelDB 学习笔记2:合并
LevelDB 学习笔记2:合并 部分图片来自 RocksDB 文档 Minor Compaction 将内存数据库刷到硬盘的过程称为 minor compaction 产出的 L0 层的 sstab ...
- leveldb学习:skiplist
leveldb中的memtable仅仅是一个封装类,它的底层实现是一个跳表. 跳表是一种基于随机数的平衡数据结构.其它的平衡数据结构还有红黑树.AVL树.但跳表的原理比它们简单非常多.跳表有点像链表, ...
随机推荐
- spring 配置bean
Main(测试方法) public class Main { public static void main(String[] args) { //1.创建Spring 的IOC容器对象: //spr ...
- Html5特性及简介
- C# MD5摘要算法、哈希算法
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法) MD5算法具有以下特点: 1.压缩 ...
- 常用git命令总结
这些命令是最常用的,一般的提交代码.拉取代码.合并代码.分支切换等等操作用这些命令就足够了. 1.git init 把一个目录初始化成git仓库 2.git add test.txt 把文 ...
- java加法流程图
- PhpStorm设置编码
PhpStorm是一个轻量级且便捷的PHP IDE,其旨在提供用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查. 本文为大家讲解的是如何设置phpstorm 编辑器的编码,感 ...
- CSS之float样式总结
从四大开始开始慢慢接触前端,大概半年多过去了,虽然做了一些东西,但感觉有些点始终不是很清晰.有时候为了赶进度,没有太多时间对某个点进行全面深入思考分析,只能从网上搜一搜,试一试,只要效果出来了,任务就 ...
- MySQL MMM 双主在Failover时挂起
两台MySQL服务器,版本Percona 5.5.35,配置双主,装在Centos 6.4下 Master1 db1,172.21.120.160(真实IP),172.21.120.173(Writ ...
- iOS的生命周期
iOS应用程序一般都是由自己编写的代码和系统框架组成.系统框架提供了一些基本的infrastructure给APP来运行,而开发者则自己编写代码定制APP的外观和行为,了解iOS infrastruc ...
- 漫谈单点登录(SSO)(淘宝天猫)
1. 摘要 ( 注意:请仔细看下摘要,留心此文是否是您的菜,若浪费宝贵时间,深感歉意!!!) SSO这一概念由来已久,网络上对应不同场景的成熟SSO解决方案比比皆是,从简单到复杂,各式各样应有尽有!开 ...