PostGIS'i birkaç yıldır kullanıyorum ve yakın zamanda MongoDB'yi belirli kullanım durumlarıyla başa çıkmak için nasıl kullanabileceğimi araştırmaya başladım. Çok az alan içeren nokta verileriyle uğraşıyordum - kayıt başına değişen sayıda etikete sahip OSM verileri gibi, ve MongoDB'nin şeması olmadığından, bu konuda kendisini iyi borç veriyor. Bu verilerin bir örneğini her DB örneğine yükledim ve bu da buldum.
Bana göre, nokta verilerinin basit bir şekilde depolanması ve toplanması için Mongo gayet iyi çalışıyor. Sınırlayıcı kutu coğrafi sorguları iyi çalışıyor gibi görünüyor ve genel performansın çok iyi olduğunu düşünüyorum. Ayrıca mongoimport aracının bir TSV veya CSV dosyasında bir bileşik 2D koordinat alanı tanımlamama izin vermediğini tespit etmeme rağmen, kurulumu ve kullanımı çok kolaydır. JSON üreten bir senaryo yazmak oldukça kolay olduğundan, bu pek sorun olmamıştır. Şu andaki en büyük dezavantajı, mekansal alemdeki hemen hemen hiçbir şeyin doğal olarak ondan veri okuyamamasıdır. Https://github.com/springmeyer/mapnik-mongo adresinde deneysel bir Mapnik veri kaynağı eklentisi var gibi görünüyor , ancak tüm bulabildiğim bu.
PostGIS'in ayarlanması biraz daha uzun sürüyor (en azından benim için), ancak yukarıda belirtildiği gibi kutudan çıkar çıkmaz şekilde daha fazla özellik sunuyor. Çok daha karmaşık mekansal analitik yetenek sağlamanın yanı sıra, tonlarca başka uygulama ve kütüphaneler tarafından da doğal olarak desteklenir; Mapserver, Mapnik, QGis, GDAL vs.
Performansa gelince, her iki sistemden de çok hızlı bir şekilde veri alabileceğimi öğrendim. Ancak, PostGIS endekslerin varlığından daha fazla yararlanmış gibi görünüyordu. MongoDB, ayarlanan tüm verileri bana (2 milyon kayıt) bir kerede geri döndürmede biraz daha hızlı ve ilk kez bir dizin kullanan bir sorgu döndürürken biraz daha yavaştı. Önbellekleme için kullandığı mekanizmadan tam olarak emin değilim, ancak MongoDB'de bir sorguyu tekrarlarsam sonuçların 2. kez daha hızlı bir şekilde geri döndüğünü görebiliyorum. PostGIS'te benzer bir şey görüyorum ama aynı derecede değil. Ayrıca, makinemdeki bellek kullanımının MongoDB çalışıyorken PostGIS'e kıyasla çok daha yüksek göründüğünü de gördüm.
Bu yüzden benim sonucum, PostGIS'i varsayılan jeo-uzamsal depolama ve analiz sistemim olarak kurtaramayacağım, ancak belirli proje türleri için (yani görüntü döşemeleri ve / veya nokta verilerini gösteren web haritaları) MongoDB kullanmayı düşünebilirim. veri depom olarak.
Roger