1

我正在尝试构建一个 iOS 应用程序,它获取用户的位置,然后通过 REST api 查询他/她附近的其他用户的后端。我已经做了一些谷歌搜索,我的选择(根据我的经验)似乎是。

  • Django - 带有 geodjango.Hosting 的活塞可能在 webfaction 上。
  • 谷歌应用引擎。

我更倾向于第一选择,因为 Google App Engine 似乎不是那么开放,并且在开始时有一个陡峭的学习曲线。

现在在 mysql 数据库上进行位置查询似乎有点吓人。我的直觉是必须有更好的东西。毕竟我不想重新发明轮子!

任何人都可以请照亮

  • 我将如何进行位置查询?..bounding recangles 或更好的东西?
  • 我应该使用什么数据库?...非关系型还是关系型?
  • 如果关系...应该按位置索引数据库吗?
  • 位置数据应该存储在单独的表中还是与其他用户数据存储在同一个表中?
  • 我应该使用时间戳来使旧的位置更新无效还是有更好的方法来做到这一点?(例如,数据库本身可以定期删除位置更新)。

到目前为止,我主要是一名 iOS 开发人员,并且在构建 Web 应用程序方面经验很少。任何建议将不胜感激。

如果之前有人问过类似的问题,请随时指出。

提前致谢。- 萨米泽!

4

1 回答 1

2

恐怕您问了太多笼统的问题,无法得到有用的答案。我会尽力:

如果你想做非常简单的地理空间的东西,试着坚持使用边界框。适合该问题的最简单技术非常值得探索。但是,您可能很快就会发现您需要更多...

如果您想使用 geodjango,请使用 PostGIS 数据库并忘记非关系数据库。您将开发一个后端,对于非 webapp 程序员来说,它的学习曲线很陡峭。从 geodjango 教程开始,逐渐开发出您熟悉的技术堆栈(使用 geodjango REST 服务会很容易)。

选择非关系型数据库的原因要么是非常特定于用例(您想要存储文档、图表,或者您不想要预定义的模式),要么是出于扩展目的(同时读取和写入大量数据)所需要的,因此使用多个节点等)。如果您是非 Web 应用程序程序员,请聘请有经验的人(可以做一些“软件架构”)来帮助您走上这条道路。

  • 位置数据应该存储在单独的表中还是与其他用户数据存储在同一个表中?
  • 我应该使用时间戳来使旧的位置更新无效还是有更好的方法来做到这一点?(例如,数据库本身可以定期删除位置更新)。

向做过任何数据库设计的人寻求帮助。根据到目前为止的问题描述,您可以使用两个表:一个User(id, name)表和一个UserLocation(id, timestamp, user_id, xCoordinate, yCoordinate)表。比UserLocation为您为用户获得的每个样本添加一行。您可以稍后设计(和更改)解释 UserLocation 表的规则,例如:

  • 最新的 UserLocation 是有效的
  • 如果时间戳超过 4 小时,则无法使用
  • ETC

从你的提问来看,感觉你有点不合群。但是,如果你能坚持简单的技术并务实地工作,你就能让你的服务发挥作用。为什么不从 mysql+php 和边界查询开始呢?一旦其他所有功能都正常工作,然后将其换成其他东西吗?

于 2011-06-05T21:02:41.783 回答