我正在构建一个应用程序,其中车辆坐标由 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/