持久性与事务框架开发特别兴趣小组
持久性与事务框架开发特别兴趣小组
最新消息
在 O'Reilly 开源大会上将有一个 Python 持久性 BOF。
Python 持久性
日期:2002年7月25日
时间:晚上8:00 - 晚上10:00
地点:东塔 Grande Ballroom C
主持人:Patrick O'Brien, Orbtech
最近成立了一个 Python 持久性特别兴趣小组,旨在探索将基本的持久性和事务机制添加到 Python 核心的方法,以避免各种具有相似问题的项目重复工作。本次 BOF 将允许参与者亲自思考 Python 持久性。此外,任何有兴趣与 Jim Fulton 和 Guido van Rossum 进行非正式 Python 持久性早餐讨论的人都欢迎在周三早上7点到 O'Reilly Food Tent 加入我们。
章程
问题
目前正在进行一些项目,旨在为 Python 提供持久性机制。这些工作有许多共同的要求,包括:- 透明度
- 应用程序不应显式跟踪对象更改或保存对象。应用程序不应显式查询大多数对象。通常,一些“根”对象将被显式检索,而其他对象将通过正常的 Python 对象遍历进行检索。应用程序对象不应包含提供其持久性所需的存储代码,例如 SQL 语句或文件操作。应用程序代码可能需要包含生成持久性相关事件的代码,但即使这些也应尽可能自动化,例如通过监视属性访问。
- 事务性存储
- 数据应以事务方式存储,并支持回滚更改。应预见对(可选)嵌套事务的支持。
- 有效的内存使用
- 应用程序不应使用过多的内存。通常,持久性应用程序使用的数据库太大,无法完全加载到内存中。对象只应在需要时加载,并在不再需要时从内存中删除。
这些努力大多集中于使用关系数据库数据提供持久性。这些工作在很大程度上是独立进行的。每个都将独立尝试解决上述要求,从而造成大量重复工作。
Zope 对象数据库 (ZODB) 一段时间以来一直满足上述要求。ZODB 目前正在从基于 ExtensionClass 的 ZODB 3 向基于 Python 2.2 新式类的 ZODB 4 过渡。作为这项工作的一部分,ZODB 的持久性和事务框架正在从 ZODB 中分解成单独的包,希望能对其他基于持久性的框架有所帮助。
如果每个不同的持久性项目都必须独立解决上述要求,那将是巨大的重复工作。更糟糕的是,由此产生的系统将拥有独立的框架,这些框架不太可能互操作。为一种框架构建的对象将需要重写才能与另一种框架配合使用。
提议
提议成立一个新的持久性 SIG,以探索并(如果可能)产生可用于各种持久性实现的持久性与事务框架,包括基于关系数据库的持久性和 ZODB。
协调员:Jeremy Hylton
结论:框架的1.0版本发布时,或2003年9月1日,以两者中较早者为准。
可交付成果:记录所创建框架的 PEP 和实现框架关键部分的软件。
假设可以定义令人满意的框架,则该框架和核心实现应包含在标准 Python 发行版中。
范围
本 SIG 的范围包括以下通用框架:- 事务协调
- 基本持久性管理,特别是观察对象更改(以了解何时需要保存对象)和访问(以了解何时使用对象,以便将未使用的对象从内存中删除),以及
- 激活和缓存,以便在需要时将对象移入内存,在不再需要时移出内存。
范围 *不* 包括
- 并发控制。这是插入到框架中的特定数据管理器的责任。事务管理器仅跟踪对象更改并协调数据管理器的活动,以原子方式提交(或回滚)更改。
- 查询语言。单独的数据管理器或应用程序可能提供查询功能。虽然为 Python 提供一个通用的查询功能会很酷,我也会支持这样的项目,但这将与本项目不同。
- 完整性约束。一些数据管理器,例如那些基于关系数据的管理器,将需要提供低级完整性检查的功能,而另一些,例如 ZODB,则不需要。同样,垃圾回收是数据管理器的责任,而不是框架的责任。应用程序级别的完整性系统也会很有趣,但不会依赖于持久性系统。