Google App Engine数据库索引

时间:2010-05-18 17:46:08

标签: python google-app-engine graph recommendation-engine database-indexes

我需要在Google App Engine数据库中存储无向图。 出于优化目的,我打算使用database indexes。 使用Google App Engine,有没有办法定义数据库表的列来创建索引?

我需要进行一些优化,因为我的应用程序在基于内容的项目推荐过滤中使用此存储的无向图。此外,推荐器算法更新某些图形边缘的权重。

如果无法使用数据库索引,请建议另一种方法来减少图表的查询时间。我相信我的算法比图表操作更多的数据检索操作。

PS:我正在使用Python。

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

你是否真的看到过于缓慢的查询?我猜不是。我怀疑这有点过早优化。应用程序引擎数据存储区不会在内存中执行任何排序,过滤,连接或其他有意义的操作,因此查询时间通常相当不变。特别是,查询延迟不依赖于数据存储区的实体数量,甚至不依赖于与查询匹配的实体数量。它只取决于你要求的结果数量。

在相关说明中,向数据存储添加索引将加速现有查询。如果一个查询需要一个自定义索引,它将不会降级并在没有它的情况下运行得更慢。在添加索引之前,查询根本不会运行。

对于您提到的特定查询select * from edges where vertex1 == x and vertex2 == y,数据存储区可以在没有自定义索引的情况下运行它。有关详细信息,请参阅this section of the docs

简而言之,只需运行您需要的查询,不要过多考虑索引或尝试优化,就像您是DBA一样。它不是关系数据库。 :P