Ploneは、Zope2の上にあります。Zopeは、データストア先として、ZODBというデータベースを使っています。これは、何でも一つのファイルに格納してしまいます。イメージ的には、accessのmdbファイルみたいな物です。一つのファイルですむので簡単にバックアップ、復元ができる利点があります。しかし、ファイルや画像もZODB内に取り込んでしまうためデータベースファイルが巨大な物になってしまうという弱点がありました。これを解決するのが、Blobという仕組みです。ZODBのバージョンが3.8になってから利用できるようになりました。なお、Plone 4 では標準となっています。
- plone.app.blob
設定方法:
- buildout.cfg内の[instance]セクションにある、egg, zcmlに、plone.app.blobを追記します。そして、blob-storage へ var/blobstorage を追記します。
- そして、./bin/buildout をおこないます。
- ./bin/instance fg (startなど) で起動します。
- アドオンプロダクトから、plone.app.blob: ‘File’ replacement type 1.0b8 を選択してインストールします。
これで、ファイルはBlob対応となります。
※既存のコンテンツ(File, Image)をblobに置き換えたい場合は、egg, zcmlに、Products.contentmigration も追加しておきます。そして、ファイルタイプを置き換える場合、PloneサイトのURLの後ろに、@@blob-file-migrationを入力します。イメージの場合は、@@blob-image-migration を入力します。
こんな感じで、マイグレーションしてくれます。
参考サイト
- [Plone User’s Group Japan] zc.buildoutを使ってプロジェクトを管理する
- http://plone.jp/Members/tacaco/buildout-tutorial-jp
疑問:
- @@blob-image-migration を行ったら、KeyError: ‘ATContentTypes.ATBlob’ といわれた。
こんにちは。
いつも大変参考にさせていただいております。
blobstorageは私も昨年から利用しているのですが、画像のコンバートは未だでした。
画像分がずいぶん増えてきたので、画像もblobに置き換えようと思ったのですが、変換を行おうとすると、同様のエラーになってしまいました。
GUIからでなく、スクリプトなどで対応できれば良いのですが…。
IssueにPOSTしてみようと思います。