몇 년 동안 PostGIS를 사용해 왔으며 최근에 MongoDB를 사용하여 특정 사용 사례를 처리하는 방법을 조사하기 시작했습니다. 레코드마다 다양한 수의 태그가있는 OSM 데이터와 같이 스파 스 필드가있는 포인트 데이터를 처리하고 있었으며 MongoDB에는 스키마가 없으므로이 기능이 적합합니다. 이 데이터 샘플을 각 DB의 인스턴스에로드했는데 이것이 내가 찾은 것입니다.
포인트 데이터의 간단한 저장 및 검색을 위해 Mongo가 잘 작동하는 것으로 보입니다. 경계 상자 지리 공간 쿼리가 제대로 작동하는 것으로 보이며 전반적인 성능이 매우 우수하다는 것을 알았습니다. mongoimport 도구를 사용하면 TSV 또는 CSV 파일에서 복합 2D 좌표 필드를 정의 할 수 없다는 것을 알았지 만 설정 및 시작이 매우 쉽습니다. JSON을 생성하는 스크립트를 작성하는 것은 쉽지 않기 때문에 큰 문제가되지 않았습니다. 현재 가장 큰 단점은 지리 공간 영역의 다른 어떤 것도 기본적으로 데이터를 읽을 수 없다는 것입니다. https://github.com/springmeyer/mapnik-mongo에 실험적인 Mapnik 데이터 소스 플러그인이있는 것으로 보이지만 이것이 내가 찾을 수있는 전부입니다.
반면 PostGIS는 (적어도 나에게는) 설정하는 데 약간 더 오래 걸리지 만 위에서 언급했듯이 즉시 더 많은 기능을 제공합니다. 훨씬 더 정교한 공간 분석 기능을 제공 할뿐만 아니라 다른 많은 응용 프로그램 및 라이브러리에서도 기본적으로 지원됩니다. Mapserver, Mapnik, QGis, GDAL 등 등등. PostGIS는 단순한 저장 및 검색 시스템이 아니라 진정한 GIS 시스템입니다.
성능이 향상되는 한 두 시스템 모두에서 데이터를 매우 빠르게 검색 할 수 있습니다. 그러나 PostGIS가 인덱스의 존재로 더 많은 이점을 얻은 것 같습니다. MongoDB는 전체 데이터 세트를 한 번에 나에게 반환하는 데 약간 빠르며 (2 백만 레코드) 처음으로 인덱스를 사용한 쿼리를 반환 할 때 약간 느립니다. 캐싱에 사용하는 메커니즘을 정확히 알지 못하지만 MongoDB에서 쿼리를 반복하면 결과가 두 번째로 훨씬 빨리 돌아 오는 것을 알 수 있습니다. PostGIS에서 비슷한 것을 보았지만 같은 정도는 아닙니다. 또한 MongoDB를 실행하면 PostGIS보다 내 컴퓨터의 메모리 사용량이 훨씬 높은 것으로 나타났습니다.
따라서 결론은 기본 지리 공간 저장 및 분석 시스템으로 PostGIS를 제거하지 않을 것이지만 특정 유형의 프로젝트 (예 : 이미지 타일 및 / 또는 포인트 데이터를 표시하는 웹 맵)의 경우 MongoDB 사용을 고려할 수 있습니다 내 데이터 저장소로.
알았다