Bases de datos NoSQL, MongoDB y GIS

Vamos a empezar por el principio: ¿Qué es mongoDB?

MongoDB es una base de datos NoSQL orientada  a documentos, desarrollada con código abierto.

¿Qué significa que es «NoSQL»?

Significa que en lugar de guardar los datos en tablas como se hace en las bases de datos relacionales, MongoDB guarda estructuras de datos en documentos tipo JSON con un esquema dinámico (BSON), haciendo que la integración de los datos en ciertas aplicaciones sea más fácil y rápida.

En la imagen inferior podemos ver como MongoDB se encuentra en la zona óptima, en la que la velocidad y la escalabilidad son altas, así como también es el número de objetos de la base de datos. Por contra en una base de datos relacional (RDBMS) tanto la escalabilidad como la velocidad se ven penalizados ante un número elevado de elementos en la base de datos.

MongoDB y GIS

El desarrollo de MongoDB empezó en octubre de 2007 por la compañía de software 10gen. Ahora MongoDB es una base de datos lista para la producción de uso y con muchas características.

Una de las características principales que es es un base datos con un modelo de datos diferente, ya que está «orientada a documentos» con el esquema de un JSON como almacenamiento.

JSON

¿Qué ventajas tiene la representación de nuestros datos utilizando un formato JSON?

  • JSON presenta un framework flexible y conciso tanto para consultas,como para almacenar registros.
  • La sintaxis JSON es similar a la de otras estructuras de datos utilizados en muchos lenguajes de programación y es por tanto, familiar para los desarrolladores.
  • JSON es independiente del lenguaje de programación que se utilice.

¿Que tipos de datos puede almacenar un JSON?

6 tipos de datos:

  • cadenas
  • números
  • textos boolenaos (verdadero/falso)
  • nulos
  • arrays
  • objetos/documentos

Estructura:

¿Cómo se realiza una consulta en MongoDB?

Esta estructura de JSON presenta ventajas de rendimiento al hacer Joins y transacciones ya que es una operación más rápida y limpia que realizar la misma consulta en SQL.

En una base de datos NoSQL no hay consultas SQL de tipo SELECT * FROM WHERE.

Las consultas se hacen pasando objetos JSON como parámetro. Por ejemplo:

La consulta anterior buscará todos los clientes cuyo nombre sea David.

MongoDB viene de serie con una consola desde la que podemos ejecutar los distintos comandos.

¿Quien usa MongoDB?

La lista de organizaciones que utiliza MongoDB es impresionante. Desde Foursquare y LinkedIn o empresas de telecomunicaciones como Orange y Teléfonica. Empresas como Cisco, Bosch o plataformas de formación como Codecademy. Otras son eBayExpediaForbes, IBM, Windows AzureMcAfee o periódicos como The Guardian, Le Figaro, The NewYork Times, etc.

Incluso el CERN (Organización Europea para la Investigación Nuclear) utiliza MongoDB para los grandes volúmenes de datos que genera el acelerador de partículas.

Está disponible para los sistemas operativos Windows, Linux, OS X y Solaris.

MongoDB o PostGIS

Ya hemos visto todas las bondades de MongoDB. Sin embargo en el sector que nos interesa, que es el del GIS:

 ¿Es realmente MongoDB una alternativa a otras base de datos espaciales relacionales, como PostGIS?

MongoDB se está utilizando en aplicaciones web de alto rendimiento. PostGIS se utiliza principalmente en proyectos gubernamentales o empresariales.

MongoDB destaca en la gestión de datos geoespaciales de gran volumen (big data). Es por lo tanto una solución a un problema real, la gestión de grandes volúmenes de datos. Este sistema responde también a las necesidades de escalabilidad horizontal que tienen cada vez más empresas.

En cuanto a las funcionalidades geométricas, MongoDB soporta algunas funcionalidades geométricas por lo que es una buena opción para gestionar datos geográficos sencillos. PostGIS tiene una capacidad de análisis espacial mucho más sofisticada, es un autentico sistema GIS.

Por otra parte MongoDB utiliza índices B-Tree y PostGIS índices R-Tree. Un B-tree no puede ser utilizado de manera eficiente para indexar polígonos.

Puedes ver en esta pregunta del foro gis.stackexchange.com (Best GIS system for high performance web application – PostGIS vs MongoDB) la recomendación del propio Paul Ramsey, fundador de PostGIS.

Una presentación muy interesante en la que se explica porqué elegir MongoDB en lugar de una base de datos relacional y cómo solucionar el problema de la indexación espacial: Why We Chose MongoDB to Put Big Data ‘On the Map’

Por último mencionar que es algo complicado aprender a gestionar estas bases de datos NoSQL.

MongoDB en aplicaciones webmapping

No obstante como esta base de datos se está extendiendo rápidamente, las aplicaciones que utilizan bases de datos para alimentarse (servidores web) están incorporando ya la carga de datos desde mongo. La  versión 4.1 de OpenGeo Suite también soporta la importación da capas almacenadas en MongoDB. Más info aquí

Mapping #WorldCup with OpenGeo Suite and MongoDB. http://boundlessgeo.com/2014/06/mapping-worldcup-opengeo-suite-mongodb/

 

Aprender MongoDB

MongoDB university ofrece cursos gratuitos para realizar los siguientes cursos online:

  • MongoDB para desarrolladores Java
  • MongoDB para desarrolladores con Node.js
  • MongoDB para desarrolladores Python
  • MongoDB para administradores de bases de datos.

Más información:

Los comentarios están cerrados.