目前,我正在做一个像 Uber 这样的项目。这意味着有两个应用程序:一个用于驱动程序,一个用于客户。
问题是:驱动程序需要每 2 秒更新一次他们的位置。客户每 2 秒实时拉出所有最近的司机。它会导致数据库查询性能不佳。我使用 PostgreSQL 的 cube & earthdistance 扩展来计算最近的。
谁能告诉我解决这个问题的最佳方法是什么?非常感谢!
目前,我正在做一个像 Uber 这样的项目。这意味着有两个应用程序:一个用于驱动程序,一个用于客户。
问题是:驱动程序需要每 2 秒更新一次他们的位置。客户每 2 秒实时拉出所有最近的司机。它会导致数据库查询性能不佳。我使用 PostgreSQL 的 cube & earthdistance 扩展来计算最近的。
谁能告诉我解决这个问题的最佳方法是什么?非常感谢!
您可以使用deepstream.io进行实时数据提交,例如来自 Android
public void onLocationChanged(Location location) {
// get the record
Record record = client.record.getRecord( "driver/14" );
// any kind of data path works
record.set( "position.x", location.getLongitude() );
//as well as any kind of serializable datatype
record.set( "position.y", location.getLatitude() );
}
到 JavaScript
// get the record
var driver = client.record.getRecord( 'driver/14' );
// subscribe to any changes within position
driver.subscribe( 'position', function( position ){
updateMarker( position.x, position.y );
});
结合deepstream与之集成的 RethinkDBs 地理空间查询可能是一个可扩展的解决方案。
这是一个示例 repo演示了这一点