问题标签 [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 回答
538 浏览

plone - 如何以及为什么设置 plone.app.blob 的布局类型(草坪诉丛生)

可能重复:
各种 ZODB blobstorage 布局之间有什么区别?

我有一个要迁移到 plone.app.blob 的 Plone 3.3.5 站点。我刚刚运行了一个测试迁移,并注意到所有 blob 文件都存储在 var/blobstorage 的同一目录中。

在列表服务器上,我听说它提到可以在两种布局之间进行选择:“草坪”和“浓密”。Lawn 似乎是默认设置,所有文件都在一个单一的平面目录中,而“bushy”将它们组织到子文件夹中。

是否有一个可以打开浓密布局的扩展选项?(我找不到任何这样的例子。)

每个布局选项的优势是什么?

0 投票
2 回答
905 浏览

python - ZODB 无法提交

我第一次使用 ZODB。只是尝试使用 FileStorage 提交数据。但是当我第二次执行相同的脚本时,我无法提交新对象。这是我的脚本

当我再次重复代码时,只需更改 idroot['layer']['2c']并从 python 中出来,第二次对象没有被提交。我只有第一个对象。可能是什么原因。

0 投票
2 回答
1007 浏览

blob - 集体.xsendfile、ZODB blob 和 UNIX 文件权限

我目前正在尝试配置collective.xsendfile、Apache mod_xsendfile 和Plone 4。

显然 Apache 进程在文件系统上看不到 blobstrage 文件,因为它们包含权限:

ls -lh var/blobstorage/0x00/0x00/0x00/0x00/0x00/0x18/0xd5/0x19/0x038ea09d0eddc611.blob -r-------- 1 plone plone 1006K 5 月 28 日 15:30 var/blobstorage/0x00 /0x00/0x00/0x00/0x00/0x18/0xd5/0x19/0x038ea09d0eddc611.blob

如何配置 blobstorage 以提供额外的权限,以便 Apache 可以访问这些文件?

0 投票
2 回答
1462 浏览

plone - 打包后是否需要保留data.fs.old?

我的 data.fs 是 500 MB,所以我打包然后备份它,结果是 100 MB。

我的主机帐户只有 500 MB,所以我想知道删除 data.fs.old (500 MB) 是否安全?

0 投票
1 回答
7253 浏览

python - 在 relstorage zodb 包期间,“sys.excepthook 中的错误启动的线程中出现未处理的异常”

我们有一个相当大的 Plone 实例在它自己的挂载点上运行。ZMI界面列出数据库大小为7101.4M。我们使用 Relstorage zodbpack.py 脚本每周运行一次数据库包,删除超过 7 天的对象。过去两周,运行包的 cron 作业输出以下内容:

第一行和最后一行由 cron 作业运行的 shell 脚本输出。

打包后数据库大小减小,因此看起来它正在做某事。对于如何进一步调试此错误,我有点茫然。

很长一段时间,包运行正常。然后,我们更改了数据库的连接参数,但忘记在 cron 作业中更新它们,因此包在 11 周内没有运行。在出现此错误之前它成功运行了两次 - 长时间没有运行包可能与错误有关吗?

任何帮助将非常感激。

我们正在运行:

  • 克隆 3.3.5
  • 佐普 2.10.11
  • 再存储 1.4.1
  • ZODB 3.8.4-轮询
0 投票
2 回答
584 浏览

python - 对象数据库的索引方法

我正在使用对象数据库 (ZODB) 来存储许多对象之间的复杂关系,但遇到了性能问题。因此,我开始构建索引以加快对象检索和插入。这是我的故事,希望对你有所帮助。

最初,当我将一个对象添加到数据库中时,我会将其插入专用于该对象类型的分支中。为了防止多个对象代表同一个实体,我添加了一个方法,该方法将遍历分支中的现有对象以查找重复项。这起初是可行的,但随着数据库规模的增长,将每个对象加载到内存中并检查属性所花费的时间呈指数增长,令人无法接受。

为了解决这个问题,我开始根据对象中的属性创建索引,以便在添加对象时将其保存在类型分支以及属性值索引分支中。例如,假设我正在保存一个具有属性 firstName = 'John' 和 lastName = 'Smith' 的人员对象,该对象将被附加到人员对象类型分支,并且还将被附加到属性索引分支内的列表中,带有键'约翰”和“史密斯”。

这节省了大量重复检查的时间,因为可以分析新对象并且只需要检查与属性索引相交的对象集。

但是,我很快遇到了另一个关于更新对象时的处理问题。索引需要更新以反映它们可能不再准确的事实。这需要记住旧值以便可以直接访问它们并删除对象,或者迭代属性类型的所有值以便找到然后删除对象。无论哪种方式,性能都很快开始再次下降,我无法找到解决它的方法。

你以前有过这样的问题吗?你做了什么解决它,或者这只是我在使用 OODBMS 时必须处理的事情?

提前感谢您的帮助。

0 投票
1 回答
228 浏览

python - ZODB 事务提交多次调用 __getstate__

我正在使用 ZODB 创建一个缓存系统。我放入数据库的对象要求我使用__getstate____setstate__方法,因为它们包含我转换为字符串并存储在 Blob 中的图像。

我没有找到任何有类似问题的人,所以我假设我在做一些愚蠢的事情。通过运行以下测试代码可以看到我遇到的问题:

结果是:

正如您从输出中看到的那样,每笔交易都会为之前的每笔交易调用 getstate 方法。这应该发生/我错过了什么?我完全误解了事务的使用吗?像这样使用 PersistentMappings 可以吗?

我正在使用 ZODB 3.10.3 和 Python 2.6.3。

PS 我知道通常你会在完成所有操作后进行提交,但是循环表示“缓存”对象中的一系列可能的方法调用,每个方法调用都可以从 ZODB 添加或检索数据。

感谢您提供的任何帮助或理解。

0 投票
1 回答
1677 浏览

plone - 如何从 .fsz 文件恢复 zope 数据库?

我有一个测试环境,我正在尝试将我的数据恢复到其中。我使用 repozo 备份了我的实时站点,但是 zope 文档在他们的新站点上消失了。

这是我正在尝试的命令:

此命令完成且没有任何失败消息,但数据未出现在 plone (3) 中。

是否有任何提示或文章可以帮助我做到这一点?

0 投票
4 回答
264 浏览

plone - 在 Plone 中清理阁楼

我有一些带有 Data.fs 的旧网站,它经过了漫长的岁月,积累了足以与一码普通二手车经销商相媲美的垃圾。

即使在手动删除文件夹并打包数据库之后,Data.fs 似乎也占用了太多空间。

在 Data.fs 中寻找和回收这个“丢失的空间”的过程是什么?就像打印出对象树和文件夹的相对大小(递归)。

0 投票
2 回答
508 浏览

plone - ZODB 内存后端?

我目前正在从事一个童话般的大型项目(活跃成员约为数百 K),并且非常倾向于 Plone 解决方案。

我已经问过一些与它相关的问题,比如这里这里

从非常有经验的 Plonistas(以及活跃的 stackoverflowers)那里得到了一些回复。对此,我真的非常感激。人们一直说 Plone 不能很好地扩展到那么大,大部分原因是因为 ZODB。

然后我想到了 ZODB 的内存后端。RAM现在真的很便宜!您只需约 3000 美元即可获得 128GB,是普通 300 美元 128GB SSD 的十倍,与约 300MB 的 SSD 相比,实现约 30GB 的 IO 带宽。

内存中后端 + Blob 用于二进制 + 10 秒磁盘日志记录用于备份 + 除了最后 10 秒之外的所有撤消都将是实例终止!他们应该抽 RDBMs 并提供完整的 ACID + Transaction + Object Mapping 与这样的沙发 */redis 等相比。

技术可行吗?有什么实施吗?是否值得实施(在您看来)?