分享自己的观点...
gaokeke123
gaokeke123
2022-04-18 15:45:04
在并发写入的时候,leveldb巧妙的利用一个时间窗口做batch写入,这部分代码值得一读:StatusDBImpl::Write(constWriteOptions&options,WriteBatch*my_batch){//partAWriterw(&mutex_);w.bat...
gaokeke123
2022-04-18 15:41:48
前言对LevelDB比较了解应该知道其中一块cache实现:LRUCache是采用双向链表+HashTable,其中HashTable是为了解决双向链表的查找性能缺陷才引入的。接下来看一下采用golang如何实现LRUCache。实现1、定义cache接口【thread-safe的cache】imp...
gaokeke123
2022-04-18 15:40:39
leveldb插入数据步骤用户输入的kv数据首先组装为wallogentry写入到wallog中然后将kv数据从内存中的wallogentry解析为memtable中的...
gaokeke123
2022-04-18 15:38:39
在2006年的OSDI上,Google发布了名为Bigtable:ADistributedStorageSystemforStructuredData的论文,其中描述了一个用于管理结构化数据的分布式存储系统-Bigtable的数据模型、接口以及实现等内容。本文会先对Bigtable一文中描述的分布式...
gaokeke123
2022-04-18 15:37:26
LevelDB版本信息相关的数据结构解析2上篇介绍了leveldb中涉及版本信息的一些数据结构Version、VersionSet、VersionEdit,本篇文章来介绍下版本管理是如何进行的。首先我们可以回忆下leveldb读取一条key的流程:首先在memtable中读取,找到则返回;否则要去s...
gaokeke123
2022-04-18 15:36:17
什么是跳表跳表(SkipList)是一种基于有序链表的扩展,是由WilliamPugh提出的。他在论文《Skiplists:aprobabilisticalternativetobalancedtrees》中详细地介绍了有关跳表结构、插入删除操作的细节。SkipList是一种可以用于替代查找树的内存...
gaokeke123
2022-04-18 15:34:59
LevelDB是Google传奇工程师JeffDean和SanjayGhemawat开源的KV存储引擎,无论从设计还是代码上都可以用精致优雅来形容,非常值得细细品味。接下来就将用几篇博客来由表及里的介绍LevelDB的设计和代码细节。本文将从设计思路、整体结构、读写流程、压缩流程几个方面来进行介绍,...
gaokeke123
2022-04-18 15:33:36
本文主要介绍开源项目LevelDB中的内存管理器(也可称为内存池)Arena的实现,LevelDB的大部分内存管理依赖于C++语言的默认实现,也就是不对内存进行管理。只是在MemTable的实现中用到了一个简单的内存管理器(Arena)。Arena目的LevelDB中MemTable的内部实现Ski...
点击加载更多
分享好友
分享这个小栈给你的朋友们,一起进步吧。
订阅须知
• 所有用户可根据关注领域订阅专区或所有专区
• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询
• 专区发布评论属默认订阅所评论专区(除付费小栈外)
技术专家
查看更多- gaokeke123专家
- 热门小栈
- 新小栈
- 更多