タグ

Kyoto Cabinetに関するyassのブックマーク (3)

  • 開発メモ: Kyoto Tycoonのプロトコル再設計

    HTTPベースで任意のRPCコールができるように、プロトコルを汎用化したい。KT以外のユースケースでも、パラメータ等の解析部分は同じコードを使いまわしたい。その考察。 動機:実装を簡単にしたい 前回述べたHTTPServerクラスを作ったことで、HTTPベースのサービスを作るのが非常に容易になった。そしてその目的は、Kyoto Cabinetのデータベースを操作する各種メソッドをRPCで操作することである。でも、まてよ、「RPCで操作する」ってとこだけ抜き出してもう一段抽象化した方が、実装が簡単になるし、後々のメンテナンス性が良さそうだ。そうしよう。 RPCといっても処理の流れが同期なのか非同期なのかとか、データの受け渡しがブロックなのか、エラーの返却はどうするのかといった決定の組み合わせによって多様性があるわけだが、今回は最も単純な組み合わせを選択する。すなわち、リクエスト受信からレスポ

  • 開発メモ: 50行のC++コードでWebサーバを実装する

    「Kyoto Tycoonの設計 その四」改め、50行でWebサーバを書く方法を解説する。前回実装した「多重I/Oマルチスレッド汎用TCPサーバ」の上にHTTPの処理を行う層をつけて、「多重I/Oマルチスレッド汎用HTTPサーバ」を司るクラスを実装してみたので、それを使ってちょちょいとやる。 URLクラス HTTPと言えばURLが使えないと意味がない。URLは単なる文字列として扱ってもよいのだが、様々なシーンで分解や加工が必要になり、その処理はなにげに複雑で面倒なので、予めクラスとして導出しておいた方がよいだろう。 class URL { public: // 文字列のURLを解析して内部構造を作る void set_expression(const std::string& expr); // スキーム要素を設定する void set_scheme(const std::string&

  • 京都収納棚:DBMの率直な壱実装 - mixi engineer blog

    飲み屋に行くとかなりの確率で荷物を忘れて帰るmikioです。さて、今回はここ2ヶ月ほどで急ピッチで開発した軽量データベースライブラリ「Kyoto Cabinet」について紹介します。 開発の動機 以前から軽量データベースライブラリとしてご好評いただいているTokyo Cabinetですが、DBMとして必要十分な機能と性能を備えていてなかなか良いものだと自負しております。ただ、開発を進める中でいくつか不満な点があったのも事実です。端的に言えば、全てC言語で記述して、標準ライブラリ(とzlib/bzip2)以外の機能は全て自作しているので、最適化がしやすい反面、メンテナンスの難易度が高くなってしまっているというのが不満です。 そこで、多少性能が悪くなってもいいから、私自身としてお気楽に開発およびメンテナンスができて、移植性も高いような実装を作ってみようと思い立ったのが昨年10月頃。様々な検討を

    京都収納棚:DBMの率直な壱実装 - mixi engineer blog
    yass
    yass 2010/01/13
    " TCやKCではPthread(POSIXスレッド)パッケージでマルチスレッドの排他制御を行っています。例えばデータベースファイルのサイズというメタデータを更新するためには、mutexでロックをかけて、更新を行って、ロックを解除
  • 1