gpt4 book ai didi

plone - 将标记值存储到 Plone : zope. 注释或 setattr 中的内容的最佳方法是什么

转载 作者:行者123 更新时间:2023-12-05 00:36:53 25 4
gpt4 key购买 nike

这是开发人员的常见情况。您希望为需要存储数据的网站的每种内容类型添加一项功能。它是一种元数据,而不是配置数据。

我看到两种解决方案:

  • zope.annotation
  • setattr:为持久对象添加属性

  • 我真的不知道为什么,但是从 Plone2.5 开始使用 zope.annotation 很好,现在它似乎不是存储附加数据的首选方式。例如 plone.uuid 使用 setattr 来存储唯一的 id。

    最佳答案

    两者之一,取决于您的数据更改的频率和大小。这完全与 ZODB 如何存储这些信息有关。

    使用 setattr 将数据直接存储在对象上意味着数据存储在该对象的持久记录中。如果这是一个大对象,则意味着该写入将发生大事务。

    将数据存储在 zope.annotations 注释中意味着您为每个注释条目获得一个单独的持久记录,因此对数据的任何更改都将导致较小的事务。但是,如果您想经常访问这些数据,则需要在所有其他持久记录之上加载额外的持久记录。它将在您的 ZODB 缓存中占据一个插槽,您的 ZEO 服务器或 RelStorage 服务器将需要为其提供服务,等等。
    plone.uuid使用 setattr 是因为它通常只为给定的对象生成一次,通常是在它已经被创建的时候。它也是经常访问且非常小的数据。因此,通过将它直接放在对象本身上,它会在您加载该对象后立即加载,无需额外访问 ZODB,并且在其生命周期中只会更改一次。

    注意:以上假设注解与 AttributeAnnotations 适配器一起存储,这是最常用的方法,也是 Plone 内容的默认方法。

    关于plone - 将标记值存储到 Plone : zope. 注释或 setattr 中的内容的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7661204/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com