我的背景是关系数据库的,我正在做一些实验,主要用于学习Google AppEngine。我想建立一个“选举”应用程序,用户属于一个州(CA,NY,TX等),他们选择一个党(共和党,民主党等),并投票支持某一年该应用可以在2016年重新使用)。谷歌AppEngine分片问题
我希望用户能够看到他们的投票历史,并且可能会在当前选举中更改一次。此外,我将要求用户指定他们的邮政编码,并认为按州和/或邮政编码运行一些报告会很好。
使用关系数据库,看来你会创造一些像这样的表:
Users(userid, username, city, state, zip)
UserVote(userid, year, vote)
然后使用SQL来运行报告。使用AppEngine数据存储区看来,运行汇总报告似乎是一项挑战。
我最初的想法是按User
分片,其中每个用户可以包含一个Votes
的列表,然后可以双重保存其他地方的聚合。
有什么建议吗?
P.S.我见过AppEngine-MapReduce项目,但我不确定这是否会过度。
你是什么意思的'用户分片'?为什么mapreduce过度杀伤? – 2011-05-30 21:53:02
关于'用户分片' - 根据我对数据存储的有限了解,除非存在层次关系,否则无法跨实体加入。仔细挑选“根”实体(即用户)可让您按相关实体进行查询。关于mapreduce的过度杀伤 - 看起来它可能是一种计算聚合的方法,但在我尝试学习的许多其他事物之上增加了一层额外的复杂性。 – dana 2011-05-31 14:46:09