Tokyo Cabinet & Tokyo Tyrant を使ってみた。 そして比較してみた
<ul><li>mixi の開発者の人が作った KVS です。 </li></ul><ul><li>KVS なので高速に動作します。 </li></ul><ul><li>memcached と高い互換性があります。 </li></ul><ul>...
じゃあ、 KVS って何? <ul><li>Key-Value Store  の略で、文字通り Key に対応した Value を 1 対 1 で持つデータ構造です。 </li></ul><ul><li>Perl などの多くの言語が持つ連想配列...
ファイル形式だと何が嬉しいの? <ul><li>memcached はメモリキャッシュなので、落ちたらそれまで。全て消えます。バックアップも難しいです。 </li></ul><ul><li>Tokyo Cabinet はファイル形式なので、 R...
<ul><li>#!/usr/bin/perl </li></ul><ul><li>use strict; </li></ul><ul><li>use Cache::Memcached::Fast; </li></ul><ul><li>my $...
実際にベンチしてみた 尚、 100 万件で試した場合、 memcached, TC ともにほぼ 10 倍でした。 ( MySQL は怖かったのでやってません) 100 万件入れた時のファイルのサイズは、 32MB でした。 ( Key, Val...
<ul><li>[user@kvs1 ~]$ telnet localhost 1978 </li></ul><ul><li>Trying 127.0.0.1... </li></ul><ul><li>Connected to localhos...
<ul><li>#!/bin/sh </li></ul><ul><li>#---------------------------------------------------------------- </li></ul><ul><li># ...
まとめ <ul><li>memcached の 70% ほどのパフォーマンスなので、十分高速。 </li></ul><ul><li>ファイル形式である運用上のメリットを考えるとアリだと思います。 </li></ul><ul><li>インストール...
Upcoming SlideShare
Loading in …5
×

エンジニア知識共有会発表資料_20091008_TokyoCabinet

2,338 views
2,287 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,338
On SlideShare
0
From Embeds
0
Number of Embeds
210
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

エンジニア知識共有会発表資料_20091008_TokyoCabinet

  1. 1. Tokyo Cabinet & Tokyo Tyrant を使ってみた。 そして比較してみた
  2. 2. <ul><li>mixi の開発者の人が作った KVS です。 </li></ul><ul><li>KVS なので高速に動作します。 </li></ul><ul><li>memcached と高い互換性があります。 </li></ul><ul><li>ファイル形式です。 ( on memory も選択可能) </li></ul>Tokyo Cabinet : ライブラリ群 Tokyo Tyrant : サーバ Tokyo Cabinet, Tokyo Tyrant って何?
  3. 3. じゃあ、 KVS って何? <ul><li>Key-Value Store の略で、文字通り Key に対応した Value を 1 対 1 で持つデータ構造です。 </li></ul><ul><li>Perl などの多くの言語が持つ連想配列 ( ハッシュ ) と同じです。 </li></ul>じゃあ、 KVS だとなぜ速いの? <ul><li>Key の値をハッシュ関数に渡して、得られた値(ハッシュ値)が、 </li></ul><ul><li>格納場所を示す値になるため、一回の探索で済む。->ハッシュ探索 </li></ul>ハッシュ探索 線形探索 二分探索 計算量 O (1) 一回で見つかる O (n) n の数に比例する O (log n) 一回の探索で残りの探索が n/2 になる 例 開発言語標準の連想配列 Berkeley DB Memcached Tokyo Cabinet 順次ファイル(追記型ログ) 配列(非ソート) 配列(ソート済)
  4. 4. ファイル形式だと何が嬉しいの? <ul><li>memcached はメモリキャッシュなので、落ちたらそれまで。全て消えます。バックアップも難しいです。 </li></ul><ul><li>Tokyo Cabinet はファイル形式なので、 RAID の恩恵が得られますし、バックアップもファイルなので容易です。 </li></ul>注)メモリ形式も可能です。
  5. 5. <ul><li>#!/usr/bin/perl </li></ul><ul><li>use strict; </li></ul><ul><li>use Cache::Memcached::Fast; </li></ul><ul><li>my $srvport = &quot;localhost:1978&quot;; </li></ul><ul><li>#my $srvport = &quot;localhost:11211&quot;; </li></ul><ul><li>my $cache = Cache::Memcached::Fast->new({servers=>[$srvport]}); </li></ul><ul><li>$cache->set('KEY', 'VALUE'); </li></ul><ul><li>my $val = $cache->get('KEY'); </li></ul><ul><li>$cache->set('KEY2', '0'); </li></ul><ul><li>$cache->incr(‘KEY2'); </li></ul>Cache::Memcached::Fast などがそのまま使えます。 memcached が持つほとんど命令を使えます。 memcahched との高い互換性
  6. 6. 実際にベンチしてみた 尚、 100 万件で試した場合、 memcached, TC ともにほぼ 10 倍でした。 ( MySQL は怖かったのでやってません) 100 万件入れた時のファイルのサイズは、 32MB でした。 ( Key, Value ともに、 10 文字以下程度) 内容 Memcached TC&TT MySQL 10 万件の保存と取得 15.5 秒 21.7 秒 2 分 45 秒 10 万件の取得 7.5 秒 11.7 秒 1 分 11 秒 10 万件の取得 2 回目 - - 32 秒 10 万件の挿入 8.6 秒 10.2 秒 InnoDB 1 分 34 秒 MyISAM 57 秒
  7. 7. <ul><li>[user@kvs1 ~]$ telnet localhost 1978 </li></ul><ul><li>Trying 127.0.0.1... </li></ul><ul><li>Connected to localhost (127.0.0.1). </li></ul><ul><li>Escape character is '^]'. </li></ul><ul><li>stats </li></ul><ul><li>STAT pid 29241 </li></ul><ul><li>STAT uptime 86683 </li></ul><ul><li>STAT time 1254898343 </li></ul><ul><li>STAT version 1.1.34 </li></ul><ul><li>STAT rusage_user 10.360424 </li></ul><ul><li>STAT rusage_system 13.041017 </li></ul><ul><li>STAT curr_items 69453 </li></ul><ul><li>STAT bytes 8222544 </li></ul><ul><li>END </li></ul>TokyoTyrant とやりとりしてみる [user@kvs1 ~]$ telnet localhost 11211 Trying 127.0.0.1... Connected to localhost (127.0.0.1). Escape character is '^]'. stats STAT pid 19961 STAT uptime 306231 STAT time 1254891294 STAT version 1.2.6 STAT pointer_size 32 STAT rusage_user 5.395179 STAT rusage_system 11.608235 STAT curr_items 29483 STAT total_items 53887 STAT bytes 8181340 STAT curr_connections 5 STAT total_connections 53907 STAT connection_structures 9 STAT cmd_get 29383 STAT cmd_set 53887 STAT get_hits 24405 STAT get_misses 4978 STAT evictions 0 STAT bytes_read 15168129 STAT bytes_written 7480029 STAT limit_maxbytes 67108864 STAT threads 4 END TokyoTyrant memcached [user@kvs1 ~]$ telnet localhost 11211 Trying 127.0.0.1... Connected to localhost (127.0.0.1). Escape character is '^]'. set key-001 0 0 5 12345 STORED get key-001 VALUE key-001 0 5 12345 END 保存と参照
  8. 8. <ul><li>#!/bin/sh </li></ul><ul><li>#---------------------------------------------------------------- </li></ul><ul><li># Startup script for the server of Tokyo Tyrant </li></ul><ul><li>#---------------------------------------------------------------- </li></ul><ul><li># chkconfig: 345 85 15 </li></ul><ul><li># description: Startup script for the server of Tokyo Tyrant </li></ul><ul><li># processname: tokyotyrant </li></ul><ul><li># configuration variables </li></ul><ul><li>prog=&quot; ttserver &quot; </li></ul><ul><li>cmd=&quot; /usr/local/bin/ttserver &quot; </li></ul>TokyoTyrant を Service で起動する # vi /usr/local/sbin/ttservctl # ln –s /usr/local/sbin/ttservctl /etc/init.d/ttserver # chkconfig --list ttserver ttserver 0:off 1:off 2:off 3:on 4:on 5:on 6:off # service ttserver start Starting the server of Tokyo Tyrant Executing: /usr/local/bin/ttserver -port 1978 -dmn -pid /var/ttserver/pid Done
  9. 9. まとめ <ul><li>memcached の 70% ほどのパフォーマンスなので、十分高速。 </li></ul><ul><li>ファイル形式である運用上のメリットを考えるとアリだと思います。 </li></ul><ul><li>インストールは ./configure と make install だけ。 </li></ul><ul><li>トラブルもとくに無かったです。 </li></ul>memcached TC&TT 速度 - memcached 比 70 % 形式 オンメモリー ファイル オンメモリー 実績 枯れていて実績多数 Mixi など

×