MongoDB - 地理空间交叉点性能
Posted
技术标签:
【中文标题】MongoDB - 地理空间交叉点性能【英文标题】:MongoDB - Geospatial intersection performance 【发布时间】:2013-06-21 15:06:55 【问题描述】:我们正在开发一个小工具,允许人们在 Google 地图上绘制多边形,它会返回与绘制的叠加层重叠的邮政编码。我认为这将是深入研究 NoSQL 数据库的好时机,因为我听说过在处理大量数据时有关性能的好消息。
因此,我从美国人口普查 2010 数据集中获取了所有 ZCTA(邮政编码制表区域)形状数据,并将其加载到 MongoDB 中,如下所示。示例文档:
"ZipCode" : 12345,
"Polygon" : type : "Polygon",
coordinates: [[[lng1, lat1],[lng2, lat2], ... , [lngN, latN]]]
我还在 Polygon 列上设置了一个索引,如下所示:
db.ZipCodes.ensureIndex("Polygon" : "2dsphere")
最后,我将 google 多边形中的点转换为另一个 GeoJSON 多边形,并使用 $geoIntersects 查询数据,如下所示:
db.<collection>.find( "Polygon" :
$geoIntersects :
$geometry :
type : "Polygon" ,
coordinates : [[[lng1,lat1], [lng2,lat2], ... , [lngN, latN]]]
)
当覆盖多边形很小时,这很有效,但是当多边形跨越几个州(美国)时,查询需要很长时间(> 20 分钟!)。我怎样才能把它降低到一个更合理的响应时间?我已经索引了邮政编码多边形,因为这就是我要查询的全部内容,所以我认为这将尽可能优化。我的索引是否错误?
提前致谢!
【问题讨论】:
谢谢。我会研究这些选项。 【参考方案1】:在试图找出在 MongoDB 中实现更好性能的最佳方法之后,我决定尝试我们现有的标准数据库 SQL Server。我想我对 SQL Server 地理空间功能的低期望是没有根据的。该查询在没有索引的情况下在
我想我会坚持我所知道的。我真的对 MongoDB 寄予厚望,但地理空间性能严重不足(或关于如何改进它的文档严重不足)。
【讨论】:
以上是关于MongoDB - 地理空间交叉点性能的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB mongod.exe或mongo.exe双击一闪就关闭