问题标签 [zodb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
191 浏览

python - 如果 GCC 不再工作,我有哪些 python 部署选项

我的基于 python 构建的生产环境被管理员移到了 chroot 中。现在重新运行构建失败,因为编译器(gcc)在编译任何包含 C 扩展(PIL、ZODB)的包时退出并出错。

管理员告诉我 gcc 在 chroot 中已损坏。当然,这是一个奇怪且不可行的情况,它将尽快修复。

但多年来我一直在使用 buildout/virtualenv。现在,我对在 gcc 损坏时更新基于构建的 python 部署仍然拥有的选项非常感兴趣。如果我删除了触发 gcc 编译的任何依赖项(在 buildout.cfg 或包 setup.py 中),我成功地运行了构建,但这让我留下了不完整的应用程序启动脚本。基本上所有的包都已经下载/组装/编译,但是 buildout 总是重新编译一个以某种方式改变的部分(我知道 .installed.cfg)。

在这种情况下,我或任何不负责系统管理的 python 开发人员如何继续使用构建部署的优势?我愿意接受任何建议,并希望讨论和了解他们的利弊。

0 投票
1 回答
253 浏览

python - ZODB 膨胀一定是坏事吗?

我正在编写一个检索网页的软件,将有关它们的一些关键信息提取到一个对象中,然后将其写入 ZODB 数据库。我最终将大约 350,000 个这些对象写入我的数据库。

在我的代码运行了一段时间后,每当我向数据库添加新对象时,它就会开始发布此消息......

所以我的问题首先是错误消息所指的 26MB 是用于添加的单个对象还是整个数据库。这些对象中的每一个都应该很小,但是消息会显示在每个添加的新对象上。

0 投票
1 回答
162 浏览

plone - 为什么 Data.fs.old 消失了?

我正在测试打包机制,因此设置pack-days为零,通过 ZMI 添加和删除对象以生成一些历史记录,然后执行zeopack,到目前为止效果很好。

但是,如果自上次打包以来没有任何事务,并且触发了另一个新打包,则 Data.fs.old 被删除/消失,为什么?

分别是哪些代码行正在这样做?以某种方式找不到它。

0 投票
1 回答
84 浏览

python - 使用 ZODB 进行细粒度授权

我一直在研究使用 ZODB 作为多人视频游戏的持久层。我非常喜欢它与任意面向对象数据结构的无缝集成。但是,我遇到了一个问题,我不知道 ZODB 是否可以为我解决这个问题。

显然,可以使用ClientStorageZEO 访问用于持久性的远程数据存储。虽然这在受信任的本地网络中很好,但如果没有在开放网络中适当的授权和身份验证,就无法做到这一点。

所以我想知道,是否有机会用 ZODB 实现以下概念:

在服务器端,我希望运行一个 ZEO 服务器以及一个游戏世界的模拟,它可以作为 ZEO 服务器上的完全授权客户端运行(或使用与 ZEO 服务器相同的文件存储)。

在客户端,我需要对 ZEO 服务器进行非常有限的读/写访问,以便客户端只能查看其用户应该知道的信息(例如他们角色的周围区域)并且只能修改相关信息到他们的角色可以执行的动作。

服务器必须使用某种细粒度的授权方案来施加这些限制。所以我需要能够告诉服务器用户 A 是否有权读取/写入对象 B。

现在有没有办法在 ZODB 或第三方解决方案中解决此类问题?或者有没有办法以这种方式扩展 ZEO?

0 投票
1 回答
175 浏览

storage - 是否有完全在内存中运行的 ZODB 存储类实现?

ZODB 允许用户通过Storage类交换存储后端。包中包含的一些实现包括FileStorage(将您的数据存储在一个大文件中)和ClientStorage(通过网络将您的所有数据存储到 ZODB/ZEO 服务器上)。

为了针对 ZODB 测试我的开发,我想使用内存中的 ZODB 运行我的测试:有没有InMemoryStorage这样的?

我发现这个线程暗示了一些FileStorage基于 StringIO 的成功实现,但我担心我的 Python-foo 可能不足以快速破解可靠的后端。

0 投票
1 回答
128 浏览

python - Python中ZODB中的双向映射

我知道在 ZODB 中,您可以使用BTree来存储大量数据,并根据总排序与树大小成对数的键进行查找。

问题是,我有一些PersistentobjectFoo和一些其他Persistentobject ,我想在bidictBar的意义上存储它们之间的双向映射。

即执行两种访问应该是有效的(对数时间):

我现在能想到的唯一方便的方法是简单地将我的存储需求加倍并维护两个BTrees:一个存储从 A 到 B 的映射,另一个存储从 B 到 A 的映射。当然,在任何时候,BTree 都将包含相同的元素,因为映射的添加和删除是同时在两者上执行的。

我对此的担忧是,由于没有数据库约束,这些树可能会解耦。你认为这可行吗?

0 投票
1 回答
83 浏览

plone - 如何在 Plone-4.1-Unified-Zeo-Install 中定义数据库位置?

在 Plone 的 4.3.1-Unfied-Installer 的 base.cfg (ZEO) 中,我可以看到,可以在 Plone-4.1.6-Unfied-Installer 的 base.cfg 中将 ZODB 位置定义为变量,而不是。

在我开始进一步调查之前:是否可以通过简单地调整配置来在 4.1 中模仿这一点,或者这个选项是否依赖于更高的核心包版本?

0 投票
1 回答
793 浏览

python - 你如何检查你是否在 Python 中与 ZODB 进行交易?

我正在编写一些涉及 ZODB 的测试,但由于我在某些单元测试中遇到的错误而被卡住了很长时间。让我们称之为Test_B

值得庆幸的是,我最终发现我忘记在调用transaction.commit()之前运行的测试中调用 a Test_B(不出所料)Test_A。日志记录的事件序列如下所示:

注意Test A成功:这是错误的!我想Test A失败并告诉我我忘记提交的事务中有未完成的更改。

我怎样才能用 ZODB 做到这一点?我在文档中找不到任何可以用来确定我是否在进行更改的交易的内容。

显然,通过该检查,我可以将其粘贴到AfterEach套件中所有单元测试的块中。

0 投票
2 回答
423 浏览

plone - 如何摆脱 ZEO 工作人员的 ConflictError?

看着我的 ZEO 工人,我看到了很多:

当他们被记录时,INFO我应该假设这根本没有害处吗?

我猜如果有冲突是因为 ZODB 上的写入太多?

0 投票
1 回答
109 浏览

plone - plone zodb 错误 CMFUid 断言

我们有一个非常大的 Data.fs (~15Gb) - 我认为这是通过使用自定义文件夹内容类型的“工作副本支持”来实现的!

如果我尝试使用“portal_historiestorage”,实例将退出并显示 > XX 错误:

如何清除这些对象并缩小我的数据库?我已经清除/重建“portal_catalog”、reference_catalog 和 uid_catalog

提前致谢

克隆 3.3.6