儘管NoSQL一度成為熱門話題,但我們還是活在SQL世界裡,到處可見RDBMS(Relational Database Management System)作為資料服務的後端引擎,使用ZODB(Zope Object Database)的Plone該如何與SQL資料庫和平共處,必然是整合人員關心的議題。
這裡將從最簡單的調整做起,把<div metal:fill-slot="main">加在<html>與<body>之間,再把</div>放在</body>與</html>中間。完整的程式碼如下:
這樣就把Z SQL Method的執行結果與Plone頁面結合,如圖14所示。
|
▲圖14 Z SQL Method執行結果與頁面整合。 |
同步備份的場合
另一個常見的應用方式,是備份Plone內容到SQL資料庫裡。安裝ore.contentmirror模組後,就能夠把Plone網站的內容同步備份到SQL資料庫,這種方式特別適合全新的Plone網站,原本儲存到ZODB的內容資料,會同時儲存至SQL資料庫。
ore.contentmirror原則上支援所有Archetypes的內容,也支援各種常見的SQL資料庫,下列則以Plone 4.1環境搭配PostgreSQL作為範例。
在develop.cfg設定檔裡,指定eggs和zcml設定值,並新增[zopepy]的設定內容,如圖15所示。特別注意psycopg2的安裝,它扮演著Database Driver的角色。
|
▲圖15 安裝contentmirror的develop.cfg內容。 |
接著要執行設定步驟,先找到ore.contentmirror安裝的目錄位置,例如「buildout-cache/eggs/ore.contentmirror-0.7.1-py2.6.egg/ore/contentmirror」目錄,然後建立一個settings.zcml檔案,內容如圖16所示。
|
▲圖16 settings.zcml設定範例。 |
最重要的內容是裡的資料庫連接設定值,其中的postgres:mypass分別代表存取帳號和密碼,請自行配合修改,最後面的ContentMirror則是資料庫名稱。