如果想在 Datastore 中保存用户特定的参数设置,你会怎样做?

2010-12-27 19:42:54 +08:00
 darasion
有没有比这样更好的办法呢:

class User(db.Model):
user_name=db.StringProperty()
....
settings1=db.XXXProperty()
settings2=db.XXXProperty()
settings3=db.XXXProperty()
....
3657 次点击
所在节点    Google App Engine
3 条回复
Livid
2010-12-27 19:45:25 +08:00
用户的某个 property 是 pickle?
darasion
2010-12-27 19:56:45 +08:00
@Livid 我也想这样做。但不知道哪一种更好。或者有没有更好的办法。

Model 结构什么的一旦定下来,想改似乎挺麻烦的。囧。
darasion
2010-12-28 12:15:57 +08:00
我想到了3种解决办法:

办法1:
把参数设置放在User里边。

class User(db.Model):
#用户相关属性
....
#各个参数设置属性
...


办法2:
用ReferenceProperty将用户和参数设置联系起来。

class User(db.Model):
#用户相关属性
....

class Settings(db.Model):
user = db.ReferenceProperty(reference_class=User,
collection_name='settings')
#各个参数设置属性
....


办法3:
用pickle把所有参数放入一个Property里边。
http://appengine-cookbook.appspot.com/recipe/pickledproperty

class User(db.Model):
#用户相关属性
....
settings=db.PickledProperty()


问了一下 @keakon ,他说:
『性能和空间占用上来说,3是最优的

实现上来说,1是最方便的,但是更改时比较麻烦,如果改动不频繁,建议用这种

2无论性能还是实现都是最差的』



最终,我还是选择了PickledProperty:

http://appengine-cookbook.appspot.com/recipe/pickledproperty

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/6396

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX