`
yiihsia
  • 浏览: 68354 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

tokyotyrant的内部实现特征

阅读更多

修改一个value值的时候,当新数据大于老数据,如果后面有空间,就增大,没有就移动。

有两种收拾碎片的方法,一是把数据重新导一份,名曰静态碎片整理,这个是手动调接口执行的。二是动态收集碎片,再重新整合,这个过程是在一些常规操作中被触发进行的。

B+树存储的父子结点间是双链。

B+树存储的每一个叶结点是一个hash表,每一个叶结点叫一个page。

B+树的索引是存在内存中的,每次insert可能会导致比较多的结点重组。

B+树的每一个page都可以选择进行压缩,采用的是Deflate of ZLIB及Block Sorting of BZIP2.压缩率可达75%,压缩后数据仅为原始数据的25%大小。如果磁盘IO成为系统瓶颈的话,采用压缩会有显著效果。

Fixed-length存储引擎是全部mmap到内存中的,它不保存key值,所以如果数据过大,就会用到虚拟内存。

table存储引擎功能强大,他就像是有一个索引,然后分别索引向多列数据。他的每一列数据支持字符匹配,支持正则匹配,对数字类型的列支持范围查询和字符匹配,同时tag查询及全文检索也是支持的。它还支持按列的排序,实际就是指定目标列的升序和降序。

free block pool这块区域在bucket区域后面,他每一个元素指向一块空间空洞,包括了空洞的位置和尺寸信息。

TT的command mask以逗号隔开,command mask和unmask的起作用的优先级视参数顺序而定。

-mul是一种内置的skel方式,主要方式是先构造一个skel项,再调用常规的skel挂载方式挂载运行。

tc在tcadbopen的时候,首先是检测有没有相应的skel挂载项,如果有,就调用skel->open,其它方法类似,以此来实现自定制存储。

tc的数据元素cache,是在调用get的时候做的,从磁盘读到数据后做缓存,比较了rcnum与当前num的大小,如果满了的话就调用调整函数调整缓存腾出空间。其实所谓的调整也就是切掉头部。

切掉头部也不简单,cache层用的是TCMAP存储,每一个tc上有多个TCMAP(8个),每次额定是切掉128个元素,把这128个平摊到各个TCMAP里面可能每一个TCMAP就切掉几个(16个),这几个的切掉是用的迭代,一个一个的迭代然后删除。

分享到:
评论

相关推荐

    tokyotyrant-1.1.40.tar.gz

    8. **扩展与集群**:虽然TokyoTyrant不支持自动的分布式存储,但可以通过手动将数据分片到多个TokyoTyrant实例来实现水平扩展。用户需要自己编写代码来管理和同步这些实例。 9. **与其他数据库的比较**:...

    tokyotyrant/tokyocabinet/gpac

    TokyoCabinet 支持多线程和文件映射技术,从而实现高并发读写。B-Tree 数据库适合于范围查询,Hash 数据库则适合快速查找,而Fixed-length 数据库则适用于固定长度数据的存储。 **GPAC** GPAC 是一个开放源代码的...

    tokyotyrant

    媲美memcached的缓存服务器软件包,tokyocabinet-1.4.45.tar.gz+tokyotyrant-1.1.40.tar.gz

    tokyoCabint及tokyoTyrant简介

    标题 "tokyoCabinet及tokyoTyrant简介" 指向了两个与数据库管理相关的开源工具,Tokyo Cabinet和Tokyo Tyrant。这两个工具由日本开发者开发,主要用于小型到中型的数据存储,尤其适合那些对数据读写速度有较高要求的...

    Tokyocabinet-Tokyotyrant文档大合集

    Tokyo Cabinet 是一个DBM的实现。这里的数据库由一系列key-value对的记录构成。key和value都可以是任意长度的字节序列,既可以是二进制也可以是字符串。这里没有数据类型和数据表的概念。 当做为Hash表数据库使用时,...

    tokyo tyrant文档

    Tokyo Tyrant内部的线程管理是其高效运行的关键之一。工作线程组负责处理来自客户端的请求,每个线程都有自己的任务队列,这样可以并行处理不同的请求,提高响应速度。 ### 7. 性能对比测试 Tokyo Tyrant与...

    发布一个基于TokyoTyrant的C#客户端开源项目

    TokyoTyrant是一款高效、轻量级的键值存储系统,由日本的Ryo Sagawa开发,它是Tokyo Cabinet的网络接口。TokyoTyrant支持多种协议,包括HTTP和TCP,使得它能被各种编程语言的客户端访问。在这个场景中,我们关注的是...

    tokyocabinet安装配置总结(Ubuntu)

    提供的`Tokyocabinet_Tokyotyrant文档大合集.mht`文件包含Tokyocabinet和Tokyotyrant的详细文档,包括API参考、使用示例和常见问题解答。你可以通过MHT文件查看器打开这个文件,以便深入学习和理解这两个工具。 ...

    Java-concurrentMap-内存模型深入分析-HotCode

    在Java编程领域,`concurrentMap`是并发编程中至关...而了解像TokyoTyrant和Redis这样的数据存储系统,则有助于设计和实现高性能的并发解决方案。通过这些文件的学习,开发者可以进一步提升在并发编程领域的专业能力。

    Memcache完全剖析 最实用的Memcache文档

    Memcached的特征包括: 1. 协议简单:它有一个非常简单的基于文本行的协议,容易编程实现。 2. 基于libevent的事件处理:Memcached使用libevent库来处理网络事件,使得其在高并发环境下有良好的性能表现。 3. ...

    NoSQL数据库入门(当今最炙手可热的NoSQL新型数据库技术)

    《nosql数据库入门 中文版》详细地介绍了nosql数据库(非关系型数据库)的种类、用途以及使用方法,并对memcached、tokyotyrant、redis、mongodb这4种代表性的nosql数据库的特征、适用范围、实现代码进行了深入探讨,...

    ttserver-lib包

    tokyocabinet-1.4.45.tar.gz tokyotyrant-1.1.41.tar.gz tokyotyrant-0.11.jar ch-tokyocabinet-java-1.24.0.jar

    memcached的细节文档

    - **查看内部状态和slabs的使用状况**:memcached提供命令行工具来监控其内部状态和slab的使用情况。 ### memcached的删除机制和发展方向 - **数据删除**:memcached不立即删除数据,而是采用LazyExpiration策略,...

    memcached全面剖析.pdf

    - memcached本身并不实现分布式的逻辑,但可以通过客户端实现。 - 常见的分布式算法包括基于哈希的方法和一致性哈希(Consistent Hashing)。 - **Consistent Hashing**: - Consistent Hashing是一种分布式哈希表...

    tokyotytrant

    在深入研究Tokyo Tyrant的内部实现时,可以关注其数据结构、并发控制机制、持久化策略等方面,这些都对理解Tokyo Tyrant的高性能至关重要。 总而言之,Tokyo Tyrant是一款面向高速数据处理的NoSQL数据库,其简单的...

    memcached完全剖析

    - **TokyoTyrant案例**:介绍了TokyoTyrant作为memcached的一种替代方案,在mixi的应用情况。 #### 总结 memcached作为一种高效的缓存解决方案,已经在许多大型网站和服务中得到了广泛的应用。通过了解其基础原理...

    Memcached分布式缓存

    - **TokyoTyrant案例**:TokyoTyrant是一个开源的高性能key-value存储系统,它可以与memcached兼容,提供更强大的功能。 #### 总结 Memcached作为一款高性能的分布式缓存系统,在现代互联网应用中扮演着至关重要的...

    memcached全面剖析

    - **协议简单**:memcached采用简单的文本协议,易于实现与维护。 - **基于libevent的事件处理**:使用libevent库来处理网络I/O,能够高效地处理大量并发连接。 - **内置内存存储方式**:使用一种称为“slab ...

Global site tag (gtag.js) - Google Analytics