ネイティブXML データベースの Berkeley DBXML をつかっています.
Oracle: Berkeley DB XML 2.4.16: (October 21, 2008)
Berkeley DB 4.6.21: (September 27, 2007)
と Mac OSX Leopard + Python API の組み合わせ.
DBXML は背後で BDB を走らせていてる.
なので, XMLデータを蓄積する Container をオープンするまえに
BDBを作成する必要がある.
env = bsddb3.db.DBEnv()
env.open("working-directory-name"
, bsddb3.db.DB_CREATE | bsddb3.db.DB_INIT_LOCK |
bsddb3.db.DB_INIT_MPOOL | bsddb3.db.DB_PRIVATE, 0)
BDBのオプションは上記のようにしている.
bsddb3.db.DB_PRIVATE オプションを指定することで,まず BDB が in-memory DB となる.
これを設定しないと working-directory-name の下に __db.001 といった名前のファイルが作成される.
続いて Container をオープンするために
mgr = dbxml.XmlManager(env, 0)
container = mgr.createContainer('', dbxml.XmlContainer.NodeContainer)
container.addAlias('container-name')
としている.
2行目の第1引数は container の名前を指定する.
これを空文字列にすることで container がメモリー上に作成される.
名前を指定すると working-directory-name の下に,ここで指定した名前の
Container がファイルとして作成される.
これで BDB も DBXML も in-memory になった.
3行目でメモリー上の container にエリアスで名前をつける.
この container 名は xquery を発行するときに使用する.
例えば, xpath の指定は
doc("container-name/document-name")/tag-a/tag-2/..
となる.
Oracle: Berkeley DB XML 2.4.16: (October 21, 2008)
Berkeley DB 4.6.21: (September 27, 2007)
と Mac OSX Leopard + Python API の組み合わせ.
DBXML は背後で BDB を走らせていてる.
なので, XMLデータを蓄積する Container をオープンするまえに
BDBを作成する必要がある.
env = bsddb3.db.DBEnv()
env.open("working-directory-name"
, bsddb3.db.DB_CREATE | bsddb3.db.DB_INIT_LOCK |
bsddb3.db.DB_INIT_MPOOL | bsddb3.db.DB_PRIVATE, 0)
BDBのオプションは上記のようにしている.
bsddb3.db.DB_PRIVATE オプションを指定することで,まず BDB が in-memory DB となる.
これを設定しないと working-directory-name の下に __db.001 といった名前のファイルが作成される.
続いて Container をオープンするために
mgr = dbxml.XmlManager(env, 0)
container = mgr.createContainer('', dbxml.XmlContainer.NodeContainer)
container.addAlias('container-name')
としている.
2行目の第1引数は container の名前を指定する.
これを空文字列にすることで container がメモリー上に作成される.
名前を指定すると working-directory-name の下に,ここで指定した名前の
Container がファイルとして作成される.
これで BDB も DBXML も in-memory になった.
3行目でメモリー上の container にエリアスで名前をつける.
この container 名は xquery を発行するときに使用する.
例えば, xpath の指定は
doc("container-name/document-name")/tag-a/tag-2/..
となる.