*バックアップデータ構造の改善 [#pc299b0e] -ページ: [[BugTrack2]] -投稿者: [[Cue]] -優先順位: 低 -状態: 提案 -カテゴリー: 本体新機能 -投稿日: 2005-08-31 (水) 03:50:07 -バージョン: **メッセージ [#v43ed818] **従来の仕様と特徴 [#m5a5c2e9] ***バックアップファイル構造 [#i562cea6] +バックアップファイル1ファイルの中にそのページの全ての世代が保存されている ++ディスクスペースは少なくて良い(特に小さいページが沢山ある場合) +Boundaryは、PKWK_SPLITTER\sUTIME\n +データ中にBoundaryが現れた場合、行末に半角スペースを加える +zlib extensionの有無でファイル形式が変わる((PHP 4.3.0 以降、zlib モジュールは php バイナリにビルトインされたため、PHP4.2.x以前+zlibなし→PHP4.3.0以降でのみ発生する)) ++設置サーバーの状況が変わると手作業しか移行手段がない ++Boundaryも含めて圧縮されるので、一部の損傷が全滅につながる ***backup.inc.phpとの連携部など [#sad248ef] +常に解凍された全データを要求する ++複数回のファイル読み込みと解凍を要さない ++バックアップファイルが大きくなると処理の負荷が大きい(BugTrack/732) +各バックアップは世代番号で管理される。世代番号はバックアップファイル内に存在する順で割り当てられる ++一覧表示から各データの取得までにバックアップ処理が起こると世代番号がずれる +バックアップ日時は、そのページの最終更新日時が割り当てられる ++タイムスタンプを変更しない編集を繰り返すと同じタイムスタンプのバックアップが複数作られる(BugTrack/685) +$cycle=0 でも同一タイムスタンプでバックアップは働かない ++UTIMEでtouchはしていないので処理が重い場合など若干のずれが生じる *** backupに対する既存の機能要望 [#xda38abf] +自動生成されるページを含めて基本は全ページが対象(BugTrack/708) +世代を指定してバックアップを削除できない([[org:欲しいプラグイン/137]]) +通常バックアップと別に版管理を行いたい(BugTrack2/86) **改善案 [#j62ef48c] ***1ファイルは維持し、日付部分は圧縮しない案 [#f7b3dda2] +ファイル読み込み・一覧作成の段階で解凍は発生しないので比較的低負荷 +一部が損傷しても全体に影響は及ばない +ディスクスペースは若干増える +圧縮部分に偶然Boundaryが現れる可能性にどう対処するか ***各バックアップ世代をページ名のディレクトリ下に独立ファイル化する案 [#ybc4136a] +一覧作成はディレクトリ検索速度に依存する(必要メモリは少ないが、システムコールは多いはず) +一部が損傷しても全体に影響は及ばない +ディスクスペースは増える(特にFATファイルシステムで) +Boundaryとバックアップ読み込み時のflock処理が不要 +特定の世代だけ削除するのが容易(ftpでも可能) ***CVS likeに差分のみで全体を構成する案 [#a33815f5] +無圧縮でも非常に小さいサイズになる +昨今の状況ではディスクスペースをそれほど重視しなくて良いのでは? ***世代管理にバックアップ時刻を使う案 [#s2f006dc] +ページのタイムスタンプを変更しなくても編集した時刻が分かってしまう +Recentには影響しないので構わないのでは? ---- #comment