タグ

tokyotyrantとdatabaseに関するbasiのブックマーク (4)

  • PHPでTokyo Cabinetハッシュデータベースサーバを作ってみた - 讃容日記

    Tokyo Cabinetのデータベースは書き込みモードで開くと排他ロックがかかるので、Apache2 (prefork)+mod_phpCGIのようなリクエストごとにPHPのプロセスが分かれているWebアプリケーションでTokyo Cabinetを読み書き両用で使うのは苦しいものがあります。(コードの書き方を工夫すればロックの影響を小さくできる場合もあります) そこで、PHPでHTTPベースのハッシュデータベースサーバを作ってみました。このサーバはPHP 5.2、tokyocabinet拡張モジュール、PECLのhttp拡張モジュールを使います。ソケットの操作にはPHP組み込みのストリーム関数を用い、sockets拡張モジュールは使いません。 <?php class TCHDBServer { static private $statuses = array( 100 => 'Cont

    PHPでTokyo Cabinetハッシュデータベースサーバを作ってみた - 讃容日記
  • DBMによるデータベースサーバ - mixi engineer blog

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

    DBMによるデータベースサーバ - mixi engineer blog
  • プラグインで独自ストレージを作ろう - mixi engineer blog

    OpenSocialとかC++0xとか世の中の流れが早すぎて、いろいろと勉強しなきゃなと焦りつつも、ついついピクミン2にはまってしまうmikioです。今回はTokyo Tyrant(TT)を使ってユーザ独自のストレージシステムを簡単に構築する方法について説明します。 プラグインとは オブジェクト指向プログラミングに慣れた人にとっては、インターフェイスと実装を分離することによってプログラムの拡張性や保守性を向上させる技法(データ抽象)は常識ですよね。その考えをさらに進めると、インターフェイスのみをプログラムに記述しておいて、具体的な実装は実行時に割り当てるという、いわゆるプラグイン(plug-in)という技法に至ります。プラグインでカスタマイズできる能力をプラガブル(pluggable)などと言ったりもします。 例えばTokyo Cabinet(TC)では、レコードの挿入、削除、参照といった

    プラグインで独自ストレージを作ろう - mixi engineer blog
  • Tokyo Tyrantによるリアルタイム検索 - mixi engineer blog

    どうぶつの森にハマって、たぬきち商店が早終いする関係で退勤時間もめっさ早くなったmikioです。今回は、Tokyo TyrantのキャッシュとLua拡張を使って超お手軽にリアルタイム検索システムを作る方法について述べます。 ユースケース 高い頻度で更新されるWeb上のテキストをリアルタイムに検索したいと思ったことはありませんか? mixi日記や各種のブログサービスやRSSリーダなどで扱う大量のコンテンツを安価かつ簡単に検索したいと思ったことはありませんか? 私は結構あります。要件を箇条書きすると以下のような感じでしょうか。 最新データの合計100万件くらいを検索できればよく、古いデータは自動的に消えてほしい。 ただし、更新はリアルタイムにして、書いた瞬間に検索結果に反映されてほしい。 サーバ1台で更新1000qpsおよび検索100qpsは処理したい。 再現率よりも精度とリアルタイム性を重視

    Tokyo Tyrantによるリアルタイム検索 - mixi engineer blog
  • 1