Google App Engine 数据库索引

2 投票
2 回答
547 浏览
提问于 2025-04-15 22:51

我需要在Google App Engine的数据库中存储一个无向图。为了提高效率,我在考虑使用数据库索引。请问在使用Google App Engine时,有没有办法定义数据库表的列来创建索引呢?

我需要一些优化,因为我的应用程序使用这个存储的无向图来进行基于内容的推荐过滤。同时,推荐算法还会更新一些图中边的权重。

如果不能使用数据库索引,请推荐其他方法来减少查询图表的时间。我觉得我的算法从图表中检索数据的操作比写入操作要多。

PS:我使用的是Python。

2 个回答

1

你真的遇到查询速度慢的问题吗?我猜可能没有。我觉得这有点过早优化了。应用引擎的数据存储不会在内存中进行排序、过滤、连接或其他有意义的操作,所以查询时间通常是比较稳定的。特别是,查询的延迟并不依赖于你数据存储中的实体数量,甚至也不依赖于符合你查询条件的实体数量。它只取决于你请求的结果数量。

另外,给你的数据存储添加索引并不会加快现有查询的速度。如果一个查询需要自定义索引,没有这个索引也不会让查询变慢。查询根本不会执行,直到你添加了索引。

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

总之,直接运行你需要的查询,不用过多考虑索引或像数据库管理员那样去优化。它不是关系型数据库。:P

撰写回答