2010-09-06 74 views
3

我有一个App Engine/Python/Django应用程序,它在过去的一年里已经发展壮大,目前有175个索引。问题是我没有经过清理/删除不再需要的索引。现在,我不确定哪些索引处于活动状态,哪些索引已经死亡,但我猜测大约20%的索引是无用的。Google App Engine - 跟踪使用哪些索引

我很好奇,是否有任何App Engine工具可用于跟踪/计算访问索引的次数?

如果没有可用的工具,那么一个可能的想法是重载获取方法以在每次访问索引时跟踪这些信息,但我不确定这是否是一个好主意(可能会减慢速度),而且我不会不知道实现它的最佳方式是什么。

如果有人已经经历了清理(搜索)死指数的经验,我会有兴趣听到你的经验。

回答

5

App Engine SDK会对此进行自动索引创建的跟踪。删除你的index.yaml,然后给你的应用程序一个很好的锻炼。只要您在测试中击中了每个不同的查询,SDK就会生成一个新的index.yaml,其中只包含您需要的索引。

+1

嗨,尼克,感谢您的答案 - 但我相信你指的是开发服务器只,是正确的? ......我很好奇看到生产/现场系统的统计数据。试图在测试服务器上执行索引的所有组合都是很多工作,并且可能很容易丢失一个特定的组合,然后在我上线时出现...... – 2010-09-06 13:23:25

+1

是的,这只在SDK上。但是,如果您无法使用整个应用程序,我怀疑您的预发布测试需要一些改进。将生产环境设置为记录索引使用当然是可能的,但不是微不足道的。请参阅我的关于如何开始使用钩子的文章:http://blog.notdot.net/2009/11/API-call-hooks-for-fun-and-profit – 2010-09-06 15:27:36

+0

非常好,那看起来像是能够做到的事情需要。 – 2010-09-06 15:58:17

0

如果您使用Nose为您的应用程序设置了自动化测试套件,则可以使用我的插件来称为nose-gae-index。它使用SDK内部的IndexYamlUpdater类,就像Nick Johnson在他的答案中提到的开发服务器程序。

好处是,您将拥有一个完全自动化的过程来跟踪未来的索引创建和删除(更不用说测试套件具有良好覆盖范围的其他优势)。