如何在Google App Engine数据存储中存储来自Android的用户特定数据。祖先与否?

如何在Google App Engine数据存储中存储来自Android的用户特定数据。祖先与否?,android,google-app-engine,parent,datastore,ancestor,Android,Google App Engine,Parent,Datastore,Ancestor,我目前有一个Android应用程序,它使用3个SQLite数据库表,我想将这些数据存储在我基于Java的GAE应用程序的云中。它将用作备份,用户登录后也可以在浏览器中查看。用户正在将数据输入Android应用程序,因此3个表中的所有数据都属于该用户。是否有一种存储此类用户特定数据的推荐方法?我应该将用户电子邮件存储在每个实体中以识别它,还是将用户实体作为父实体,将属于此用户的所有实体作为子实体?在这种情况下使用父项有什么好处吗?这完全取决于单个用户有多少记录,这些记录更新的频率,以及您如何访问这

我目前有一个Android应用程序,它使用3个SQLite数据库表,我想将这些数据存储在我基于Java的GAE应用程序的云中。它将用作备份,用户登录后也可以在浏览器中查看。用户正在将数据输入Android应用程序,因此3个表中的所有数据都属于该用户。是否有一种存储此类用户特定数据的推荐方法?我应该将用户电子邮件存储在每个实体中以识别它,还是将用户实体作为父实体,将属于此用户的所有实体作为子实体?在这种情况下使用父项有什么好处吗?

这完全取决于单个用户有多少记录,这些记录更新的频率,以及您如何访问这些数据(您需要什么样的查询等),因此您的问题没有简单而明确的答案

最有可能的是,您可以使用这两种方法,除非每个用户都有数千条记录,并且每几分钟更新一次,这时您可能会遇到一些限制


请注意,您不需要包含电子邮件地址来标识每个记录。通常,您首先创建一个用户实体,然后使用此用户实体的id(长)来标识与此用户相关的所有其他实体。

我的两分钱。与Sqlite不同,Google App Engine不是关系数据库,因此将Sqlite数据保存到GAE将不是一项简单的任务。但是,您可以在GAE上创建一个应用程序,使用您应用程序中的useremail作为实体密钥。然后,您可以根据此密钥检索用户特定信息。在这种情况下,您需要做的是找到一种方法将数据从您的应用程序发送到GAE。

谢谢,每个用户不会有数千条记录,因此为了简单起见,我将用用户id标记每个实体。我假设您指的是数据存储生成的id?我知道也可以使用字符串作为实体id,不使用电子邮件地址作为用户实体id的原因是什么?两个原因:1。数字ID比电子邮件占用的空间小得多。如果您有其他实体使用其id引用用户实体,则这一点可能非常重要。2。用户有时会更改他们的电子邮件地址。嗨,Andrei,我知道已经有一段时间了,我只是有一个快速跟进的问题:如何使用从用户对象获得的字符串id,该字符串id作为身份验证方法中的参数传入?(即user.getUserId())?这将非常有用,因为我可以从登录用户那里获取id。如果您不允许用户更改/切换身份验证选项,这可以工作。就个人而言,我不喜欢将我的应用程序与单一的第三方解决方案联系得太紧密。例如,您可能会在某个时候决定允许用户使用其Facebook帐户登录,使用SMS验证重置帐户,等等。