タグ

tokyotyrantに関するshimookaのブックマーク (11)

  • php-tokyo tyrant で tch だとtcrdbtblgenuid関数が失敗して Segmentation faultする件 - お前の血は何色だ!! 4

    php-tokyo tyrant を利用して、ディフォルトのままでsession.save_handler = tokyo_tyrant ととすると、Segmentation fault がおきる問題があったので書いてみる。 環境構築 tokyo tyrant をインストールする インストールの前に、checkinstallというソフトを利用すると、パッケージを自動で作ってくれて便利です。 まずはこれを導入します。 checkinstallでぐぐってrpm見つけてきてねw //centso系 or apt-get install checkinstall //debian系 //まずtokyo cabinetをインスコします。 cd wget http://1978th.net/tokyocabinet/tokyocabinet-1.4.43.tar.gz tar zxvf tokyoca

    php-tokyo tyrant で tch だとtcrdbtblgenuid関数が失敗して Segmentation faultする件 - お前の血は何色だ!! 4
  • Tokyo TyrantとテーブルDBでリアルタイム検索 - mixi engineer blog

    ドラクエは卒業して、もっと英語漬けをやっているmikioです。さて今回は、データベースサーバTokyo Tyrantとテーブルデータベースを使ってリアルタイム検索システムを構築する方法について語ります。 テーブルDBを分散させたい Tokyo TyrantでもテーブルDBがサポートされているわけですが、これはリアルタイム検索システムへの布石です。テーブルDBは任意のコラムにインデックスを張ることができ、時系列のコラムにインデックスを張ればその値によって古いコラムを効率的に消すことができます。チュートリアルの「Persistent but Expirable Cache」でもその方法を示しています。また、任意のコラムに分かち書きトークン方式もしくは文字N-gram方式で転置インデックスを張ることができます。これらを総合すると、最新のデータのみを保持してサイズと性能を一定に保ったインデックスを

    Tokyo TyrantとテーブルDBでリアルタイム検索 - mixi engineer blog
  • ウノウラボ Unoh Labs: Tokyo Tyrantを使ってみて

    yamaokaです。 通常のデータベースとしてではなく、Key-Valueストアの選択肢として Tokyo Tyrantを少しずつ使ってみています。 実際に運用するにあたって、いくつか行ったことを書いておきます。 ちなみに、現在の構成は1台のみでの運用です。 マルチマスター構成やレプリケーションなどは行っていません。 PHPのクライアント Tokyo Tyrantを利用するのはPHPのアプリケーションからです。 最初はmemcachedプロトコルを利用して PECL::memcacheを使っていましたが、 データの大量更新を連続で行うとデータの取得が正常に行えなくなる現象が発生したため、 Net_TokyoTyrantを一部改変したものをライブラリとして利用しています。 パフォーマンスではPECL::memcacheに負けますが、クリティカルな処理をしていないこともあり、 今のところ問題に

    shimooka
    shimooka 2009/10/30
    うちもWebサーバが複数台になったら、セッション管理での利用を考えてみる
  • DBMによるテーブルデータベース その五 - mixi engineer blog

    ついに発売されたスト4のコンシューマ機版をやりたくてしょうがないけど筐体を買ってもらえないので、駅前のゲーム屋のディスプレー前で垂涎するばかりのmikioです。今回は連載の最終回で、各種スクリプト言語を使ってお手軽にテーブルデータベースを操作する方法について説明します。 TokyoCabinet::TDB まずは、TCのPerlバインディングとRubyバインディングの最新版を入手してください。それぞれテーブルデータベースを扱うための TokyoCabinet::TDB というクラスが加わっています。以下のようなIDLによるガイドラインに準拠したインターフェイスが提供されますので、使い方は言語にかかわらず同じようになるはずです。 module TokyoCabinet { interface TDB { boolean open(in string path, in long omode);

    DBMによるテーブルデータベース その五 - mixi engineer blog
  • DBMによるテーブルデータベース その四 - mixi engineer blog

    コアライブラリを一生懸命書くとユーティリティやバインディングなどの周辺機能がおろそかになり、逆も然りで、工数割り当てのジレンマが歯がゆいmikioです。今回は余談として、Tokyo Cabinetのテーブルデータベース(TCTDB)を作る途中で思いついた更新機能と性能検証について述べます。 アトミックな更新 再び TCTDBで好評だったっぽいアトミックな更新機能をその他のデータベースでも実装してみました。例えばハッシュデータベース(TCHDB)では以下の関数が提供されます。 typedef void *(*TCPDPROC)(const void *vbuf, int vsiz, int *sp, void *op); bool tchdbputproc(TCHDB *hdb, const void *kbuf, int ksiz, const char *vbuf, int vsiz,

    DBMによるテーブルデータベース その四 - mixi engineer blog
  • DBMによるテーブルデータベース その参 - mixi engineer blog

    最近、忙しさを理由に英会話レッスンをサボりがちになってよろしくないなと猛省するmikioです。今回は、Tokyo CabinetのテーブルデータベースをTokyo Tyrantを使ってデータベースサーバとして利用する方法について述べます。 とりあえず使ってみる Tokyo CabinetとTokyo Tyrantの最新版(1.4.4と1.1.12)がリリースされていますので、インストールしておいてください。またも社員名簿を作ってみましょう。まずは、TTのサーバを実行します。データベースファイルの接尾辞には「.tct」を指定して、テーブルデータベースファイルと接続します。 ttserver casket.tct 別の端末でクライアントを操作して、"put" コマンドで社員を登録しましょう。「-sep」は、コラムのキーと値を区切る文字を指定するオプションです。"|" 以外でも任意の区切り文字を

    DBMによるテーブルデータベース その参 - mixi engineer blog
  • DBMによるデータベースサーバ - mixi engineer blog

    DSのスターフォックスというゲームにはまりまくりのmikioです。最近社内外で「俺ストレージサーバ」を作るのが流行っているようなので私も参戦してみました。今回はDBMのネットワーク層をほぼスクラッチで作った話をします。 Tokyo Tyrant Tokyo Tyrant(以下TT)はTokyo Cabinet(以下TC)をラップしてネットワーク越しに操作できるようにするツールです。キャビネット(内閣)を傀儡にするタイラント(僭主)ということで名付けました。ダウンロードはこちら。 TCは高性能なDBMで、マルチスレッドモデルで高い並列性を実現していますが、逆にマルチプロセスモデルだとファイルロックがかかるので並列性が低くなってしまいます。つまり、書き込みモードでデータベースにアクセスしているプロセスがいると、その間は他のプロセスがデータベースに接続しようとするとブロックされることになります。

    DBMによるデータベースサーバ - mixi engineer blog
  • TTはじめました - スコトプリゴニエフスク通信

    あの人も、この人もTokyo Tyrantを使っているということで、僕も試してみることにした。 インストールSourceForgeのダウンロードページより最新版のTokyo Cabinet, Tokyo Tyrantのダウンロード。 $ wget "http://downloads.sourceforge.net/tokyocabinet/tokyocabinet-1.2.5.tar.gz?modtime=1209093521&big_mirror=0" $ tar xzf tokyocabinet-1.2.5.tar.gz $ cd tokyocabinet-1.2.5 $ ./configure $ make $ sudo make install $ wget "http://downloads.sourceforge.net/tokyocabinet/tokyotyrant-0.9

  • というわけで - cocoiti's diary

    あ、ありのままおこったこと話すぜ。 昨日の日記を書いたあと、目がさめたら、Tokyo TyrantのネイティブのAPIをしゃべるPure PHPライブラリができていた。超能力(ry 以下言い訳が長いので先に結論を 結論:「codereposに晒してみました。誰か適当に直してください!」 というわけで、小人さんが書いたので、コメントもまともなテストもないし、ライセンス表示とか著作権表示すらまともに書いてないっていうか、もともと、つながるかテストするために関数で書いてたのがここまでいつのまにか広がったものだし、あ、あなたのために書いたじゃないんだからねっっ!別によく考えたらTT、別にすぐ使わないし、そもそもmemcached互換のインターフェースで基、間に合うし(ただ、httpとかmemcached互換のインターフェースだと一部、使えない機能がある。)しかも参考になりそうなソースがCしかなか

    というわけで - cocoiti's diary
  • mixi Engineers’ Blog » Tokyo Tyrantによる耐高負荷DBの構築

    連休中はWiiのマリオカートをやりまくってやっとVR7000越えたmikioです。愛車はマッハ・バイクとインターセプターです。さて今回は、分散ハッシュデータベースサーバTokyo Tyrantでmixiの最終ログイン時刻を管理するようにした時の苦労話を書きます。 ログイン処理は負荷地獄 mixiでは、全てのユーザについて、各々の最終ログイン時刻を管理しています。「マイミクシィ一覧」や「お気に入り」などの画面で、友人が近い時間にログインしていてコミュニケーションがとりやすい状態にあるかどうか確認できるようにするためです。 mixiのほぼ全てのページはログインしないと見られないページなので、ほぼ全てのページにアクセスされるたびにログイン確認が行われます。したがって、最終ログイン時刻はほぼ全てのページにアクセスされる度に更新されることになります。mixiの中で最も重いデータベースのひとつとして「

    mixi Engineers’ Blog » Tokyo Tyrantによる耐高負荷DBの構築
  • Tokyo TyrantによるHAハッシュDBサーバの構築 - mixi engineer blog

    来年のバレンタインデーに、正確には「2009-02-14T08:31:30+09:00」に、UNIX時間が「1234567890」を迎えることを発見してちょっと嬉しいmikioです。さて、今回は高効率ハッシュデータベースサーバTokyo Tyrantを用いてHAハッシュデータベースを構築する手法についてご紹介します。ちょっと難しいし非常に長い内容なのですが、最後までお付き合いくださいませ。 可用性と保全性 HA(High Availability:高可用性)とは、可用性(Availability)が高いことです。それでは説明になっていないので詳しく言い替えますと、システムに障害が起きにくくすることと、たとえ障害が起きたとしてもできるだけ迅速に復旧できるようにすることです。データベース系のシステムはユーザのデータを管理するという中核的役割を担うため、可用性を高めることは最も重要な課題となりま

    Tokyo TyrantによるHAハッシュDBサーバの構築 - mixi engineer blog
  • 1