http://d.hatena.ne.jp/gallu/20121112/p1 の続き。
これをやれば、後は単純にmemcache_handleのupdateとかinsertとかそっち系の実装で「トランザクションonなら実際のinsertとかupdateとかの代わりにdeleteを走らせる」って処理でいけると思う。
共通化して処理しませう。
の部分で、根本的に勘違い。
ん…まず。
data_clumpには現在、2つのモードがあるざんす。
・キャッシュモード
浅いレイヤーをキャッシュのように用いることからこのネーミングになった。
「最近使ったものはキャッシュしておきたい」系に適している。
デフォルトのモードはこっち。
・コードマスターモード
コードマスタにおいて比較的よく用いられるためにこのネーミングとなった。
原則「すべてのコードをメモリ上における」みたいな状態のものに適している。
で…
Create
・キャッシュモード
すべてのレイヤーに共通して書き込む
・コードマスターモード
もっとも深いレイヤーのみ書き込み、残りのレイヤーに対しては削除を行うRead:2モード共通
・キャッシュモード
・コードマスターモード
浅いレイヤーから順次探していく
また、もっとも浅いレイヤー意外で見つかったら、見つかったレイヤーより浅いところのすべてに書き込んでおくUpdate
・キャッシュモード
すべてのレイヤーに共通して書き込む
・コードマスターモード
もっとも深いレイヤーのみ書き込み、残りのレイヤーに対しては削除を行う
Delete:2モード共通
・キャッシュモード
・コードマスターモード
すべてのレイヤーに対して共通して消しこむ
ん…モード切り分ける意味、そんなにないなぁ。
細かいところまでチューンするとまぁ「CreateやUpdateの時にキャッシュレイヤーに書き込んでおく」と、「CreateやUpdateの時にキャッシュレイヤーの情報を削除、次にReadが発生するタイミングで書き込む」よりも少しコストメリットはあるんだけど、でも誤差レベルな気がする。その辺は、整合性とか安全性とか重視したいし。
で。
モードを全部「コードマスタ」系にすると、当初想定している
これをやれば、後は単純にmemcache_handleのupdateとかinsertとかそっち系の実装で「トランザクションonなら実際のinsertとかupdateとかの代わりにdeleteを走らせる」って処理でいけると思う。
がすでに実装済みなので、無問題。
よし、モードを切って「コードマスタモード」のみにしませう。
…うんうんしみじみYAGNIだねぇ結局モード使わなかったねぇ(苦笑
っちゅわけで、その方向で実装を進めませう。