SIG: PostGIS / PostgreSQL vs MySql vs SQL Server?

EDIT: J’utilise Postgres avec PostGIS depuis quelques mois maintenant et je suis satisfait.

J’ai besoin d’parsingr quelques millions d’enregistrements géocodés, chacun ayant sa latitude et sa longitude. Ces enregistrements incluent des données d’au moins trois types différents et j’essaierai de voir si chaque ensemble influence l’autre.

Quelle firebase database convient le mieux au magasin de données sous-jacent pour toutes ces données? Voici mes envies:

  • Je connais le SGBD. Je suis le plus faible avec PostgreSQL, mais je suis prêt à apprendre si tout le rest est vérifié.
  • Il fait bien avec les requêtes SIG. Les recherches de Google suggèrent que PostgreSQL + PostGIS soit le plus puissant? Au moins beaucoup de produits semblent l’utiliser. Les extensions spatiales de MySql semblent comparativement minimes?
  • À bas prix. Malgré la limite de 10 Go de la firebase database dans SQL Server Express 2008 R2, je ne suis pas sûr de vouloir respecter cette limite et d’autres limitations de la version gratuite.
  • Pas d’antagonisme avec Microsoft .NET Framework. Grâce à Connector / Net 6.3.4, MySql fonctionne bien avec les programmes C # et .NET Framework 4. Il supporte entièrement Entity Framework de .NET 4. Je ne trouve aucun équivalent non commercial de PostgreSQL, bien que je ne sois pas opposé à payer 180 $ pour dotConnect de Devart pour PostgreSQL Professional Edition.
  • Compatible avec R. Il semble que tous les 3 peuvent parler avec R en utilisant ODBC, donc peut ne pas être un problème.

J’ai déjà fait du développement avec MySql, mais je peux changer si nécessaire.

Si vous êtes intéressé par une comparaison approfondie, je vous recommande “Comparer SQL Server 2008 Spatial, PostgreSQL / PostGIS 1.3-1.4, MySQL 5-6” et / ou “Comparer SQL Server 2008 R2, Oracle 11G R2, PostgreSQL / PostGIS 1.5 Spatial Caractéristiques ” par Boston GIS.

Considérant vos points:

  • Je connais bien le SGBD: la configuration d’une firebase database PostGIS sous Windows est simple, l’utilisation de la gestion PgAdmin3 est également simple
  • Il fait bien avec les requêtes SIG: PostGIS est définitivement le plus fort des trois, seul Oracle Spatial serait comparable mais est disqualifié si l’on considère ses coûts
  • Coût bas: +1 pour PostGIS à coup sûr
  • Pas d’antagonisme avec Microsoft .NET Framework: vous devriez au moins pouvoir vous connecter via ODBC ( voir le wiki Postgres )
  • Compatible avec R: ne devrait pas être un problème avec l’un des trois

J’ai travaillé avec les trois bases de données et effectué des migrations entre eux, alors j’espère que je peux encore append quelque chose à un ancien message. Il y a dix ans, j’ai été chargé de mettre un dataset volumineux – 450 millions d’objects spatiaux – de GML à une firebase database spatiale. J’ai décidé d’essayer MySQL et Postgis, à l’époque il n’y avait pas d’espace dans SQL Server et nous avions une petite atmosphère de démarrage, donc MySQL semblait convenir. Par la suite, j’ai été impliqué dans MySQL, j’ai participé à quelques conférences et j’ai été très impliqué dans les tests bêta des fonctions plus compatibles avec SIG de MySQL qui ont finalement été publiées avec la version 5.5. J’ai ensuite été impliqué dans la migration de nos données spatiales vers Postgis et de nos données d’entreprise (avec des éléments spatiaux) vers SQL Server. Ce sont mes conclusions.

MySQL

1). Problèmes de stabilité En 5 ans, nous avons eu plusieurs problèmes de corruption de firebase database, qui ne pouvaient être résolus qu’en exécutant myismachk sur le fichier d’index, un processus qui peut durer plus de 24 heures sur un tableau de 450 millions de lignes.

2). Jusqu’à récemment, seules les tables MyISAM prenaient en charge le type de données spatiales. Cela signifie que si vous souhaitez un support de transaction, vous n’avez pas de chance. Le type de table InnoDB prend désormais en charge les types spatiaux, mais pas les index qui, compte tenu des tailles typiques des ensembles de données spatiales, ne sont pas très utiles. Voir http://dev.mysql.com/doc/refman/5.0/en/innodb-ressortingctions.html Mon expérience lors de mes conférences était que l’espace était une reflection après coup – nous avons implémenté la réplication, le partitionnement, etc. mais cela ne fonctionne pas avec l’espace. EDIT: Dans la prochaine version 5.7.5, InnoDB prendra enfin en charge les index sur les colonnes spatiales, ce qui signifie que ACID, les clés étrangères et les index spatiaux seront finalement disponibles dans le même moteur.

3). La fonctionnalité spatiale est extrêmement limitée par rapport à celle de Postgis et de SQL Server. Il n’y a toujours pas de fonction ST_Union qui agit sur tout un champ géomésortingque, une des requêtes que je lance le plus souvent, à savoir que vous ne pouvez pas écrire:

select atsortingbute, ST_Union(geom) from some_table group by some_atsortingbute 

ce qui est très utile dans un contexte SIG. Select ST_Union(geom1, const_geom) from some_table , c’est-à-dire que l’une des géomésortinges est une géomésortinge constante codée en dur, ce qui est un peu limitant en comparaison.

4). Pas de support pour les rasters. Etre capable de faire une parsing combinée de vector-raster dans une firebase database est une fonctionnalité SIG très utile.

5). Pas de support pour la conversion d’un système de référence spatiale à un autre.

6). Depuis l’acquisition par Oracle, l’espace a vraiment été mis en attente.

Dans l’ensemble, pour être juste envers MySQL, il a supporté notre site Web, WMS et le traitement spatial général pendant plusieurs années et a été facile à configurer. En revanche, la corruption des données était un problème, et en étant obligés d’utiliser les tables MyISAM, vous perdez beaucoup des avantages d’un SGBDR.

Postgis

Compte tenu des problèmes rencontrés avec MySQL, nous nous sums finalement convertis à Postgis. Les points clés de cette expérience ont été.

1). Stabilité extrême Pas de corruption de données en 5 ans et nous avons désormais environ 25 boîtiers Postgres / GIS sur des machines virtuelles Centos, à des degrés de charge variables.

2). Un développement rapide – raster, topologie, support 3D en sont des exemples récents.

3). Communauté très active. La chaîne irc et la liste de diffusion Postgis sont d’excellentes ressources. Le manuel de référence Postgis est également excellent. http://postgis.net/docs/manual-2.0/

4). Joue très bien avec d’autres applications, sous le parapluie OSGeo, telles que GeoServer et GDAL.

5). Les procédures stockées peuvent être écrites dans de nombreux langages, à l’exception du plpgsql par défaut, tel que Python ou R.

5). Postgres est un SGBDR complet, conforme aux normes, qui vise à restr proche des normes ANSI.

6) Prise en charge des fonctions de fenêtre et des requêtes récursives – pas en MySQL, mais dans SQL Server. Cela a rendu l’écriture de requêtes spatiales plus complexes plus propre.

Serveur SQL.

Je n’ai utilisé que la fonctionnalité spatiale de SQL Server 2008, et bon nombre des désagréments de cette version, à savoir l’absence de prise en charge des conversions d’un CRS à un autre, la nécessité d’append vos propres parameters aux index spatiaux, ont été résolus.

1). Comme les objects spatiaux dans SQL Server sont essentiellement des objects CLR, la syntaxe est inversée. Au lieu de ST_Area (geom), vous écrivez geom.STArea () et cela devient encore plus évident lorsque vous enchaînez des fonctions. La suppression du trait de soulignement dans les noms de fonctions est simplement une gêne mineure.

2). J’ai eu un certain nombre de polygones non valides qui ont été acceptés par SQL Server, et l’absence d’une fonction ST_MakeValid peut rendre cela un peu pénible.

3). Windows uniquement En général, les produits Microsoft (tels que ceux d’ESRI) sont conçus pour fonctionner très bien les uns avec les autres, mais n’ont pas toujours pour objective principal la conformité et l’interopérabilité des standards. Si vous utilisez une boutique Windows uniquement, ce n’est pas un problème.

MISE À JOUR : après avoir un peu joué avec SQL Server 2012, je peux dire qu’il a été amélioré de manière significative. Il y a maintenant une bonne fonction de validation de la géomésortinge, il y a un bon support pour le type de données Geography, y compris un object FULL GLOBE, qui permet de représenter des objects qui occupent plus d’un hémisphère. représentations d’arcs (et de cercles) entre autres choses. La transformation des coordonnées d’un CRS en un autre doit encore être effectuée dans des bibliothèques tierces, bien que cela ne soit pas un casse-tête dans la plupart des applications.

Je n’ai pas utilisé SQL Server avec des ensembles de données suffisamment importants pour comparer un sur un avec Postgis / MySQL, mais d’après ce que j’ai vu les fonctions se comportent correctement, et bien que n’étant pas aussi complet que Postgis, cela améliore considérablement les offres de MySQL .

Désolé pour une réponse si longue, j’espère que certaines des douleurs et de la joie que j’ai endurées au fil des ans pourraient aider quelqu’un.

PostGis définitivement. Voici pourquoi.

  1. Postgres est de loin supérieur à MySQL en termes de performances. Serveur est plus tolérant aux pannes, dispose d’outils prêtes à l’emploi pour l’équilibrage de la charge, la mise en cache et l’optimisation.
  2. PostGIS devient un standard dans les applications SIG.
  3. C’est gratuit.

Juste une note que MySQL a finalement ajouté dans la logique SIG appropriée.

http://dev.mysql.com/doc/refman/5.6/en/functions-for-testing-spatial-relations-between-geomesortingc-objects.html

Mais je ne peux pas commenter le coût ou la performance à ce stade

PostGIS est le meilleur, car il devient un standard dans les applications SIG de nos jours et PostGIS est gratuit. Il est de loin supérieur à MySQL en performance