我正在GAE投票申请,我希望能够支持非常多的选民(比如10万)。我担心能够在不影响实体大小或任何其他限制的情况下执行此操作。以下是我的实体关系的相关部分:
class Election(db.Model):
tmp_voters = db.StringListProperty(default = "")
class Voter(db.Model):
election = db.ReferenceProperty(Election, collection_name = "voters")
当用户正在编辑选举时,我将选民电子邮件地址列表放在名为tmp_voters的StringListProperty中。在选举开始之前,我为每个选民创建一个选民实体,每个选民实体都有一个对选举实体的引用。
对于大量选民来说,tmp_voters似乎会导致选举实体超过限制。是对的吗?我该如何解决这个问题?使用blob会很好吗?
拥有大量Voter实体(每个实体都引用Election实体)会导致选举实体太大吗?即,添加对选举实体的引用是否会增加选举实体的大小?
我应该关注大量选民的任何其他限制? (配额除外)
答案 0 :(得分:4)
添加对另一个实体中的实体的引用对引用的实体没有任何影响,除了自动生成的反向引用查询将再返回一个结果。
我不清楚tmp_voters的用途是什么,但是,如果ListProperty太大你会遇到问题,尽管可能没有实体大小; ListProperty只能有5000个条目,你不会使用1 MB的空间来容纳5K的电子邮件地址。
答案 1 :(得分:0)
似乎一个更好的设计是让每个选民都包含他们参与的选举(可能很小)的选举清单,而不是相反。然后,选举对象只是关于选举的元数据,而不是实际的选民名单。
当有人到你投票时,你只需提起他们的选民条目,检查他们是否可以在选举中投票,并保存他们的投票。