Durante los últimos meses, he estado usando el servidor de teselas de openstreetmap en GitHub ( enlace aquí ) para renderizar teselas de OSM desde un contenedor Docker. El servidor de teselas utiliza una base de datos PostgreSQL para almacenar sus datos. Desde investigar más sobre la creación de mis propios mosaicos OSM y mi propio servidor de mosaicos, muchos tutoriales mencionan el uso de una base de datos PostgreSQL.
¿Por qué es esto? ¿Por qué no usar una base de datos SQL como MySQL en su lugar? ¿Qué se puede ganar / se gana al usar PostgreSQL en lugar de una base de datos SQL diferente para un conjunto de datos como los datos de openstreetmap?
EDITAR: Pregunta editada, para indicar que estoy comparando Postgres con otras bases de datos SQL.
Originalmente, MySQL se usaba para la base de datos interna principal de OSM que almacena datos reales de OSM y se consulta y modifica a través de la API de OSM. Sin embargo, para la representación de mosaicos y otros fines, nunca se utiliza el formato bruto interno; en su lugar, los datos OSM exportados como XML comprimido o en un formato PBF binario más compacto se importan a un esquema de base de datos más adecuado para su posterior procesamiento.
Por lo general, esto se hace con la herramienta "imposm" o "osm2pgsql", con la combinación de PostgreSQL/PostGIS como el RDBMS de elección, ya que proporciona el conjunto de características GIS más potente, al menos en el mundo libre y de código abierto.
La base de datos principal de OSM es una excepción, ya que cualquier consulta en ella siempre recupera datos solo para un área rectangular, por lo que en realidad no se necesitan extensiones GIS, en este caso es suficiente tener las coordenadas almacenadas como datos numéricos simples. Eventualmente, se decidió cambiar eso también a PostgreSQL, para reducir la cantidad de componentes diferentes para mantener en la configuración del sitio openstreetmap.org.
En teoría, también podría usar otros RDBMS con soporte GIS, por ejemplo, la variante SpatiaLite de SQLite o MariaDB/MySQL, pero en comparación con la configuración de PostgreSQL/PostGIS, tienen sus desventajas:
Por ejemplo, SpatiaLite solo es bueno siempre que solo haya un subproceso que acceda a los datos, con acceso concurrente no se escala bien en absoluto.
Y MariaDB y MySQL realmente solo implementan más o menos el mínimo indispensable de las especificaciones OpenGIS SQL, e incluso eso solo se materializó en los últimos años. En cuanto a las características, ambos todavía están más de una década detrás de PostGIS al menos.
Descargo de responsabilidad: incluso yo, aunque trabajo para MariaDB Corp y he trabajado antes para MySQL AB, en total durante más de una década, siempre he recomendado usar PostGIS sobre MariaDB o MySQL para aplicaciones GIS a menos que alguien esté vinculado a MariaDB o MySQL por otras razones. ya.