2 12椛澤「tokyo tyrant」

890 views
834 views

Published on

TokyoTyrantについて調べたことをまとめました。

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
890
On SlideShare
0
From Embeds
0
Number of Embeds
240
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

2 12椛澤「tokyo tyrant」

  1. 1. TokyoTyrantについて 椛澤 嘉弘
  2. 2. 今回のLT• TokyoTyrantの紹介• その素晴らしさ• 今回で何に使っているのか• 使っていて困ったことは何か
  3. 3. TokyoTyrantってなに?• 不揮発性のKVSです。• MySQLのようなトランザクション処理、他 テーブルとの結合ができるRDBMSではな く、 分散処理に向いた速度を追求したNoSQLで す。どのくらい早いのかベンチマークhttp://gihyo.jp/dev/serial/01/various-
  4. 4. TokyoTyrantというかNoSQLの特 徴• ベンチマークから分かるように、かなり 早い。• 特にデータの読み込みはかなり早いの で、 ソーシャルゲームなどのフラグ管 理に良くつかわれる。• スケールアウトしやすい。詳しくはhttp://www.atmarkit.co.jp/flinux/rensai/noSQL/ noSQL_01/01_1.html
  5. 5. 今回はどんなことに使っているの か。• 現在のスタミナ、スタミナの最大値• 現在のマナ• 今どこのダンジョンにいるのか• 一番進んでいるダンジョンはどこか• ガチャが回せるかフラグ• ログイン処理• ダンジョンで消費するスタミナ• などなど
  6. 6. 具体的な使い方1• KVSなので、少しだけ面白い使い方を します。(ex)スタミナの挿入・取得tt->put(“stamina_”.$user_id,$stamina);tt->get(“stamina_”.$user_id);
  7. 7. 具体的な使い方2• MySQLのようなテーブル型のDBならば $user_idを入力するだけで全ての情報を取 り出せるのですが、今回はテーブル型で はなく、KVS型でやっているので$user_idの前に、カラム名のように名前を付けることで適切 なデータの挿入・取得を行っています。詳しくは、tt_game.phpに関数をまとめてお いたので、暇な時に見てください。
  8. 8. 今回使っていて困ったこと1• TokyoTyrantをphpから触るために Net_TokyoTyrantというPEARの提供するラ イブラリを使いました。• そのためTokyoTyrantの醍醐味ともいえる add()が使えない。(中身見ると実装され てなかったり)
  9. 9. その対策1• add()を一番使いたかったのは、mana関係• Staminaなどは毎回取得して判定を行わな ければならなかったにも関わらず、mana は中身を気にせずインクリメントしてい きたかった。• Net_TokyoTyrantを変更する、PEARではな くPECLの提供するTTを使う。などあったの ですが、リクエストが1回増える程度な のでとりあえず放置しています。
  10. 10. 今回使っていて困ったこと2• phpは動的に変数の型を決めるのですが、 Net_TokyoTyrantの中ではValueが強制的に String型に変更されているため、ガチャフ ラグに0と1を使おうとしていたのです が、 phpあるある的にstirng型の0や”0”などは全 てnullになっちゃうっていう怖さ。配列の 0,0,0は入るんだけど、 stirng型の0は入ら ないんですね。
  11. 11. その対策2• Dungeonの情報については、どのダンジョンにどのフロアにどのルームにいるのかという情報があった ので、配列をJSONエンコードして、データを入れ ております。
  12. 12. TokyoTyrantについて 椛澤 嘉弘文字ばっかりでさーせんした!

×