我需要在Google App Engine数据库中存储一个无向图。出于优化的目的,我考虑使用database indexes。使用Google App Engine,有没有办法定义数据库表的列来创建索引?
我需要一些优化,因为我的应用程序在基于内容的项目推荐过滤上使用了这个存储的无向图。此外,推荐算法还会更新一些图的边的权重。
如果无法使用数据库索引,请建议另一种方法来减少图形表格的查询时间。我相信我的算法从图表中进行的数据检索操作比写入操作更多。
PS:我正在使用Python。
发布于 2010-05-19 01:48:32
也许这会有所帮助:http://code.google.com/intl/sv-SE/appengine/docs/python/datastore/queriesandindexes.html#Defining_Indexes_With_Configuration
发布于 2011-01-26 07:15:45
您是否真的看到过慢得令人望而却步的查询?我猜不是。我怀疑这是不成熟的优化。应用引擎数据存储不会在内存中执行任何排序、过滤、连接或其他有意义的操作,因此查询时间通常相当恒定。特别是,查询延迟并不取决于数据存储的实体数量,甚至不取决于与查询匹配的实体数量。这只取决于你想要的结果的数量。
另外,向数据存储添加索引不会加快现有查询的速度。如果查询需要自定义索引,如果没有它,它不会降级,运行速度也不会变慢。在添加索引之前,查询根本不会运行。
对于您提到的特定查询select * from edges where vertex1 == x and vertex2 == y,数据存储完全可以在没有自定义索引的情况下运行它。有关更多详细信息,请参阅this section of the docs。
简而言之,只需运行所需的查询,不要过多考虑索引或试图像DBA一样进行优化。它不是关系数据库。:P
https://stackoverflow.com/questions/2859667
复制相似问题