`
willko
  • 浏览: 387026 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

轻量级持久存储系统 Tokyo 初窥篇

阅读更多
这套Tokyo系列有三个产品,Cabinet是数据库,Tyrant提供管理Cabinet的接口,Dystopia提供全文索引。我把Cabinet理解为存储引擎,Tyrant类似mysql的管理器,Dystopia则是插件。

Tokyo Cabinet是日本人开发的一款数据库,它的功能比较简单,只能键值保存,没有检索功能,以hash table、b+tree、fixed-length array保存。

Tokyo Cabinet有如下特点:
  • 键值保存数据库
  • 数据文件小
  • 高性能,插入1百万记录只需0.4秒(250万 rps),查询1百万记录只需0.3秒(300万 rps)
  • 高并发,支持多线程,读写支持锁记录
  • 使用简单,通过memcached客户端直接使用(需Tyrant)
  • 支持64位架构,容量大
  • 支持事务


Tokyo Tyrant提供管理Cabinet的接口,支持memcached协议,所以,可以通过memcached客户端连接Cabinet。

Tokyo Tyrant有如下特点:
  • 提供使用Cabinet的接口
  • 支持通过memcached和http协议连接
  • 高并发,查询100万记录17.2秒(5.8万 rps)
  • 支持热备份,复制功能,主持主主(可读写)和主从(分写和读)方式


用Cabinet加上Tyrant实现轻量级持久化存储系统,用来分担数据库的压力,实际上和新浪的memcachdb差不多。我的想法是用memcached做缓存,Tyrant持久储存频繁修改或者不需要检索功能的数据。

ok...先安装再说

1.安装Cabinet
要求
  • linux 不低于2.4
  • gcc 不低于3.1
  • zlib 不低于1.2.3
  • bzip2 不低于1.0.5

下载:http://tokyocabinet.sourceforge.net/tokyocabinet-1.4.5.tar.gz
引用
tar zxvf tokyocabinet-1.4.5.tar.gz
cd tokyocabinet-1.4.5
./configure
make
make install

引用
Options of Configure
The following options can be specified with `./configure'.

--enable-debug : build for debugging. Enable debugging symbols, do not perform optimization, and perform static linking.
--enable-devel : build for development. Enable debugging symbols, perform optimization, and perform dynamic linking.
--enable-profile : build for profiling. Enable profiling symbols, perform optimization, and perform dynamic linking.
--enable-static : build by static linking.
--enable-fastest : build for fastest run.
--enable-off64 : build with 64-bit file offset on 32-bit system.
--enable-swab : build for swapping byte-orders.
--enable-uyield : build for detecting race conditions.
--disable-zlib : build without ZLIB compression.
--disable-bzip : build without BZIP2 compression.
--disable-pthread : build without POSIX thread support.
--disable-shared : avoid to build shared libraries.


2.安装Tyrant
下载:http://tokyocabinet.sourceforge.net/tyrantpkg/tokyotyrant-1.1.14.tar.gz
引用
tar zxvf tokyotyrant-1.1.14.tar.gz
cd tokyotyrant-1.1.14
./configure
make
make install
mkdir -p /ttserver/
ttserver -host 192.168.1.254 -port 11311 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 1 -rts /ttserver/ttserver.rts /ttserver/database.tch


失望啊失望啊,用php memcached客户端连接Tyrant有bug(http://willko.iteye.com/blog/332982),Tyrant只提供了Perl和Ruby的客户端

参考资料:
http://tokyocabinet.sourceforge.net/
http://blog.s135.com/post/362.htm
分享到:
评论
2 楼 willko 2009-04-07  
Arden 写道

有一点不明白,既然它的数据是持久的,可是又不能检索,那我怎么把ttserver里的数据转移到象mysql这样的关系数据库里去啊?如果没有这种功能,那持久还有什么意义?

首先,我们分析下三种数据储存的优缺点

1.mysql
优点:强大的检索功能(相对于其它)
缺点:性能太差,并发低

2.memcached
优点:扩展容易,高性能,高并发
缺点:只能通过键查询,数据不持久

3.持久存储系统,memcachedb或tokyo Tyrant
优点:扩展容易,和mysql比高性能、高并发,和memcached比数据持久存储
缺点:只能通过键查询,只能做简单存储

ok.

memcached的应用场景只能用来做缓存,因为它是非持久的。

而持久存储系统可以用来代替mysql做一些存储,因为你不是所以数据都很重要和需要检索功能的。
例如,统计,如果你通过update set count = count + 1这样来统计,那mysql肯定受不了。例如,标志,如果你要开发博客,要记录作者今天是否有新日志,你可以用把最后发布日期放进持久存储里去。
也就是说持久存储系统可以用来代替mysql的部分存储,转移mysql的压力,并且解决memcached不能持久的问题。

memcachedb的作者已经很好的描述了应用场景,http://memcachedb.org/memcachedb-guide-1.0.pdf

只要理解他们的优缺点,进行搭配,我相信这是web2.0必备的三样数据存储工具,还有第四样是全文索引。

1 楼 Arden 2009-04-07  
有一点不明白,既然它的数据是持久的,可是又不能检索,那我怎么把ttserver里的数据转移到象mysql这样的关系数据库里去啊?如果没有这种功能,那持久还有什么意义?

相关推荐

    memcached,mongdb,redis,Tokyo Tyrant的安装和使用

    例如,Memcached适合简单的键值对存储,MongoDB适合处理复杂的文档结构,Redis适用于需要高速读写和多数据结构操作的场景,而Tokyo Tyrant则提供了一个轻量级的解决方案。 在学习和使用过程中,可能会涉及到的知识...

    tokyo cabinet tyrant研究资料

    3. 轻量级:相比于其他数据库服务器,Tokyo Tyrant占用资源少,启动快。 4. 易于备份和恢复:通过简单的文件复制即可完成数据库的备份和恢复。 Tokyo Cabinet 和 Tokyo Tyrant 的组合在某些特定场景下,如日志分析...

    ttserver

    Tokyo Cabinet 是一个非常著名的键值存储系统,提供了高效、轻量级的数据持久化解决方案。它支持BDB(Berkeley DB)和HDB(Hash DB)两种数据库类型,广泛应用于日志记录、配置管理、缓存服务等多个领域。 Tokyo ...

    php消息队列框架httpsqs

    HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key/Value 数据库来做数据的持久化存储。源代码不超过700行,整个软件不超过900KB...

    tokyotytrant

    Tokyo Tyrant的设计理念是简洁和速度,它不提供复杂的查询功能,但通过其轻量级的架构实现了极高的性能。 Tokyo Tyrant的核心特性包括: 1. **键值存储**:Tokyo Tyrant采用键值对(Key-Value)存储模型,其中键是...

    tokyocabinet-1.4.45.tar.gz

    Tokyo Cabinet是一个高效、轻量级且开源的数据库管理系统,主要设计用于在本地存储大量数据。这个名为"tokyocabinet-1.4.45.tar.gz"的压缩包文件包含的是Tokyo Cabinet的1.4.45版本源代码。在本文中,我们将深入探讨...

    张宴httpsqs所有文件安装文件

    总之,HTTPSQS是构建轻量级、高效的消息队列服务的优秀选择,结合libevent的网络处理能力和Tokyo Cabinet的数据存储能力,为开发者提供了简单而强大的工具。理解并熟练掌握这些组件的安装和使用,对于提升分布式系统...

    HTTPSQS源码分析

    Tokyo Cabinet是一个开源的嵌入式数据库,主要特点是轻量级且性能卓越。它支持多种数据存储方式,如B+树、哈希表等,并能够通过不同的存储模式来优化特定场景下的性能表现。 - **B+树**:适用于需要频繁进行范围...

    tokyotyrant-1.1.40.tar.gz

    TokyoTyrant是Tokyo Cabinet的一个网络服务器接口,它允许通过网络进行数据存取,提供了高性能、轻量级的数据存储解决方案。TokyoTyrant 1.1.40是该软件的一个版本,适用于CentOS 7 x64操作系统。在安装和使用...

    memcached全面剖析.docx

    由于其轻量级的设计,memcached 可以运行在内存中,不依赖于持久化存储,从而提供了极快的数据读取速度。 **1.2 memcached 的特征** - **协议简单**:memcached 使用简单的 ASCII 协议,使得它易于实现多种语言的...

    NoSQL简介习题.pdf

    10. Tokyo Tyrant的数据存储类型通常是永久性的,它是一个轻量级的键值数据库,常用于缓存和高速存储。 11. memcached的数组存储类型是临时性的,主要用于高速缓存,数据在服务器重启后会丢失。 12. 面向文档的...

    httpsqs1.7安装完整版

    HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key/Value 数据库来做数据的持久化存储。 本包为1.7版 已包含所需要的依赖:...

    dokeysto:愚蠢的OCaml键值存储

    dokeysto是一款基于OCaml语言开发的键值存储系统,设计用于提供简单而高效的数据持久化解决方案。...它的设计和实现充分利用了OCaml的特性,并结合了现代数据压缩技术,以提供一个轻量级、可靠的存储选项。

    httpsqs4j队列所需要用到的jar包

    Tokyo Cabinet是一个轻量级的键值对数据库,它提供了快速的读写性能和良好的数据持久性。在`httpsqs4j`中,Tokyo Cabinet可能被用作消息存储的后端,用于保存和检索消息。它的特性包括高效的B+树索引和多种数据压缩...

    tokyodb:东京内阁的Pharo包装纸

    Tokyo Cabinet是一个著名的键值存储系统,它提供了高效、轻量级的数据存储解决方案,而这个项目则将Tokyo Cabinet的功能引入到Pharo Smalltalk的环境中。 Pharo是一种面向对象的、动态类型的编程语言,它基于...

    Memcached 原理和使用详解

    Memcached是一款高效、轻量级的分布式内存缓存系统,由Danga Interactive公司的开发团队为LiveJournal设计并实现。它的主要目标是减轻数据库的负载,通过缓存数据和对象来提高动态Web应用的性能。Memcached的工作...

    tokyocabinet-1.4.30.tar

    Tokyocabinet是一款高效、轻量级且功能丰富的键值对数据库系统,广泛应用于日志存储、缓存服务以及各种数据持久化场景。其1.4.30版本的发布,意味着开发者们可以获取到最新的优化和改进。下面将详细探讨Tokyocabinet...

    fortran-tcdb:与东京内阁的Fortran 2008接口绑定

    东京内阁是一款高性能、轻量级的键值存储系统,适用于数据缓存、日志记录和持久化存储。它提供Btree和Hash表两种数据结构,支持事务处理,并具有高并发读写能力。 4. **Fortran-Tcdb接口**: Fortran-Tcdb库为...

    队列在编程中的实际应用(php)

    Ruby语言中的Starling是一个轻量级的持久化服务器,它支持MemCache协议,使得创建网络访问队列变得异常简单。Starling对于创建多点和多台机器间的异步工作进程具有重要意义,因为它可以处理大量的队列消息并保持服务...

Global site tag (gtag.js) - Google Analytics