TemporaryMemo

メモページ

  • 何か勉強したけどまとめきれない時ひとまずメモしておくページです。
  • 後ほどひとつずつ整理します。

KVS(Key-Value Store)とは

  • 連想配列やMapと同様にキーと値のペアからなるシンプルなデータモデルに基づくデータストア。
  • 分散KVSとRDBの比較
    • 分散化のコスト - KVS:◎、RDB:×
    • 負荷分散 - KVS:◎、RDB:△
    • 高可用性 - KVS:◎、RDB:△
    • 複雑な検索や集計 - KVS:△、RDB:◎
    • トランザクション - KVS:△、RDB:◎

参考サイト

memcachedとは

  • さまざまなサービスでWebアプリケーションのスケーラビリティを向上させる技術(ソフトウェア)。
    • mixi、はてな、Facebook、・・・などで利用されている。
  • memchacedは高性能な分散メモリキャッシュサーバであり、データベースへの問合せ結果を一時的にキャッシュすることで動的なWebアプリケーションの高速化を実現する。
  • memcachedは「分散」キャッシュサーバだが、分散に関しての機能はサーバ側には備わっていない。すべてクライアント側の実装に依存する。

memcachedのクライアント

  • クライアントライブラリにはさまざまな言語の実装がある。
    • Perl、PHP、Python、Ruby、C#、C/C++、Lua
    • Javaはないんか・・・
  • Perlのmemcachedクライアントは以下のようなモジュールがある
    • Cache::Memcached
    • Cache::Memcached::Fast
    • Cache::Memcached::libmemcached
  • Cache::Memcachedの利用
    • データを保存するメソッド
      • add - 同じキーのデータがストレージ上にない場合のみ値を保存
      • replace - 同じキーのデータがストレージ上にあった場合のみ値を保存
      • set - どんな場合でも値を保存
    • データを取得するメソッド
      • get - キーを指定して値を取得する
      • get_multi - 複数のキーを指定して非同期で値を取得する。getをループで処理するよりも数十倍高速にデータを取得できる。
    • データを削除するメソッド
      • delete - キーを指定して値を削除する。2つめの引数にblock時間(秒)を指定することで、一定時間、同じキーで新しい値を保存できないようにすることができる。ただし、setメソッドを利用すると関係なくデータを保存することができる。

参考サイト

最終更新:2011年11月08日 23:52