RelStorage 是 ZODB 的後端儲存工具,能夠將 pickle 資料存到關聯式資料庫,也就是說,經由 RelStorage 和 ZODB 的合作,Plone 裡的內容可以直接轉存到 MySQL、PostgreSQL 之類的資料庫裡,讓資料庫的類型選擇和轉換更具彈性。
經過原作者 Shane Hathaway 不斷的改進,安裝 RelStorage 變得很簡單,以 Ubuntu 和 PostgreSQL 為搭配範例,先要建立適當的帳號和資料庫:
$ sudo su - postgres $ createuser --pwprompt zodbuser $ createdb -O zodbuser zodb
編輯 /etc/postgresql/8.4/main/pg_hba.conf 存取控制規則,範例如下:
local zodb zodbuser md5
接著可以修改 develop.cfg 的 eggs 設定區段:
eggs += psycopg2 RelStorage
修改 base.cfg 的 instance 設定區段,其中 blob-dir 參數指定一個目錄名稱,就是用來儲存 ZODB 的 BLOB 檔案:
rel-storage = type postgresql dbname zodb host localhost user zodbuser password mypass blob-dir var/blobs
執行 buildout 生效並啟動系統後,可以查看到資料庫的表單內容:
public | blob_chunk | table | zodbuser public | commit_lock | table | zodbuser public | current_object | table | zodbuser public | object_ref | table | zodbuser public | object_refs_added | table | zodbuser public | object_state | table | zodbuser public | pack_object | table | zodbuser public | pack_state | table | zodbuser public | pack_state_tid | table | zodbuser public | transaction | table | zodbuser public | zoid_seq | sequence | zodbuser
object_state 表單用來記錄 Page、Folder 等的內容,它的欄位包括:
zoid, tid, prev_tid, md5, state_size, state其中 state 欄位記錄的就是內容項目的資料值。
No comments:
Post a Comment