我需要一个数据库布局,这是高度可扩展的。我有一个超类"station“,它有一个唯一的id和多个属性。
station {
unique_identifier: id
...
}大多数属性如下所示
station_attribute_item {
referenced_station: id,
value: double,
date: date
}因此,您可以将属性可视化为具有日期成员和值的列表中的一项。
因此,如果我需要一个新的属性,我添加一个新的类,就这样了吗?我所要做的就是查询一个新属性?
new_station_attribute {
referenced_station: id
value1: string
value2: double
start: date
end: date
}编辑:
这种数据布局在AppEngine基础架构上可行吗?
发布于 2012-03-18 05:15:46
您所做的是将属性表示为一个单独的实体。因此,您最终将得到几个不同的实体,它们表示引用父实体的属性(=attributes)。
这是不可行的,原因如下:
所以,总而言之,我不能推荐这种方法。
解决方案:
GAE数据存储是一个无模式的数据库,这意味着您可以存储具有不同属性的同类实体,例如,具有动态属性。出现了如何将动态属性映射到类的问题。
在python中,您可以通过Expando class实现这一点。
在Java中,您可以使用low-level Entity class。
Objectify曾经具有嵌入式映射,您可以在其中向该映射添加属性,这些属性最终将作为实体中的属性。他们在Objectify 3.1的实现中发现了一个错误,并收回了这个特性(=从文档中消失)。这个功能will be back in Objectify 4还没有发布,但是如果你觉得勇敢,你可以从主干构建它。
https://stackoverflow.com/questions/9741850
复制相似问题