我正在建立一个具有许多与许多关系的应用程序;实体“图片”项目可以链接到任何数量的画廊(“画廊”)。当然,画廊可以容纳任何数量的图片。

因此,在此处的Google建议下,我将使用“图片”中的列表,其中包含“画廊”的外国钥匙。这是宏伟的方法。

(老式的关系数据库方法是在“图片”和“画廊”之间拥有一个表 /实体。)

这是我的问题:当存储钥匙时,我应该在'图片'上购买“ stringlistproperty”,或者“ listproperty(db.key)”会更好?

我看到的一个原因之一 stringList 可能的是,我还可以存储其他值然后键,但另一方面,这是肮脏的样式。但是我也很确定Google建议不要在实体上使用一个列表,因为索引会爆炸。因此,这将使我成为后门。

至于 ListProperty 与类型钥匙“如果值实际上是键,则有一个是自动验证。

由于将字符串转换为钥匙非常容易,反之亦然,我看不出有任何列表类型在这里更喜欢的原因。

在绩效问题上,我不知道如何测试这一点 - 但是看来这将是该决定的主要因素。

对您的输入感到好奇。尤其是如果有人在此测试了表现或会如此友善并做到这一点。

欢呼,//汉尼斯

有帮助吗?

解决方案

用一个 db.ListProperty(db.Key) 如果您打算存储钥匙列表。它们将存储在二进制表示中,它比您在字符串列表中使用的字符串表示更紧凑。

正确的是,将键与列表中的其他对象混合在一起是混乱的。在实体中拥有多个列表是可以的,只要您在相同的习惯索引中没有索引超过一个列表 - 这就是导致爆炸索引的原因。

其他提示

使用db.listproperty(db.key),这将使数据获取比字符串更容易。如果画廊模型具有属性为pic_list,属于db.listproperty(db.key),其中包含图片键列表实体..假设图片是您实体的名称..然后picture.get(// galleryObject//。pic_list)将获得所有图片entites ..

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top