我有以下结构的数据:
{
"id": "1",
"title": "A Title",
"description": "A description.",
"listOfStrings": ["one", "two", "three"]
"keyA": {
"keyB": " ",
"keyC": " ",
"keyD": {
"keyE": " ",
"KeyF": " "
}
}
}
我想在Google Datastore中添加/获取此功能。存储它的最佳方法是什么?
我应该使用实体组吗?
要求:
此链接(Storing hierarchical data in Google App Engine Datastore?)提到使用实体组进行分层数据,但此链接(How to get all the descendants of a given instance of a model in google app engine?)提到它们只应用于交易,我不需要。
我正在使用这个库(我认为它不支持ReferenceProperty?)。 http://github.com/GoogleCloudPlatform/gcloud-ruby.git
答案 0 :(得分:1)
如果您希望能够按层次结构进行查询(keyA-> keyB-> keyC) - 使用祖先,或只是一个看起来像这样的键来避免实体组限制。如果您希望能够查询包含提供的密钥的实体 - 创建一个计算属性,您将在其中存储存储在其中的密钥的平面列表。例如,将原始层次结构存储在JsonProeprty中。
答案 1 :(得分:0)
根据我的经验,你要求的实体越多(性能越低)。使用少量数据制作大量实体效率不高。相反,将整个层次结构存储为JsonProperty并使用代码来遍历它。
如果KeyE只是一个字符串,那么添加一个属性KeyE = StringProperty(indexed=True)
,以便您可以查询它。