SlideShare una empresa de Scribd logo
1 de 15
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 "$ret"; 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

Más contenido relacionado

Similar a Tokyo tyrant

テクてく Lotus 技術者夜会 03/16 Lotus Notes/Domino Upgrade Pack とは
テクてく Lotus 技術者夜会 03/16 Lotus Notes/Domino Upgrade Pack とはテクてく Lotus 技術者夜会 03/16 Lotus Notes/Domino Upgrade Pack とは
テクてく Lotus 技術者夜会 03/16 Lotus Notes/Domino Upgrade Pack とは
Hiroaki Komine
 
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
Sphinxで作る貢献しやすいドキュメント翻訳の仕組みSphinxで作る貢献しやすいドキュメント翻訳の仕組み
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
Takayuki Shimizukawa
 

Similar a Tokyo tyrant (20)

Lombok ハンズオン
Lombok ハンズオンLombok ハンズオン
Lombok ハンズオン
 
GTMF 2016:「KiQ」が拓くゲームサーバの未来 株式会社アトミテック
GTMF 2016:「KiQ」が拓くゲームサーバの未来 株式会社アトミテックGTMF 2016:「KiQ」が拓くゲームサーバの未来 株式会社アトミテック
GTMF 2016:「KiQ」が拓くゲームサーバの未来 株式会社アトミテック
 
make x dockerで作るAlpaca流開発環境
make x dockerで作るAlpaca流開発環境make x dockerで作るAlpaca流開発環境
make x dockerで作るAlpaca流開発環境
 
Moby Project (May 25, 2017, Tokyo)
Moby Project (May 25, 2017, Tokyo)Moby Project (May 25, 2017, Tokyo)
Moby Project (May 25, 2017, Tokyo)
 
高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマット高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマット
 
OpenStack Summit Vancouver YVR Ops
OpenStack Summit Vancouver YVR OpsOpenStack Summit Vancouver YVR Ops
OpenStack Summit Vancouver YVR Ops
 
BuildKitによる高速でセキュアなイメージビルド (LT)
BuildKitによる高速でセキュアなイメージビルド (LT)BuildKitによる高速でセキュアなイメージビルド (LT)
BuildKitによる高速でセキュアなイメージビルド (LT)
 
Miyazaki Resistanceを作ってみたよ
Miyazaki Resistanceを作ってみたよMiyazaki Resistanceを作ってみたよ
Miyazaki Resistanceを作ってみたよ
 
エンタープライズブロックチェーン構築の基礎
エンタープライズブロックチェーン構築の基礎エンタープライズブロックチェーン構築の基礎
エンタープライズブロックチェーン構築の基礎
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今
 
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPCZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
 
Dll Injection
Dll InjectionDll Injection
Dll Injection
 
Moby Project
Moby ProjectMoby Project
Moby Project
 
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
 
テクてく Lotus 技術者夜会 03/16 Lotus Notes/Domino Upgrade Pack とは
テクてく Lotus 技術者夜会 03/16 Lotus Notes/Domino Upgrade Pack とはテクてく Lotus 技術者夜会 03/16 Lotus Notes/Domino Upgrade Pack とは
テクてく Lotus 技術者夜会 03/16 Lotus Notes/Domino Upgrade Pack とは
 
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホンそろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
 
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)DockerCon参加報告 (`docker build`が30倍以上速くなる話など)
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)
 
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.keyPlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key
 
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
 
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
Sphinxで作る貢献しやすいドキュメント翻訳の仕組みSphinxで作る貢献しやすいドキュメント翻訳の仕組み
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
 

Más de kounan13

Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 springSwagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
kounan13
 
Salesforce.com
Salesforce.comSalesforce.com
Salesforce.com
kounan13
 
E4勉強会 事後修正版
E4勉強会 事後修正版E4勉強会 事後修正版
E4勉強会 事後修正版
kounan13
 

Más de kounan13 (10)

20201023 Builders Box 2nd Enterprise Architect
20201023 Builders Box 2nd Enterprise Architect20201023 Builders Box 2nd Enterprise Architect
20201023 Builders Box 2nd Enterprise Architect
 
20200515 api meetup online #1
20200515 api meetup online #120200515 api meetup online #1
20200515 api meetup online #1
 
20180915 mynavi rpa_seminar
20180915 mynavi rpa_seminar20180915 mynavi rpa_seminar
20180915 mynavi rpa_seminar
 
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 springSwagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
 
20180525 system department manager microservices
20180525 system department manager microservices20180525 system department manager microservices
20180525 system department manager microservices
 
20170911 API Meetup Tokyo #21
20170911 API Meetup Tokyo #2120170911 API Meetup Tokyo #21
20170911 API Meetup Tokyo #21
 
Microservices
MicroservicesMicroservices
Microservices
 
はじめてのSQLチューニング(oracle)
はじめてのSQLチューニング(oracle)はじめてのSQLチューニング(oracle)
はじめてのSQLチューニング(oracle)
 
Salesforce.com
Salesforce.comSalesforce.com
Salesforce.com
 
E4勉強会 事後修正版
E4勉強会 事後修正版E4勉強会 事後修正版
E4勉強会 事後修正版
 

Tokyo tyrant