2012-04-16 78 views
2

我想了解如何正确使用目录。决定何时应创建新目录的规则是什么?

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

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

我的问题是:将索引划分为不同的目录以及选择哪种类型的索引有哪些规则?

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

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

我会非常感谢您的建议!

坎贝尔

回答

3

这不会面面俱到,但我会带一些点..没有在portal_catalog

任何不会与收藏工作,folder_contents观点,getFolderContents方法,搜索,门户集合,相关项目(我认为)以及其他任何假定您使用的portal_catalog。

我希望在需要查询数据时使用额外的目录,但它只影响内容对象的子集。

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

将目录挂载到它们自己的挂载点上,这样就可以将它们与网站的其他部分缓存到不同的位置(这样可以缓存整个目录)。然后,您甚至可以从专用zeoserver服务目录。另外,如果您的内容不需要通过portal_catalog进行编目(列出所有约束条件),您甚至可以考虑是否需要将它作为一个完整的(原型|灵巧性)类型第一个地方。无论您的目的是什么,您都可以使用更细的repoze.catalog来编目任意对象(这可能是非常简单的数据),并获得更高的性能。或者更好的是,看看索尔索引它的非常好的表现。

关于更多的事情,根据您存储的数据类型,您甚至可以使用关系数据库查看数据存储。但我不知道你有什么样的查询,索引,数据等...

30种不同的类型看起来很多,但我不知道你的用例是什么。小心分享?也许有更好的方法来做到这一点。

+0

我一直在研究[This](https://github.com/bikalabs/Bika-LIMS)。最多的对象类型是[分析](https://github.com/bikalabs/Bika-LIMS/blob/master/bika/lims/content/analysis.py),这在我看来非常重要。 ..你看到那里有来自Plone 2(甚至更早)的代码遗迹。 – rockfruit 2012-04-17 07:50:36