第八章-Zope对象数据库.docVIP

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Zope对象数据库(ZODB)

Zope默认将所有数据存放在Zope对象数据库(ZODB)中。ZODB实现了Python对象的透明存储,应用的编写几乎不必考虑数据库的操作。ZODB支持缓存、撤销、事务、可插拔的存储等高级特性。ZODB是Zope自带的数据库,但是也可以脱离于Zope独立使用。

本章适合系统管理员和系统集成人员阅读。本章重点包括:

ZODB的分区存储配置

ZODB的维护方法

ZEO架构的配置

8.1???关系数据库,还是对象数据库

关系数据库(RDBMS)是一个很成熟的技术。这也是大多数软件所采用的存储技术。但是具体应用的编写,需要直接针对对象来操作。因此,往往通过一些O-R映射(对象-关系的映射),来将二者衔接。这最终导致基于关系数据库的开发比较繁琐。

ZODB最大的优点就是透明性,你根本不必编写任何数据库读写的代码,省去了传统的O-R映射代码。Python的所有对象可保存为一个pickle数据块,并可从pickle数据库块中恢复对象;而ZODB数据库实际上就是对象pickle化后的一个数据库。可轻松从ZODB数据库中恢复一个对象。

如果你的应用中有大量不同类型的对象,相互之间有非常复杂的关系,而且可能模型可能经常发生变化的时候,这时候关系数据库可能无法承载了,而采用ZODB则是一个更好的选择。内容管理系统中存在各种不同的内容类型,插件的安装,要求系统能够不断扩展。因此,ZODB特别适合内容管理系统的开发。

和关系数据库一样,ZODB也支持事务:一次操作要么成功提交,要么失败(执行的时候抛出异常)回滚。不会出现事务执行到一半出现异常,而数据已经被改写,导致数据不一致的情况。

和关系数据库相比,ZODB对象也存在一些缺点,包括:

ZODB中的数据,不能脱离软件独立使用,而且目前只能使用python语言访问

自身是个黑箱,不支持跨语言的、通用的、类似SQL的访问接口

是九十年代才开始发展的技术,不如关系数据库从七十年代至现在发展得那么成熟

8.2???Zope中ZODB的使用

8.2.1???查看数据库文件

每个Zope实例中,包括一个var的子目录,ZODB就是存放在这里。Zope服务第一次启动后,会自动生成2个数据库文件:

Data.fs

这就是ZODB的核心数据库文件。网站备份的时候,只需要备份这个文件。

Data.fs.index

ZODB数据库的对象索引文件。这个文件不是必须的,不必备份。启动的时候,可根据Data.fs自动生成。

我们在ZMI中看到的所有对象,均保存在ZODB中。包括:脚本、显示模板、工具对象、内容等。

8.2.2???Zope的默认数据库配置

Zope提供了ZODB的基本管理界面。进入ZMI界面的根目录中,依次单击【Control_Panel】-【DatabaseManagement】,我们可看到这个Zope实例所使用ZODB的清单,如图8.1所示。

【图8.1】Zope使用的数据库

默认包括main和temporary这2个数据库。main数据库对应前面看到Data.fs文件中。而temporary数据库是一个使用内存存储的临时数据库,用于存放session这样一些临时对象。

在Zope实例的etc/zope.conf配置文件末尾,可以相应看到如下配置:

zodb_dbmain

#MainFileStoragedatabase

filestorage

path$INSTANCE/var/Data.fs

/filestorage

mount-point/

/zodb_db

zodb_dbtemporary

#Temporarystoragedatabase(forsessions)

temporarystorage

nametemporarystorageforsessioning

/temporarystorage

mount-point/temp_folder

container-classProducts.TemporaryFolder.TemporaryContainer

/zodb_db

这里包括main和temporary这2个数据库的配置。main数据库采用了filestorage作为存储,这也是Zope默认的存储机制,它最终存储到了实例的var子目录下的Data.fs文件中,mount-point表示这个文件对应ZODB的根节点(/);而temporary数据库采用了temporarystorage作为存储,将对象保存在内存中,它将加载到ZODB的/temp_folder处。

可看到,Zope采用了分区

文档评论(0)

bookst + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档