您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > Tokyocabinet_Tokyotyrant文档大合集
Tokyocabinet/Tokyotyrant文档大合集[原文:整理于网络整理:一米六二xurenlu@gmail.com网络更新:]LastUpdated:2009-12-041.前言2.参考资料链接3.使用介绍o3.1.基本概念o3.2.TokyoCabinet简介o3.3.性能介绍o3.4.tokyotyrant和Memcached的优势比较3.4.1.故障转移3.4.2.日志文件体积小3.4.3.超大数据量下表现出色o3.5.安装3.5.1.编译安装tokyocabinet数据库3.5.2.编译安装tokyotyranto3.6.tokyotyrant的配置3.6.1.创建tokyotyrant数据文件存放目录3.6.2.启动tokyotyrant的主进程(ttserver)3.6.3.停止tokyotyrant(ttserver)o3.7.调用4.程序架构o4.1.流程介绍4.1.1.多线程4.1.2.TokyoTyrantvs.Memcached4.1.3.启动流程4.1.4.请求处理4.1.5.数据结构5.数据库存储基础o5.1.tokyocabinet的源代码结构o5.2.tokyotyrant的存储类型o5.3.tokyotyrant的缓存o5.4.异步o5.5.索引o5.6.数据的Hash5.6.1.冷存储5.6.1.1.一级hash索引:bidx5.6.1.2.二级hash索引:hash5.6.1.3.key值对比5.6.1.4.存储时的主要逻辑5.6.1.5.数据文件结构5.6.1.6.内存映射的一级索引5.6.1.7.bnum参数5.6.1.8.预告6.线程和事件o6.1.工作线程6.1.1.什么是工作线程组6.1.2.从这里开始6.1.3.ttservdeqtasks的工作过程6.1.3.1.**存取请求**6.1.3.2.线程处理请求7.MemcacheDB,TokyoTyrant和Redis性能对比测试o7.1.测试环境7.1.1.软件环境7.1.2.配置7.1.3.测试客户端o7.2.小数据量测试结果o7.3.大数据量测试结果o7.4.Somenotesaboutthetest8.TokyoTyrant的问题和Bugo8.1.Bugreporto8.2.tokyotyrant大规模出错的问题o8.3.Bugs9.延伸阅读:key-value-pairdatabase的比较o9.1.满足极高读写性能需求的Kye-Value数据库:Redis,TokyoCabinet,Flare9.1.1.Redis9.1.2.TokyoCabinet和TokoyTyrant9.1.3.Flareo9.2.满足海量存储需求和访问的面向文档的数据库:MongoDB,CouchDB9.2.1.MongoDB9.2.2.CouchDBo9.3.满足高可扩展性和可用性的面向分布式计算的数据库:Cassandra,Voldemort9.3.1.Cassandra9.3.2.Voldemort1.前言这里不是我个人原创,是我对网络上整理到的资料的再加工,以更成体系,更方便研究阅读.主要是对其中跟主题无关的文字删除,部分人称稍做修改;本人无版权,您可以将本页面视为对参考页面的镜像.第二部分已经给出所有的参考资料;2.参考资料链接利用TokyoTyrant构建兼容Memcached协议、支持故障转移、高并发的分布式key-value持久存储系统[原创]》:[]tokyotyrant源代码研究-程序架构与运行流程:[]tokyocabinet的hash存储机制:[]tokyocabinet源代码研究:存储机制:[]tokyotyrant源代码研究-第三线程:[]tokyotyrant源代码研究-工作线程组:[]tokyotyrant大规模出错的问题:[]MemcacheDB,TokyoTyrant,Redisperformancetest:[]robbin,为什么要用非关系数据库;[]3.使用介绍3.1.基本概念tokyocabinet:一个key-value的DBM数据库,但是没有提供网络接口,以下称TC。tokyotyrant:是为TC写的网络接口,他支持memcache协议,也可以通过HTTP操作,以下称TT。3.2.TokyoCabinet简介1.项目主页:简介TokyoCabinet是一个DBM的实现。这里的数据库由一系列key-value对的记录构成。key和value都可以是任意长度的字节序列,既可以是二进制也可以是字符串。这里没有数据类型和数据表的概念。当做为Hash表数据库使用时,每个key必须是不同的,因此无法存储两个key相同的值。提供了以下访问方法:提供key,value参数来存储,按key删除记录,按key来读取记录,另外,遍历key也被支持,虽然顺序是任意的不能被保证。这些方法跟Unix标准的DBM,例如GDBM,NDBM等等是相同的,但是比它们的性能要好得多(因此可以替代它们)当按B+树来存储时,拥用相同key的记录也能被存储。像hash表一样的读取,存储,删除函数也都有提供。记录按照用户提供的比较函数来存储。可以采用顺序或倒序的游标来读取每一条记录。依照这个原理,向前的字符串匹配搜索和整数区间搜索也实现了。另外,B+树的事务也是可用的。对于定长的数组,记录按自然数来标记存储。不能存储key相同的两条或更多记录。另外,每条记录的长度受到限制。读取方法和hash表的一样。TokyoCabinet是用C写的,同时提供c,perl,ruby,java的API。TokyoCabinet在提供了POSIX和C99的平台上都可用,它以GNULesserPublicLicense协议发布。3.3.性能介绍TokyoCabinet是日本人平林幹雄开发的一款DBM数据库,该数据库读写非常快,哈希模式写入100万条数据只需0.643秒,读取100万条数据只需0.773秒,是BerkeleyDB等DBM的几倍。TokyoTyrant加上TokyoCabinet,构成了一款支持高并发的分布式持久存储系统,对任何原有Memcached客户端来讲,可以将TokyoTyrant看成是一个Memcached,但是,它的数据是可以持久存储的。这一点,跟新浪的Memcachedb性质一样。3.4.tokyotyrant和Memcached的优势比较相比Memcachedb而言,TokyoTyrant具有以下优势:3.4.1.故障转移TokyoTyrant支持双机互为主辅模式,主辅库均可读写,而Memcachedb目前支持类似MySQL主辅库同步的方式实现读写分离,支持“主服务器可读写、辅助服务器只读”模式。这里使用$memcache-addServer而不是$memcache-connect去连接TokyoTyrant服务器,是因为当Memcache客户端使用addServer服务器池时,是根据“crc32(key)%current_server_num”哈希算法将key哈希到不同的服务器的,PHP、C和python的客户端都是如此的算法。Memcache客户端的addserver具有故障转移机制,当addserver了2台Memcached服务器,而其中1台宕机了,那么current_server_num会由原先的2变成1。引用memcached官方网站和PHP手册中的两段话:://cn.php.net/manual/zh/function.Memcache-addServer.phpFailovermayoccuratanystageinanyofthemethods,aslongasotherserversareavailabletherequesttheuserwon'tnotice.AnykindofsocketorMemcachedserverlevelerrors(exceptout-of-memory)maytriggerthefailover.Normalclienterrorssuchasaddinganexistingkeywillnottriggerafailover.3.4.2.日志文件体积小TokyoTyrant用于主辅同步的日志文件比较小,大约是数据库文件的1.3倍,而Memcachedb的同步日志文件非常大,如果不定期清理,很容易将磁盘写满3.4.3.超大数据量下表现出色但是,TokyoTyrant也有缺点:在32位操作系统下,作为TokyoTyrant后端存储的TokyoCabinet数据库单个文件不能超过2G,而64位操作系统则不受这一限制。所以,如果使用TokyoTyrant,推荐在64位CPU、操作系统上安装运行。3.5.安装notice**这里假定了tokyotyrant的版本是1.1.29,请注意.****请先安装tokyocabinet,再安装tokyotyrant.后者依赖前者**3.5.1.编译安装tokyocabinet数据库wget编译安装tokyotyrantwget的配置3.6.1.创建tokyotyrant数据文件存放目录mkdir-p/ttserver/3.6.2.启动tokyotyrant的主进程(ttserver)1.单机模式2.ulimit-SHn512003.ttserver-host127.0.0.1-port11211-thnum8-dmn-pid/ttserver/ttserver.pid-log/ttserver/ttserver.log-le-ulog/ttserver/-ulim128m-sid1-rts/ttserver/ttserver.rts/ttserver/database.tch4.双机互为主辅模
本文标题:Tokyocabinet_Tokyotyrant文档大合集
链接地址:https://www.777doc.com/doc-5524878 .html