データベースをパックするにはどうしたらいいですか?
だって放っておくとデータベースのファイルサイズがどんどん大きくなっていきますよね。
理由
PloneはZODBというオブジェクトデータベースを使っており、コンテンツが更新されると、それまでのデータがあったディスクの場所には手をつけずに、更新したオブジェクトを新しい場所に書くようになっています。なので、放っておくとコンテンツ編集や削除によって、データベースはどんどん大きくなります。Ploneではコンテンツを過去の状態に戻すこともできますが、そのバージョン管理機能はこのZODBの機構を使って実現しています。
パックというのは、最新以外の情報をすべてディスク上から消して、最新のデータだけをディスク上のデータベースファイル上で再配置する処理です。これによって最新のもの、あるいはパックの時に指定する期間のデータしか残らないので、データベースのサイズが小さくなります。
方法
Plone3以降では、
- 管理者アカウントでPloneサイトにログインします。
- サイト設定を選び、さらにメンテナンスを選びます。
- コントロールパネルのメンテナンス画面の下半分に、Zopeデータベースのパックがあります。
- パック後に残すオブジェクト履歴の日数を入れる枠があり、そこに初期値として "7" が入っています。これを自分の希望する値に変えて、すぐ下の「データベースを今すぐパックする」ボタンを押します。
- パックの処理時間は、データベースのサイズや、オブジェクトの粒度、個数、サーバーやディスクの性能によりますが、小さければ瞬時に終わります。通常は数秒から数分かかります。
古いパージョンのPloneでは、サイト設定の中にメンテナンスの項目がありません。その場合は、ZMIに直接アクセスします。
- そのPloneサイトを擁するZopeルートのURLの右側に "/manage" を付加してアクセスします。たとえば、 http://localhost:8080/manage とかです。
- 青いZMI画面が表示されたら、左にある幅の狭い枠から Control Panel を選びます。もし Control Panel が見つからなければ、アクセスした先がZopeルートでないかもしれません。
- Control Panel を選ぶと、右側のフレームの下のほうに、Database Management という項目があるので、これをクリックします。
- Databasesとして、main と temporary の二つが見えます。 main をクリックします。
- 下のほうに、残すべき日数を入れるフィールドがあり、初期値として "0" が設定されているはずです。これを自分の希望する数字に変更して、すぐ隣の Pack ボタンをクリックします。
- 通常は main だけで十分ですが、temporary のほうの Database Size が大きくて、なおかつサーバーをリスタートする予定がないような場合は、main と同様にパック作業をします。temporary はメモリー上に格納されており、サーバーリスタートによってゼロから再構築されます。
注意点
Plone3以降でも古いバージョンでも、データベースのパックは Zope 上で権限を持つユーザ のみがこの操作可能です。Plone サイトの管理者権限を持っているだけでは操作できないこ とがあるのでご注意ください。