メモページ
- 何か勉強したけどまとめきれない時ひとまずメモしておくページです。
- 後ほどひとつずつ整理します。
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