gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

トランザクション周りの覚書2

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だねぇ結局モード使わなかったねぇ(苦笑
っちゅわけで、その方向で実装を進めませう。