Google app engine 棘手的1对1无主关系查询

Google app engine 棘手的1对1无主关系查询,google-app-engine,jdo,Google App Engine,Jdo,我目前正在基于GAE/Java开发一个基于位置的服务。我对这个很陌生,我需要您对JDO查询部分的帮助 我有两个持久类,Client和ClientGeolocation。第一个用于存储客户端属性(Key clientId、字符串名称、字符串设置等),第二个用于存储其地理位置更新(Key clientGeolocationId、Key clientId、Long timestamp、双纬度、双经度)。由于一个客户端拥有数千条地理位置记录(每个位置更新一条),因此我决定在ClientGeolocati

我目前正在基于GAE/Java开发一个基于位置的服务。我对这个很陌生,我需要您对JDO查询部分的帮助

我有两个持久类,Client和ClientGeolocation。第一个用于存储客户端属性(Key clientId、字符串名称、字符串设置等),第二个用于存储其地理位置更新(Key clientGeolocationId、Key clientId、Long timestamp、双纬度、双经度)。由于一个客户端拥有数千条地理位置记录(每个位置更新一条),因此我决定在ClientGeolocation和客户端类之间使用1对1无主关系

该服务允许用户查看其他用户是否在范围内(例如,他们在5分钟步行距离内)。对于每个请求,使用JDO查询实现这一点会消耗太多资源/太慢,因此我将用户的最后一个地理位置放在memcache中,并从那里进行检查。到目前为止还不错

问题是,当应用程序冷启动且memcache为空时,我想用存储器中的数据填充memcache(使用JDO查询),我根本不知道如何查询“每个至少有一条记录不超过180分钟的用户的最后一条地理位置记录”

目前我能想到的最好的解决办法是分两部分来做。首先,要查询在过去180分钟内有记录的用户的clientId密钥(我希望这将查询不同的clientId),然后对所有clientId执行一个查询,在该查询中,我查询了最后一个(按时间戳desc排序的前1个订单)地理位置记录。这意味着如果第一个查询返回10000个用户,那么我将对最后一个地理位置记录执行10000个查询。我觉得在GAE中有一个更好的解决方案:)

你能帮助我如何用正确的方式写这个查询吗

非常感谢你的帮助

这是否有帮助?