5

我正在构建一个由 GPS 记录车辆坐标的应用程序。我想实现一些功能,例如:

  • 车辆实时追踪
  • 车辆历史跟踪
  • 保存客户记录的位置和区域

我需要一些指导方针作为数据库和应用程序设计的起点。从最佳实践到经验的任何提示都将真正帮助我走上正轨。

  • 如何处理几何的 ORM?例如:位置将转换为 SpatialPoint 类,其中区域将转换为 SpatialPolygon 类
  • 我如何保持来自车辆的海量数据流正常?我正在考虑一个表格来保存最新的点(用于实时数据),并将这些数据批量解析到一个单独的表格中的折线中以用于历史目的(车辆上每个员工轮班一条线)。
  • Mysql 可能不是最好的选择,但我计划使用 Solr 作为基于位置的快速搜索的索引。虽然我们需要做一些实时距离计算,比如哪辆车离客户 X 最近。有什么想法吗?
4

3 回答 3

4

我可以帮助你一点,mysql 绝对最好的选择,我已经和你走上了同样的路很多次,mysql 空间扩展非常棒,事实上,即使超过 500 万行空间数据的表,它也非常快,这一切都在索引中。空间扩展是很少使用的保存最好的mysql秘密之一;)

ORM,我建议跳过这个 tbh - 如果你有大量数据,所有这些类的实例都会杀死你的应用程序,坚持使用简单的数组结构来处理数据。

重新生成海量数据流,要么实时使用它并且仅存储每 10 个条目,要么将其全部保存在一个表中 - 由于表的索引方式,它不会影响速度,但大小考虑可能值得考虑。

对于来自 PHP 的替代方案,您可以在 postgresql 上尝试 postgis,但我一直偏爱 mysql,因为它易于使用、本机支持和全面速度。

祝你好运!

于 2010-07-02T00:52:33.747 回答
3

是的,我也推荐使用 Solr。当前版本是 1.4。它非常适合这个问题。

  1. ORM - 您可能需要 sfSolrPlugin 和 Doctrine ORM 来将 PHP 与 Solr 联系起来,请参阅 LucidWorks 的文章,标题为在 15 个人日内构建搜索应用程序

  2. 实时索引更新- 我相信 Solr 1.5 将在下一个版本的 Solr 中发布。您可以从 SVN 获得它。

  3. 地理空间搜索- 我使用Apache Solr 的空间搜索插件。Gs 功能可能包含在 Solr 1.5 中。我相信已经有一些对 gs 的基本支持,不使用插件。

于 2010-07-06T19:38:18.703 回答
0

关于“如何处理/存储来自车辆的大量积分”:

我正在做一个非常相似的项目。我已经通过维护 2 个表解决了这个问题(使用 MySQL,但这适用于任何其他数据库):

  • 一种用于跟踪对象(车辆、用户等)

    此表将对象 id 作为主键,任何违反主键约束的更新都将更新为此键存储的数据。它可以通过“ON DUPLICATE KEY UPDATE”轻松实现。这使得查找跟踪非常快,并且只保留一个位置数据/对象的实例。我还实现了用于删除过时数据记录的服务器端逻辑(在一定时间后,如果没有收到更新,则需要删除这些数据)

  • 一个用于历史/查找目的

    该表将对象 id 和时间戳作为复合主键。该表可以在时间戳列上进行分区。

对对象位置的任何更新都会插入到两个表中。

我希望这有帮助。

于 2012-06-14T08:33:52.403 回答