决定何时创建新目录的规则是什么?

时间:2012-04-16 17:41:28

标签: plone

我想了解正确使用目录。

我有大约30种有用的内容类型,在catalog.xml中有大约50个索引,大约有45个元数据。只有三种类型占据了网站的大部分数据 - 我可能需要数百万这些数据。我一直在阅读,还有很多工作要做,但我希望在开始之前完成基本配置。

This page告诉我,不应将任何非默认索引添加到portal_catalog中。我甚至读过人们解释如何删除一个或两个默认索引会产生性能差异。

我的问题是:将索引划分到不同目录中的规则是什么,以及选择哪个目录索引哪些类型?

到目前为止,我已经创建了一个额外的目录,用于编目我的'site-setup'对象的所有索引(我已经导致不再在portal_catalog中编入索引)。站点设置索引经常被使用,但很少被修改,因此我认为将它们与经常重新索引的对象分开是正确的。我不确定这是否是主要的考虑因素。

另一个类似的问题(我要解决的那种事情的一个很好的例子):你将如何处理二级工作流review_state变量之类的东西?我给每个工作流的review_state变量一个索引(并经常搜索它们),但我的一些工作流只用于几种类型。 (我最多产的对象有辅助工作流程......)

我非常感谢您的建议!

坎贝尔

1 个答案:

答案 0 :(得分:3)

这不会涵盖所有内容,但我会提出一些观点......

任何不在portal_catalog中的东西都不能使用集合,folder_contents视图,getFolderContents方法,搜索,portlet集合,相关项目(我认为)以及假设您正在使用portal_catalog的任何其他内容。

当我需要能够查询数据时,我喜欢使用其他目录,但它只影响内容对象的子集。

使用collective.indexing加速索引操作。

将目录挂载在它们自己的挂载点上,这样您就可以以不同于站点的其余部分的方式缓存它们(这样您就可以缓存整个目录)。然后,您甚至可以从专用的zeoserver提供目录。

此外,如果您的内容不必由portal_catalog编目(列出了所有约束),您甚至可能想要考虑是否需要它作为一个完整的(原型| dexterity)类型首先。您可以使用更纤薄的repoze.catalog来编制任意对象(可能是非常简单的数据),无论您的目的是什么,并获得更高的性能。或者更好的是,看看索尔是否将其索引以获得非常好的性能。

更重要的是,根据您存储的数据类型,您甚至可以考虑将关系数据库用于数据存储。但我不知道你有什么样的查询,索引,数据等......

30种不同类型似乎很多,但我不知道你的用例是什么。小心分享?也许还有更好的方法。