Plone Conference 2010参加レポート

Plone Conference 2010 Day 2

この記事を読むのに必要な時間:およそ 9 分

Future is bright, future is Plone

このセッションはPloneでのサイト開発の過去,現在と今後についてのセッションです。残念ながらビデオに入っていませんが,いきなりスターウォーズのオープニング最初の部分をまねたビデオでプレゼンテーションがはじまりました。かなり凝った資料が用意されており,見た目にも楽しいセッションでした。ぜひビデオかスライドも実際に確認してみてください。

Andrew Mleczko氏

Andrew Mleczko氏

My story

最初に自身の歴史を振り返っていました。Zope 2.6.0から使いはじめ,Plone 2.0.xでDBを使用したコンテントタイプを作ったりしていたそうです。その後,Plone 2.5.xになりArchetypesベースの開発に移行,Plone 3.xではbuildout,eggsなどの新しい機能を習得し,パフォーマンスとの闘いの日々を送ってきたことが語られました。

以前はPloneで全機能を実装していましたが,現在はCMSのみで使用しているそうです。

Zope 2.6.0時代

Zope 2.6.0時代

Plone is not all-in-one Framework

「Ploneはコンテンツ中心のWebアプリケーションのためのプラットフォームである」と述べられました。そして,Ploneにはさまざまなコンテンツを入れられますが,そのため中身がぐちゃぐちゃになってしまうことがあるという説明がありました。

Plone integrations

ここでは,Ploneを実際に使用したプロジェクトの例について説明がありました。

検索機能の強化には,SolrやPostgreSQLのTsearch2を使用するプロダクトについて紹介がありました。Solrを使用した例では異なるソースの内容をretriever で solr の中に入れてPlone から検索するということをBiblioteca Accessibileで実現しているそうです。

文書管理システムではcollective.googlesharingを使用し,Ploneサイト上の文書とGoogle Docsの同期をとる仕組みを構築したそうです。

他にPloneとrepoze.bfgを組み合わせバックエンドにPostgreSQLを置いて,Webサイトとeコマース,在庫管理,CRMなどの全社システムを作成しており,現在80%まで完成しているそうです。

WHERE IS THE FORCE?

WHERE IS THE FORCE

PloneとDjangoの組み合わせは前回のPlone Conference 2009でも聞いていましたが,repoze.bfgと組み合わせているというのは挑戦的なシステム構成だと感じました。

Plone on RelStorage

このセッションは,筆者は聴講できなかったため,1日目のレポートに続き寺田さん@terapyonにレポートを執筆していただきました(ありがとうございます)⁠

セッションの内容は,Ploneで使用するデータの保管場所をZope内蔵のZODBというオブジェクトデータベースで使用されているファイルData.fsへの保存ではなく,リレーショナルデータベース(RDB)へ保存を行う仕組みであるRelStorageに関してです。

Plone標準ではZODBという仕組みでData.fsという単一のファイルにデータを書き込みそれを用いるようになっています(Plone 4からは画像,ファイルなどをBLOBストレージに保存するようになりました)⁠データの保存先としてRDBに保存することも選択肢として使えるようになるのが,このRelStorageです。

Calvin Hendryx-Parker氏

Calvin Hendryx-Parker氏

Zopeのストレージについて

まず前提となるストレージの種類の簡単な用語の説明がありました。

  • ZODB:Plone(Zope)に標準で付属している,オブジェクト型データベースのパッケージです。ファイルストレージであるData.fsとBLOBストレージをサポートしています。
  • ファイルストレージ:ZODBのオブジェクトが保存されるData.fsファイルのことを示しています。起動時にメモリにインデックス情報が読み込まれます。
  • RelStorage:ZODBのデータ保存先をRDBにするというものです。今回のセッションテーマです。ファイルストレージ(Data.fs)の代わりに使用します。

RelStorageとは

簡単に言うと,ZODBパッケージにパッチを当てて,ファイルストレージであるData.fsを使わずに,RDBにオブジェクトをpickle化(Pythonのオブジェクトをシリアライズ化)して保存する仕組みです。

RelStorageを使用するメリットとして,RDBを使用することで既存のインフラや経験,RDB用のツールを使用できることが挙げられました。また,クラスター構成によるハイパフォーマンス対応もメリットの一つです。さらに,Data.fsを使用するのに比べて,検索インデックスをメモリ上に展開する必要がないため,メモリの消費量を抑えられてPloneの起動時間が短くなるということも利点として述べられました。

対応するRDBとしてはMySQやPostgreSQL,Oracleがあげられていました。インストール方法も簡単で,Plone標準でも用いられている,buildoutを使用してインストールを行います。プレゼンテーション資料に設定ファイルの例も記述されていましたので参考にしてください。

運用している途中で標準のファイルストレージからRelStorageに変更することも可能で,データ変換のためのzodbconvertというコマンドが用意されています。また,zodbconvertを使用することにより,MySQLからOracleにRDBを変更することも可能です(面白いですね)⁠

RelStorageの注意点

ここまで聞くといいことずくめのように聞こえるRelStorageですが,気をつけるべき点もあります。それは,データベースシステムを別に準備することになり,システム全体がより複雑になることです。また,設定,チューニングやコンテンツの種類,分量によっては,サーバロードが増える場合やメモリを大量消費する場合もあるとのことです。

RDB内にコンテンツは保存されていますが,テキストデータではなくpickleされたデータなので直接は扱いにくいです。zodbpackコマンドによりZODBのパック(古い差分を削除してサイズを小さくする)作業も今まで通り必要になります。

RelStorageのデモ

ここで実際に2台のRDBサーバーを立ち上げ,障害によるデータベースの切り替えが発生した状態で問題なくコンテンツにアクセスできるデモが行われました。

寺田さん自身一度は試してみる価値がある仕組みだと感じたそうです。しかし使いどころは注意しないと構成を複雑にするだけで良さが出ないとも感じたようです。テーブル構造などがどうなっているのかなど,実際に試してみないと分からない部分が疑問として残ったようですので,ぜひ試してみて詳細をどこかで発表してもらいたいと思います。

著者プロフィール

鈴木たかのり(すずきたかのり)

BeProud 所属。

部内のサイトを作るためにZope/Ploneと出会い,その後必要にかられてPythonを使い始める。最近miniじゃなくなりつつあるPython mini Hack-a-thonの主催者の一人でもある。

趣味は吹奏楽とレゴとペンシルパズル。2012年の目標は9月にオープンするマレーシアのレゴランドに行くこと。写真はうちのフェレットくろちゃんとくりちゃんです。

Twitter: @takanory
ブログ: http://takanory.net/takalog/