Mar*_*tin 9 google-app-engine database-design directed-graph path-finding
我需要在google appengine中存储一个大而动态的无向图,这是最好的方法吗?图形表示必须能够支持快速拉出一组顶点(用于在页面上渲染)和来自特定顶点的所有链接,以及跨图形的路径寻找(尽管最佳路径并不是真正需要的,只是一个公平的好的一个)
我对这个主题的看法:最明显的方法是有一个顶点模型和一个引用两个顶点的边缘模型,但听起来它最终会为每个操作使用大量的查询,我想知道是否有一种更好的方法(可能以某种方式将链接信息构建到每个顶点)
这是最简单的方法:
class Vertex(db.Model):
outedges = db.ListProperty(db.Key)
# Other information about the vertex here
Run Code Online (Sandbox Code Playgroud)
现在你可以在没有任何查询的情况下探索图形 - 只需在一个或多个键上调用db.get来检索相关的顶点:
# Get the first referenced vertex
vertex2 = db.get(vertex1.outedges[0])
# Get all referenced vertices
vertices = db.get(vertex1.outedges)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2074 次 |
| 最近记录: |