儘管NoSQL一度成為熱門話題,但我們還是活在SQL世界裡,到處可見RDBMS(Relational Database Management System)作為資料服務的後端引擎,使用ZODB(Zope Object Database)的Plone該如何與SQL資料庫和平共處,必然是整合人員關心的議題。
接下來的步驟是產生SQL DDL/Schema檔案,可藉由mirror-ddl工具程式來完成,其指令內容如圖17所示。
|
▲圖17 資料庫Schema建置的指令步驟範例。 |
不過,實際上很可能會遇到建置失敗的訊息,我們將嘗試下列的修改,把mirror.sql檔案裡的DATETIME改為TIMESTAMP(圖18)。
|
▲圖18 mirror.sql內容範例。 |
同樣的原理,再把mirror.sql檔案裡的BLOB改為BYTEA,如圖19所示。
|
▲圖19 修改BLOB成為BYTEA的範例。 |
最後,再把mirror.sql檔案裡的IN (0, 1)改為IN ('f', 't'),如圖20所示。
|
▲圖20 修改IN (0, 1)成為IN ('f', 't)。 |
成功執行psql ContentMirror < mirror.sql後的結果,如圖21所示。
|
▲圖21 成功執行psql的訊息範例。 |
接著,建立新的Plone網站,並且新增內容,然後使用查詢工具瀏覽資料庫,就會發現系統已經同步備份內容資料。
結語
以上範例分別以MySQL和PostgreSQL來練習操作,其原理可以應用到不同的SQL資料庫。從技術角度來看,這裡概分成「直接連結」和「ORM連結」兩種類型,對於直接連結的場合,只要找得到Database Adapter就行,必要時須花錢購買商業版本的Adapter軟體。而使用ORM連結的場合,目前跟著SQLAlchemy走就行了。
如果你有大量舊資料,已經藉由RDBMS管理,或是想用SQL資料庫來執行靜態資料的查詢,都可以利用上述方法提供整合服務。不過,ZODB已是身經百戰的資料庫系統,非常適合用於開發階段,即使上線服務,效能也沒問題,而它被迫退居幕後的主要原因,在於支援人力並不足夠。