我需要在Google App Engine数据库中存储一个无向图。为了优化,我正在考虑使用 数据库索引。使用Google App Engine,是否有任何方法可以定义数据库表的列来创建其索引?

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

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

PS:我正在使用Python。

其他提示

您实际上是否看到过慢的疑问?我猜不是。我怀疑这有点过早优化。 App Engine DataStore在内存中没有进行任何排序,过滤,连接或其他有意义的操作,因此查询时间通常相当恒定。特别是,查询延迟不取决于数据存储的实体数量,甚至取决于匹配查询的实体数量。这仅取决于您要求的结果数。

相关说明,将索引添加到数据存储将 不是 加快现有查询。如果查询需要自定义索引,则它不会降低并运行速度较慢。在添加索引之前,查询根本不会运行。

对于您提到的特定查询, select * from edges where vertex1 == x and vertex2 == y, ,数据存储可以在没有自定义索引的情况下运行它。看 文档的这一部分 更多细节。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top