• 追加された行はこの色です。
  • 削除された行はこの色です。
RIGHT:[[:t/永続化]] [[:t/DB]]

オブジェクトを以降のリクエストでも、他の利用者にも使えるようにすること。

#contents

***[[永続化でやること]] [#j94c78cf]
実装案。

***[[永続化での上書きは追加で]] [#c1313797]
***古いファイルは消せるときに消す [#aeaf399f]
古いファイル(同一キーでより新しいファイルがあるというファイル)を消すのはいつでもいい。消せるときに。
つまり最新版でなくて排他的ロックを取得できたファイルは消していい。

***[[古いファイルは消せるときに消す]] [#aeaf399f]

***排他的ロック/共有ロック [#j61c0374]
排他的ロックを使うのはファイルを作るときと消すときだけ。
変更/上書きはしないのでN/A。
共有ロックを使うのはファイルを参照するとき。
***[[排他的ロック/共有ロック]] [#j61c0374]

ファイルを消すときだけブロック(ロック待ち)が発生しうる。
***[[永続化のキー]] [#md972074]

ロックは[[ロックシステム]]と競合してはいけない。
→併用するならディレクトリ分け。永続化可能オブジェクトとロックシステムで扱うファイルの格納場所を分ける。
***永続化のキー [#md972074]
Validateで削除か置き換えになる文字がある。
ファイルシステムのパスに使えない文字。
***[[シリアライズ]] [#de841db8]

ディレクトリ区切りはそのままディレクトリ区切りになる。
ファイルシステムを直接見たときに分かりやすいように。

 【パスの形式】
 永続化ディレクトリ/クラス名/キー(ディレクトリ区切りがあればそれをディレクトリとして扱う).time.拡張子

Store時、渡されたキーが使えるキーでなければ勝手に変更する。ValidateKeysを使って。
Storeではキーが渡されなくてもいい。勝手に生成する。
戻り値に実際に使ったキーを含める。
***シリアライズ [#de841db8]
Store時、シリアライズ可能なオブジェクトを渡されたらそのシリアライズを実行。不可能ならToString()でもしておく。それも不可能ならエラー。渡すオブジェクトはいずれかができなければならない。
(Stringのシリアライズは不要。Stringのシリアル形式はString)


***[[永続化クラスでの検索]] [#q93c0dda]
検索機能とは別の、低いレベルの話。

RIGHT:[[:t/永続化]] [[:t/LTSV]]

***キューイング [#ud59096e]
永続化を使う側の一つ。永続化からすると使われ方の例。
†キューはModelに出すもの
†キューの永続化

RIGHT:[[:t/キュー]] [[:t/開発]]