Tôi đã sử dụng PostGIS được một vài năm và chỉ gần đây mới bắt đầu điều tra làm thế nào tôi có thể sử dụng MongoDB để xử lý các trường hợp sử dụng nhất định. Tôi đã xử lý dữ liệu điểm có các trường thưa thớt - như dữ liệu OSM với số lượng thẻ khác nhau trên mỗi bản ghi và vì MongoDB không có lược đồ, nên nó rất phù hợp với điều này. Tôi đã tải một mẫu dữ liệu này vào một thể hiện của mỗi DB và đây là những gì tôi tìm thấy.
Tôi nhận thấy rằng để lưu trữ và truy xuất dữ liệu điểm đơn giản, Mongo hoạt động tốt. Các truy vấn không gian địa lý hộp giới hạn dường như hoạt động tốt, và tôi thấy rằng hiệu suất tổng thể là rất tốt. Nó cũng rất dễ cài đặt và bắt đầu, mặc dù tôi đã thấy rằng công cụ mongoimport không cho phép tôi xác định trường tọa độ 2D hỗn hợp trong tệp TSV hoặc CSV. Vì việc viết một tập lệnh tạo JSON khá dễ dàng, điều này không thành vấn đề. Hạn chế lớn của nó tại thời điểm này là hầu như không có gì khác trong lĩnh vực không gian địa lý có thể đọc dữ liệu từ nó. Dường như có một plugin nguồn dữ liệu Mapnik thử nghiệm tại https://github.com/springmeyer/mapnik-mongo , nhưng đó là tất cả những gì tôi có thể tìm thấy.
Mặt khác, PostGIS mất nhiều thời gian hơn để thiết lập (ít nhất là đối với tôi), nhưng như đã đề cập ở trên, nó cung cấp nhiều tính năng hơn ngay lập tức. Ngoài việc cung cấp khả năng phân tích không gian tinh vi hơn nhiều, nó còn được hỗ trợ bởi rất nhiều ứng dụng và thư viện khác; Maperver, Mapnik, QGis, GDAL, v.v. Đối với tôi, PostGIS không chỉ là một hệ thống GIS thực sự, hơn là một hệ thống lưu trữ và truy xuất đơn giản.
Về hiệu suất, tôi thấy rằng tôi có thể truy xuất dữ liệu rất nhanh từ cả hai hệ thống. Tuy nhiên, có vẻ như PostGIS được hưởng lợi nhiều hơn từ sự hiện diện của các chỉ mục. MongoDB đã nhanh hơn một chút khi trả lại toàn bộ dữ liệu được đặt cho tôi (2 triệu bản ghi) cùng một lúc và chậm hơn một chút khi trả về truy vấn sử dụng chỉ mục - lần đầu tiên. Tôi không chắc chắn chính xác về cơ chế mà nó sử dụng cho bộ nhớ đệm, nhưng tôi có thể thấy rằng nếu tôi lặp lại một truy vấn trong MongoDB, kết quả sẽ quay lại nhanh hơn nhiều lần thứ 2. Tôi thấy một cái gì đó tương tự trong PostGIS, nhưng không cùng mức độ. Tôi cũng lưu ý rằng việc sử dụng bộ nhớ trên máy của tôi dường như cao hơn nhiều khi chạy MongoDB so với PostGIS.
Vì vậy, kết luận của tôi là tôi sẽ không loại bỏ PostGIS làm hệ thống lưu trữ và phân tích không gian địa lý mặc định của mình, nhưng đối với một số loại dự án (cụ thể là bản đồ web hiển thị các hình ảnh và / hoặc dữ liệu điểm) tôi có thể xem xét sử dụng MongoDB là cửa hàng dữ liệu của tôi.
Roger