PHP、MySQL、空间数据和设计

标签 php mysql database-design solr spatial

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

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

我需要一些指南来指导数据库和应用程序的设计。从最佳实践、提示到经验,任何东西都会真正帮助我走上正确的道路。

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

最佳答案

我可以在一点上帮助你,mysql 绝对 是最好的选择,我已经和你走过很多次同一条路,mysql 空间扩展非常棒,事实上它甚至非常快在具有超过 500 万行空间数据的表中,所有这些都在索引中。空间扩展是很少有人使用的保存最好的 mysql secret 之一 ;)

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

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

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

祝你好运!

关于PHP、MySQL、空间数据和设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3156638/

相关文章:

mysql - 从两个表中查找第三个表中不存在的组合

php - 计数值为空时会自动插入

php - 简单查询问题,where子句

mySQL NATURAL JOIN 显示类似于 LEFT OUTER JOIN 的结果

python - 我应该使用 ndb 结构化属性还是单独的模型来限制我的 GAE 查询。基础数据建模问题。

php - 基于数据库查询的不同按钮颜色

php - Next、Prev 以及之间的数字

php - 从iOS到PHP的特殊字符和表情符号

mysql - 在 MySql 中拥有大量 View 的后果是什么

php - 使用数组查询