我目前使用这个模型在appengine ndb数据存储中存储数据
class BundleModel (ndb.Model):
product_vals=ndb.StructuredProperty(ProductModel,repeated=True)
产品型号如下:
^{pr2}$我只把BundleModel放在数据存储中,ProductModel实体以列表的形式嵌入到每个实体中。在
我想知道这是不是一个昂贵和缓慢的方法来存储数据。将每个ProductModel存储为子实体,将BundleModel存储为父实体会更好吗?在
在这种情况下,对BundleModel的每个请求都将转换为对ProductModels的多个请求。那么,一个请求一个大数据块与多个请求(大约10个左右)请求一个小数据块的权衡也是如此吗?在写数据的时候,我会分开写一小块,而不是修改一大块。在
在成本、速度和其他参数方面,这样的变化会产生什么后果?在
谢谢!在
不,使用structured property将比使用单独的子实体更快、更便宜。在
结构化属性的工作方式是扁平化结构,并在实体中为结构中的每个属性自动创建新属性。在您的例子中,
BundleModel
实体将获得自动生成的属性:product_vals.p_created
,product_vals.p_updated
,等等。。在结构化属性更好,因为它只存储一个实体,而不是两个或多个(父级+子级)。这使得它更快更便宜。请注意,访问它时,没有按实体大小计算的成本。在
注意事项:
相关问题 更多 >
编程相关推荐