Migración a MongoDB 3

Se ha actualizado en el entorno de experimentación CloudLab la versión 3.0.0 de MongoDB.

mongo3

La migración a esta versión desde la 2.6 se realiza de manera automática, respetando las colecciones y configuración de estas (indices, campos georferenciados…). En caso de tener que migrar desde una versión previa, se debe, como paso intermedio la migración a la versión 2.6.

To upgrade an existing MongoDB deployment to 3.0, you must be running 2.6. If you’re running a version of MongoDB before 2.6, you must upgrade to 2.6 before upgrading to 3.0. See Upgrade MongoDB to 2.6 for the procedure to upgrade from 2.4 to 2.6. Once upgraded to MongoDB 2.6, you cannot downgrade to any version earlier than MongoDB 2.4.

El proceso de migración es tan sencillo como detener el servicio de MongoDB sustituir los binarios de la versión 2.6 por los de la 3.0 y volver a arrancar el servicio de MongoDB.

Las principales novedades de esta versión son:

  • Nueva API de motor de almacenamiento de MongoDB que permite optimizar la base de datos para diferentes arquitecturas de hardware y cargas de trabajo de aplicaciones.
  • MongoDB 3.0 multiplica el rendimiento entre siete y diez veces, ofrece escalabilidad vertical para las cargas de trabajo de escritura intensiva mediante  la recopilación y el bloqueo a nivel de documento. La compresión nativa reduce considerablemente los costes de almacenamiento hasta en un 80 %. Ahora, los conjuntos de réplicas pueden incluir hasta 50 miembros, lo que reduce la latencia al distribuir geográficamente los datos cerca de los usuarios.
  • Ampliación del marco de auditoría introducido en MongoDB 2.6 para incluir todas las operaciones de sistema y datos (DDL y DML) en la base de datos. Gracias a estas extensiones, ahora los administradores pueden crear y filtrar las trazas de auditoría de cualquier operación en MongoDB sin tener que recurrir a herramientas de terceros.
Migración a MongoDB 3

Soporte a MongoDB como Base Datos Histórica Sofia2

Hasta ahora el motor por defecto de la BDH era Hadoop (+HIVE+Impala). Esta funcionalidad permite que la BDH sea una instancia de Mongo dedicada, esto permite el despliegue de la Plataforma en organizaciones en los que el uso de Hadoop pueda no ser apropiado

Para configurar el paso de la BDTR a la BDH siendo esta última una instancia de MongoDB, hay que añadir las propiedades necesarias que indican la instalación y propiedades de conexión de la  BDH MongoDB. Estas propiedades se encuentran en el fichero database.properties del módulo process.

properties

Además el proceso debe activarse mediante la propiedad

rtdb2hdb.mongodb.enabled=true

Finalmente hay que indicar en que momento desea lanzarse el paso mediante una expresión cron del estilo:

rtdb2hbd.mongodb.cron=0 06 08 1/1 * ? *

Estas propiedades se encuentran en el fichero rtdb2hdb.properties ubicado en el módulo process.

El proceso es exactamente igual que en el caso de Hadoop, es decir, se configura para una determinada Ontología mediante la consola web de Sofia2. Para ello a la hora de crear/modificar una ontología debemos indicar si queremos que los datos sean almacenados en una base de datos histórica, mediante el combo que indica si los datos a pasar son anteriores a uno, dos o tres días. Además podemos agruparlos mediante un script de agregación que deberá dar de alta un administrador de sistema. Por el contrario podemos indicar si simplemente queremos eliminarnos de la BDTR sin pasar a la BDH.

configuracionconsola

Una vez configurado el paso a la BDH, un proceso que se ejecuta de acuerdo a una expresión cron, lanza un comando de exportación de Mongo que almacenará en un fichero temporal los datos que queremos pasar.

mongoexport –db <base_de_datos> -h <host> –port <port> -c <ontologia> -o “<path><nombre_fichero>.json.tmp” -q {‘contextData.timestamp’:{‘$lt’:{‘$date’:<fecha_configurada>}}}

Una vez realizado el export es necesario realizar un import de estos datos en la BDH, mediante el comando “mongoimport” de Mongo.

mongoimport –db <base_de_datos> –host <host> –port <port> –collection <ontologia>  –file “<path><nombre_fichero>.json.tmp”

Soporte a MongoDB como Base Datos Histórica Sofia2

Soporte creación de índices desde la consola

En la última versión de Sofia2 se ha incluido una nueva funcionalidad que permite a usuarios con ROL ADMINISTRADOR gestionar los índices de las ontologías a través de la Consola BDTR y BDH del menú de Herramientas .

A través de esta nueva funcionalidad se podrán crear, modificar o eliminar índices para una colección en modo nativo, es decir con la sintaxis de MongoDB.

Se podrán crear índices simples, compuestos y con opciones a través de utilizar la operación ensureIndex()

  • Índices simples (de un solo campo):

db.SensorTemperatura.ensureIndex( { “SensorTemperatura.identificador”: 1 } )

db.SensorTemperatura.ensureIndex( { “SensorTemperatura.medida”: -1 } )

  • Índices compuestos (varios campos):

db.SensorTemperatura.ensureIndex( { “SensorTemperatura.identificador”: 1,”SensorTemperatura.medida”:1 } )

  • Índices compuestos y con opciones:
 db.SensorTemperatura.ensureIndex( { "SensorTemperatura.identificador": 1,”SensorTemperatura.medida”:1 },{unique: true, sparse: true })

Para eliminar un índice, se hará uso de la operación dropIndex y como parámetro se deberá indicar el nombre del índice, sin comillas dobles, un ejemplo:

db.SensorTemperatura.dropIndex(SensorTemperatura.identificador_1);

Y finalmente para consultar los índices se hará uso de getIndexes() que nos retornará todos los índices para la ontología indicada.

db.SensorTemperatura.getIndexes();

Para aquellos que lo desconozcan, una ontología equivale a una colección en MongoDB y la estructura en la que se crean los índices es como la que se muestra en la imagen

Tanto al crear un índice como al eliminarlo en pantalla se mostrarán los índices que tiene la ontología tras realizar de esas operaciones

Soporte creación de índices desde la consola