• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Tokyo tyrant
 

Tokyo tyrant

on

  • 2,639 views

 

Statistics

Views

Total Views
2,639
Views on SlideShare
2,619
Embed Views
20

Actions

Likes
1
Downloads
9
Comments
0

3 Embeds 20

https://jujo00obo2o234ungd3t8qjfcjrs3o6k-a-sites-opensocial.googleusercontent.com 11
http://jujo00obo2o234ungd3t8qjfcjrs3o6k-a-sites-opensocial.googleusercontent.com 8
http://a0.twimg.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Tokyo tyrant Tokyo tyrant Presentation Transcript

    • Tokyo Tyrant
      1
    • Tokyo Tyrantとは
      mixi平林氏が作成したTokyo Cabinet DBMのネットワークインターフェイス
      DBM≒KVS
      プロトコル
      独自のプロトコル
      memcachedとの互換プロトコル
      HTTP
      Tokyo Cabinetは非常に高速に動作
      データをディスクに書き出すことができる実装ですが,非常に高速
      Pythonのmemcachedクライ
      アントを使って、1万回set
      http://gihyo.jp/dev/feature/01/memcached/0005?page=3
      http://d.hatena.ne.jp/tohae/20100626/1277538040
      2
    • 開発元、対応言語、ライセンス
      FAL Labs
      FAL Labsは平林初生と平林幹雄による個人事業です。私達はオープンソースソフトウェア製品群の開発とライセンシングを行っています。
      http://fallabs.com/
      Tokyo Tyrant is written in the C language, and provided as API of C, Perl, and Ruby.
      Tokyo Tyrant is a free software licensed under the GNU Lesser General Public License.
      3
    • ちなみにDBMって?
      データベースの一種。Berkeley DBも参照。
      dbm (Database Manager)はデータベースの分類の一つであり、データベース管理システム(リレーショナルデータベースなど)よりはるかに単純な構造をしている。
      ファイル上にキーと値のペアをハッシュを使って高速にアクセスできるように配置したもの、またはそれを管理するシステムである。ほとんどのものはトランザクション機能がない。
      http://ja.wikipedia.org/wiki/DBM
      4
    • memcachedって?
      高性能な分散メモリキャッシュサーバ
      LRU
      シンプルなプロトコル
      memcached同士での通信は行わない分散方式
      クライアントの実装に依存
      $ telnet localhost 11211
      Trying 127.0.0.1...
      Connected to localhost.localdomain (127.0.0.1).
      Escape character is '^]'.
      set foo 0 0 3  (保存コマンド)
      bar    (データ)
      STORED  (結果)
      get foo   (取得コマンド)
      VALUE foo 0 3 (データ)
      bar    (データ)
      http://gihyo.jp/dev/feature/01/memcached/0001
      5
    • memcachedのクライアント
      memcachedに接続をするクライアントラブイラリには,PerlやPHPをはじめ,さまざまな言語の実装があります。memcachedのサイトに載っている言語だけでも,
      Perl
      PHP
      Python
      Ruby
      C#
      C/C++
      Lua
      http://gihyo.jp/dev/feature/01/memcached/0001?page=2
      6
    • memcached互換
      repcached
      http://repcached.lab.klab.org
      memcachedにレプリケーションの機能をつけるパッチとして提供
      Flared
      http://labs.gree.jp/Top/OpenSource/Flared.html
      QDBMに保存する実装。非同期レプリケーションやフェイルオーバーなども実装されている
      memcachedb
      http://memcachedb.org
      BerkeleyDBにデータを保存する実装。メッセージキューの実装プロジェクトも進められている
      7
      ※WEB+DB PRESS Vol.47mixi,ニコニコ動画,livedoor[実例から学ぶ]memcachedベストプラクティス
    • javaの例
      8
    • perlの例
      #!/usr/bin/perl
      use strict;
      use warnings;
      use Cache::Memcached;
      my $key = "foo";
      my $value = "bar";
      my $expires = 3600; # 1 hourmy $memcached = Cache::Memcached->new({
      servers => ["127.0.0.1:11211"],
      compress_threshold => 10_000
      });$memcached->add($key, $value, $expires);
      my $ret =$memcached->get($key);
      print "$retn";
      9
      http://gihyo.jp/dev/feature/01/memcached/0001?page=3
    • mixiの事例(つかいどころ)
      mixiではTokyo Tyrantをキャッシュサーバとしてではなく,key-valueの組み合わせを保存するDBMSとして利用しています。
      導入した箇所はユーザの最終アクセス時間を保存するDBで,mixiのサービスのほぼすべてに関連し,ユーザがページにアクセスするたびにデータをアップデートするので負荷も非常に高くなります。
      MySQLには非常に重たい処理になり,memcachedのみにデータを保存する形ではデータが失われる可能性があるためTokyo Tyrantが導入されています。
      クライアントとして新規に開発を行わずに,Cache::Memcached::Fast(Perl)がそのまま利用できるのも大きな利点です。
      10
    • 平林幹雄氏によると
      http://fallabs.com/mikio/mydata/tech-upload/1259647541-tokyofaq.pdf
      11
    • mixiで起きた障害について
      『mixi』のデータベースへの負荷軽減のために導入しているデータキャッシュシステムが複数同時に異常終了したことに伴い、データベースへの負荷が急増したため『mixi』を閲覧しづらい状態となりました。
      高負荷かつ特殊な状態でのみデータキャッシュシステムの異常終了が発生していたため、根本的な原因の究明に時間がかかることとなりました。
      http://news.livedoor.com/article/detail/4941874/
      12
    • Tokyo Tyrantがどういう仕組みで動いているのか
      ハッシュデータベース
      B+木データベース
      テーブルデータベース
      13
      http://alpha.mixi.co.jp/blog/?p=290
    • テーブルデータベースへのアクセス
      14
      http://alpha.mixi.co.jp/blog/?p=318
    • 参考文献
      TokyoシリーズのFAQ
      http://fallabs.com/mikio/mydata/tech-upload/1259647541-tokyofaq.pdf
      memcached互換のNoSQLデータベース「Membase」がオープンソースで登場
      http://www.publickey1.jp/blog/10/memcashednosqlmembase.html
      15