OrcaというCache::Memcached::Fast互換のKVS interface adaptor作りました

読了まで:約4分


概要: Orca という Cache::Memcached::Fast と部分的に互換のあるモジュール作った


こんにちま! いつも心に Cookbook、悪い意味でドキュメントが恋人、 にゃるらこと岡村直樹(そのうち 23 歳)です。みなさんのたうちまわりながらコーディングしてますか?

まあまたかって感じのユヤタンパロディはいつものこととして、 今日は昨日あたりに github に上げたOrcaいうモジュールを紹介したいと思います。

Orcaとは何か?

Orcaとは何かっていうと、いろんな KVS とか RDBMS とかのデータを、 Cache::Memcached::Fastライクな API で操作するための、 インターフェースアダプターモジュールです。

と、言ってもわかりづらいんで、一言でいうと、

いろんなデータストアの操作 Cache::Memcached::Fast 互換な API で操作してしまおう!

いう感じのモジュールです。

あ実際のところ、Orcaには元になったモジュールがあって、 それは僕は作りかけで放置したApplishいう Web Application framework の出来損ないの中で実装した、 Applish::Cacheいうモジュールが元です。

Applish::Cacheいう名前から推察できるに、元はCache::Memcached::Fastある程度の互換がある Cache interface module だったのですが、Cache interfad module には CHI筆頭に、 それなりにいろいろそろってたりするので、今更作っても dis られること間違いなしというか、 それ誰得? 今更だよね? というか既存モジュール使えよハゲ、等々、さっと思い浮かんだので、 とりあえずいろんな KVS をCache::Memcached::Fast互換な API で使える Wrapper module という事にしました。 ごまかしてますね。はい。

あと、Applish::Cacheな頃はMoose or Mouse依存してましたが、 Orcaではできるだけ依存を簡単にするため、大抵の環境にはいっているか、 もしくはインストールが容易なモジュールのみに依存してます。 まあこのあたりOrcaMakefile.PL見てみてください。

Orca特徴

Orca特徴といえば、なんと言ってCache::Memcached::Fast部分的に互換のある API です。

Orca POD には書いてありますが、なんで 部分的な互換言ってるのかというと、 それはCache::Memcached::Fastサーバ接続関連の API は実装してないからです。 あと、データの出し入れのメソッドの内部的な仕様がよくわからなくてこれでいいの?いう実装も含まれてるので、そのあたりも 部分的な互換 、となってる理由です。

まあそうは言っても、データの出し入れに関しては多分互換性があると思うので、 Cache::Memcached::Fast代わりにOrca使う、といったことも可能です。

あここでmemcached CAS とかどうなってんの? と思われると思うのですが、 もちろん CAS も使えます! ……なんちゃって CAS ですけど>< というか、ネットで調べた CAS の仕組みをとりあえず実装した、って感じなので、 本当に CAS と互換があるのかどうかはちょっと怪しいです。

あと今のところOrca Engine というか Backend は、Cache::LRU使ったメモリベースのOrca::Engine::Memory とりあえずモジュールだけがあって、テストも何もないOrca::Engine::Memcached二つのみですが、 まあ今後テストやらドキュメントなんかを足していけたらなーと思ってます。

Orca使い方

で、能書きはいいんでOrca使い方をちょろっと紹介すると、

use Orca;

my $orca = Orca->new('Memory');
$orca->set( $key, $value, $expire );
my $value = $orca->get($key)

いう感じです。いうかさっきも書きましたが、Orca基本的にCache::Memcached::Fast API を参考に作られてるんで、 Cache::Memcached::Fast使うような感じでOrca使うことができます。

で、Orcaエンジンを書きたい! という場合、Orca::Engine POD にも書いてありますが、 基本的には、Orca::Engine継承して、

  • new
  • namespace
  • set
  • cas
  • get
  • gets
  • delete
  • flush_all

八つのメソッドを実装すれば、必要な機能がそろう、という感じになってます。

Orca今後

Orca関しては、需要があるのかどうかサッパリ分からないのと、 既存モジュールと激しくダブってるような気がするんで、今のところ CPAN に upload する予定はありません。

いうかまだ作ったばっかりで自分ですら使ってないので、 もうちょっと使い込んでから様子をみたいと思ってます。

いうわけで今日はOrcaっていうモジュールを作ったよ! って話でした。 まあ何か連絡あったら Twitter: @nyarla までお願いします。

#FIXME

アバターアイコン兼ロゴ

にゃるら(カラクリスタ)

『輝かしい青春』なんて失かった人。次に備えて待機中。

今は趣味でプログラミングをして生活しています。