2011/10/15

RelStorage Installation

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: