Monday, December 05, 2016

PostGIS en la nuble

Hace tiempo que tenía apuntado investigar un poco sobre proveedores de servicios de bases de datos (DBaaS) PostgreSQL/PostGIS en la nube (o en el aire según cuño del filósofo Javier Echeverría Ezponda a quien reciéntemente tuvimos la oportunidad de disfrutar en el ciclo Diálogos mano a mano con el investigador de la Universidad Púbica de Navarra Humberto Bustince Sola).

Aparte del interés (necesidad) por aprender una solución de este tipo me serviría  para colgar juegos de datos de prueba para los alumnos de la asignatura de bases de datos geográficas (máster MUSIGT de la Universidad Pública de Navarra).

Mi experiencia previa con HEROKU había sido interesante pero se limitaba a la provisión de instancias de PostgreSQL, es decir, sin poder disfrutar de la extensión PostGIS al estar ésta última únicamente disponible en los planes (suscripciones) de producción, es decir, de pago, fuera del alcance de la prospección.

Llevo un tiempo identificando una serie de páginas que podrían ser interesantes entre las que cabe destacar la página de la wiki de OSGEO específicamente dedicada a este tema y que recoge las principales opciones existentes.

El primero de los dos proveedores que he revisado es Amazon RDS para PostgreSQL. Todo el tech appeal de Amazon en forma de una prueba gratuita de 12 meses (siempre que no se superen ciertos niveles de servicio) en la que poder probar este servicio y otros de la plataforma AWS... Como no me apetecía adquirir ningún compromiso, aunque éste fuese a 12 meses vista, con cierta pena, he declinado el ofrecimiento.
El siguiente proveedor que he estado consultando es aiven, cuyo lema your database in the cloud, es bastante clarificador de su enfoque y especialziación. Pinta muy bien, ofrece distintos servicios de bases de datos de los distintos paradigmas existentes, tales como PostgreSQL (incluidas las extensiones más populares, entre ellas PostGIS), Redis, InfluxDB, Apache Kafka, etc.., desplegados sobre distintos proveedores de servicios (Google, Azure, DigitalOcean, UpCloud y Amazon AWS).

En este caso no hay suscripción gratuita o de prueba pero sí un bono de 10$ de prueba que podríamos aplicar al plan más económico Hobbyist (1CPU, 1GB, 8GB de almacenamiento, con una tarifa rondando los 0.026 $/h, estimado mensual de 19$). Aunque para probar no piden "Visa", lo aparco.

Otro que también pinta muy bien es AcuGIS que por el momento pasa a engordar mi lista de tareas pendientes.

El último que voy a mencionar en este post y que he probado es QGIS Cloud. Así es, el nombre despista un poco, y la verdad que se podría decir que parece un poco oportunista...

QGIS Cloud

... y aun a riesgo de equivocarme yo diría que efectivamente lo es ya que no encuentro ninguna relación entre este proveedor y el proyecto QGIS. Dejando este detalle a un lado es una solución que funciona y he podido probar sin ningún problema.

El sistema ofrece un mecanismo para almacenar datos en la nube, así como para publicar mapas online que utilizan dichos datos (todos los datos de nuestros mapas que no sean servicios remotos deberemos subirlos al almacén PostGIS). La particularidad del sistema radica en el modo que se gestionan las operaciones, que no es de otra manera que a través de un plugin de QGIS (y entiendo que de ahí viene el nombre).

Una vez nos hayamos registrado en su página web y hayamos instalado el plugin en QGIS podremos subir nuestros mapas y datos mediante el plugin.

Plugin QGIS Cloud para QGIS
Como puede apreciarse en la imagen, una vez nos hemos autenticado podemos ver las BBDD que tenemos creadas, el espacio consumido, crear nuevas instancias de BD, subir datos, gestionar mapas, etc. El proceso de alta e instalación y uso es muy sencillo y está perfectamente explicado en el Quickstart. Mientras escribía este post he visto que hay un pequeño tutorial reciente en mappingGIS que explica lo mismo de manera más somera.

Actualmente se ofrecen dos planes Free y Pro. El plan Free permite la publicación ilimitada de mapas (públicos). En lo relativo a almacenamiento de datos: hasta 5 instancias de bases de datos PostGIS 2.0, con un espacio máximo total de 50MB y un número máximo de 10 conexiones concurrentes por base de datos. Lo cual, sobra decirlo, lo hace muy interesante para experimentar.

QGIS Cloud como DBaaS

Es posible, como sería mi caso en este momento, que no estemos interesados en publicar mapas y que lo único que nos interese es utilizar el servicio de bases de datos en la nube. Esto es perfectamente posible. Para ello basta con conocer los detalles de la conexión a nuestras bases de datos y utilizar la herramienta que deseemos tal y como se explica en las FAQ: PgAdmin, psql, QGIS... o cualquier software capaz de conectarse a un servidor PostgreSQL.

Los datos de conexión los podremos obtener del plugin, donde se muestra el nombre de la BD en el listado, que a su vez coincide con el nombre de usuario de la conexión. La contraseña la podremos ver en el tooltip que se muestra al posicionar el cursor sobre cada BD en el listado (algo incómodo pero no imposible). El host y puerto, los tenemos también en el tooltip y en las FAQ, así como un par de pantallazos de ejemplo para conectar desde QGIS y PgAdmin (debemos explicitar la instancia de BD en la conexión). En todos los casos es requerido el uso de SSL en la conexión.

Para terminar quiero comentar que no estoy en disposición de hacer valoraciones de calidad/nivel de servicio al no poder controlar todas las variables: limitaciones del plan gratuito, la velocidad de mi acceso a internet, etc., pero creo que para los fines que me proponía servirá. Espero que también para quien haya tenido a bien tragarse este ladrillo. ;)

No comments: