Skip to content

MongoDB. Repara tus bases de datos

14 septiembre 2014
tags:

MongoDB_Logo_Full

Cuando estamos trabajando con MongoDB y estamos realizando operaciones de manera continuada sobre una Base de Datos: crear colecciones, insertar documentos, eliminar documentos, eliminar colecciones… Puede que nuestras Bases de Datos lleguen a ocupar mucho más espacio en disco del que aparentemente deberían ocupar.

Personalmente, me he encontrado situaciones, en las que he estado haciendo pruebas con Bases de datos, en las cuales creaba varias colecciones, insertaba un montón de documentos, creaba índices, eliminaba documentos… y, por último, eliminaba todas las colecciones (y documentos) para dejar mi Base de datos limpia. En este punto observaba cómo la base de datos ocupaba un espacio excesivo en disco en comparación con los datos que tenía. Buscando el por qué de este comportamiento, estuve estudiando el modelo de almacenamiento en disco de MongoDB, para conocer cómo almacena realmente los documentos en el disco y encontré que, cuando una base de datos se “desmadra”, podemos ejecutar un comando para repararla.

Tenemos dos modos de hacerlo:

1. Reparar una única base de datos

Para ello, desde la consola de MongoDB y con nuestro mongod ejecutándose, lanzamos el siguiente comando:

> use myDb
> db.repairDatabase()

+Info: myDb es el nombre de la base de datos que vamos a querer reparar

2. Reparar todas las bases de datos

En este caso, debemos detener todos los procesos mongod que tengamos ejecutándose, y lanzar el siguiente comando desde nuestro Terminal:

mongod --repair

De este modo, MongoDB comenzará a reparar todas las Bases de Datos y mostrará la evolución del proceso en pantalla.

Espero que estos comandos os sean útiles y ya sabéis: cualquier mejora, sugerencia o crítica será bienvenida 😉

 Lecturas Recomendadas

Más Info

Anuncios

PIG. Filtrado en base al tamaño de cada tupla

20 enero 2014

Actualmente me estoy adentrando poco a poco en el mundo del BigData, con Hadoop y todo su ecosistema; especialmente mediante AWS y ElasticMapReduce.

El asunto es, que durante estas semanas he estado desarrollando unos scripts de PIG para analizar la gran cantidad de logs que generan las diferentes APIs REST que hemos desarrollado en mi trabajo. Estas APIs generan logs con la actividad que realizan los usuarios sobre ellas y esta información se analiza para obtener estadísticas y saber las invocaciones que realiza cada usuario y el uso general que se hace de cada API. (No hay información sensible 🙂 )

El formato en el que están almacenados los logs, ha ido variando conforme las APIs han ido creciendo y evolucionando, y por tanto, conviven diferentes versiones de entradas de logs.

Las diferentes versiones de las entradas de logs son casi idénticas entre sí; sólo varía la posición de los campos y la longitud de la entrada, es decir, el número de campos que tiene cada una. Un ejemplo de los logs de los que hablo podría ser el siguiente (La primera línea es meramente informativa, para poner nombre a los campos;  no se almacena):

Date | Id App | Id Num | User | IP | API Name | Method | ResponseCode | Timestamp
12:23:40,878 12-01-2014| myApp | 95 | developer | 10.0.51.67 | MiApi | POST | 201 | 1380536454505 |

Poco después se añadió a los logs información sobre el servicio que ha sido invocado dentro de cada API, por ejemplo:

Date | Id App | Id Num | User | IP | API Name | Service | Method | ResponseCode | Timestamp
12:23:40,878 12-01-2014| myApp | 95 | developer | 10.0.51.67 | MiApi | /test.json | POST | 201 | 1380536454505 |

Por tanto se hacía necesario poder diferenciar una tupla de otra y mi intención era lograrlo utilizando PIG.

Como sabéis, Apache PIG es una plataforma para analizar y procesar grandes cantidades de datos, que cuenta con su propio lenguaje conocido como PigLatin. Mi objetivo es diferenciar las tuplas directamente con PigLatin, sin recurrir al uso de UDF’s personalizadas.

Filtrar las tuplas en base a su tamaño es muy sencillo, pero me costó mucho lograrlo y buscando en internet no conseguía encontrar nada parecido que me pusiera tras la pista. Por eso lo publico aquí, por si a alguien más le puede servir de ayuda.

Leer más…

MongoDB Certification Program

3 noviembre 2013

MongoDB_University_Logo

A finales de Octubre de 2013, la gente responsable de MongoDB ha sacado un programa de certificación para que desarrolladores y DBAs, se certifiquen en su sistema de bases de datos no relacional.

Así es que ya sabéis, si trabajáis a diario con esta tecnología o simplemente queréis conocer más sobre ella, es una gran oportunidad tener acceso a una certificación oficial.

Aquí tenéis el enlace en el que os detallan cada aspecto de la certificación: https://www.mongodb.com/products/training/certification

Yo sí os recomendaría que os apuntarais a alguno de sus cursos gratuitos online, ya que son geniales para aprender MongoDB y de paso os sirve para preparaos la certificación. Aquí tenéis el enlace: https://university.mongodb.com/

También os recomiendo el libro:

A por ello!

Más Info:

Primeros pasos en MongoDB | Rekkeb’s Blog

iOS7 – Desactiva estas opciones si quieres ahorrar bateria

22 septiembre 2013
tags: ,

icon-ios7

Hay un par de opciones que se han añadido al nuevo iOS 7, que pueden resultar muy útiles y generar un experiencia de usuario muy satisfactoria, pero que a la vez y sin que nos demos cuenta, van a provocar un consumo considerable de batería.

Lo peor de esto es que nuestro dispositivo iOS consumirá la batería mucho más rápido que antes, pero nosotros no sabremos el porqué, por tanto, me parece interesante comentar estas opciones, para que, si queremos dejarlas habilitadas, al menos sepamos lo que hacemos. No es que estén ocultas ni mucho menos, pero puede que de primeras no reparemos en ellas. Vamos a ello:

1. Actualizaciones en Segundo Plano: Ajustes –> General –> Actualización en segundo plano

Esta opción sirve para que las aplicaciones puedan descargar contenidos y actualizaciones en segundo plano de manera que cuando vayamos a utilizarlas las encontremos siempre actualizadas.

Personalmente esta opción me parece totalmente prescindible y prefiero dejarla deshabilitada conservando un poco más la carga de la batería

2. Safari – Precarga del mejor resultado de búsqueda: Ajustes –> Safari –> Campo de Búsqueda Inteligente –> Precarga mejor resultado

Esta opción sirve para que cuando busquemos algo desde la barra de direcciones de Safari, automáticamente se cargue (en segundo plano) la página que Safari considera que se adecúa en mayor medida a nuestro criterio de búsqueda. De esta forma si navegamos hacia ese resultado, tendremos la página cargada “instantáneamente”.

Personalmente tampoco me interesa tener esta opción habilitada, ya que no me importa esperar unos segundos a que se termine de cargar la página, si de este modo puedo ahorrar un poco de batería.

3. Actualizaciones Automáticas: Ajustes –> iTunes Store y App Store –> Actualizaciones

Esta opción sirve para sincronizar de forma automática las actualizaciones de aplicaciones que hayamos descargado desde otro dispositivo iOS.

Yo prefiero dejarla deshabilitada y actualizar cuando considere oportuno y tenga conexión Wifi.

4. Reducir Movimiento: Ajustes –> General –> Accesibilidad –> Reducir movimiento

Esta opción sirve para darle mayor dinamismo al interfaz de usuario. Es el efecto que se conoce como Paralaje y que se aplica a la pantalla de inicio.

Personalmente me encanta este efecto, aunque si la batería es crítica es conveniente Habilitar esta opción. (Digo Habilitar, porque lo que habilitamos es Reducir Movimiento, provocando que se deshabilite el Paralaje)

Y esto es todo, ¿Conocéis alguna opción más que nos permita ahorrar batería?

MongoDB. Primeros pasos

2 junio 2013

logoMongoDB

En esta entrada vamos a ver aspectos muy básicos de configuración de MongoDB que nos aporten los conocimientos de base para poder empezar a crear aplicaciones mucho más complejas que utilicen esta tecnología de almacenamiento no relacional. Los puntos que veremos son:

  1. Introducción a MongoDB (Teórica pero ligera)
  2. Cómo instalar un servidor MongoDB en nuestro equipo local
  3. Probar la consola de MongoDB
  4. Crear nuestra primera Base de Datos y nuestra primera Colección
  5. Insertar documentos
  6. Consultar documentos
  7. Actualizar documentos
  8. Eliminar documentos
  9. Lecturas recomendadas

Empecemos 🙂

Leer más…

Certificación de SpringSource – Consejos de preparación

27 abril 2013

SpringLogo

Hace ya un año que escribí esta entrada en la que comentaba mis intenciones de prepararme el examen de certificación de Spring. Por fin he podido presentarme al examen y obtener la certificación 🙂 y quería aprovechar esta entrada para aportar mi propia visión sobre todo el proceso y algunos consejos prácticos por si os animáis a hacer el examen.

Lo primero de todo; para hacer el examen es necesario que realicéis el curso de Spring. La empresa encargada de impartir estos cursos en España es Extrema Sistemas, y la verdad es que los tíos son unos hachas, saben un montón e imparten las clases genial.

Una vez superado el curso de 4 días (teoría y práctica), VMWare no te permite presentarte al examen hasta que haya pasado un mes desde la finalización del curso, para que, durante ese mes te prepares todo el temario. Pasado ese mes ya puedes presentarte al examen. Dentro de las tasas que pagas con el curso, va incluído tu Voucher o derecho a examen, que caduca al Año de haberlo obtenido. Si tuvieras que repetir el examen o se hubiera cumplido el año, sería necesario comprar un nuevo Voucher que cuesta unos 150€ para volver a optar al derecho a examen.

Leer más…

Aprende MongoDB de la mano de sus creadores

13 abril 2013

10gen_ed_logo

La gente de 10Gen, creadores de MongoDB, está impartiendo cursos gratuitos online en los que enseñan las mejores técnicas para trabajar con su entorno de bases de datos NoSQL.

Los cursos son no presenciales y cada semana van introduciendo conceptos nuevos, de forma que cada semana podamos ir introduciéndonos con mayor profundidad en las tripas de MongoDB. El curso está dividido en tres ámbitos diferentes:

  1. MongoDB for Java Developers
  2. MongoDB for Python Developers
  3. MongoDB for DBAs

Yo he tenido la oportunidad de realizar el curso para desarrolladores Java que impartieron en Febrero de 2013 (el cual acaba de finalizar esta misma semana) y os aseguro que es impresionante, se aprende un montón y es realmente entretenido.

En Mayo de 2013 van a impartir nuevamente el curso y por eso os lo cuento aquí, para que, si queréis aprender MongoDB, os apuntéis sin dudarlo.

Un poco de información sobre cómo se desarrolla el curso

Como os he comentado, el curso es no presencial, por tanto podéis hacerlo desde casa con un ordenador (Mac, Linux o Windows) y al ritmo que vosotros prefiráis.

El curso tiene una duración de 7 semanas. Las primeras 6 semanas son de teoría y práctica, de forma que cada semana irán publicando una serie de vídeos (en inglés) en la que os explicarán diferentes conceptos de MongoDB. Al finalizar cada semana hay que entregar unos ejercicios sobre lo que os han explicado durante esa semana. Los ejercicios están disponibles desde que comienza la semana, por tanto podéis ir haciéndolos cuando queráis, no es necesario esperar al fin de semana.

La última semana, la semana 7, está dedicada a realizar un examen que consiste en 10 preguntas (teóricas y prácticas) sobre todo lo que se ha visto en el curso. Las 10 preguntas las publican el Lunes y tenéis hasta el Lunes siguiente para completarlas.

Al finalizar el curso, vuestra nota estará compuesta por:

  • 50% el resultado que hayáis obtenido en la entrega de ejercicios semanales
  • 50% la calificación que hayáis obtenido en el examen.

Si superáis con más de un 65% el curso, obtendréis un certificado de parte de la gente de 10Gen.

Yo os recomiendo encarecidamente que asistáis al curso, a mi personalmente me ha encantado.

Más información del curso

Para consultar toda la información disponible sobre el curso de MongoDB y daros de alta, os dejo aquí el siguiente enlace:

https://education.10gen.com/courses/10gen/M101J/2013_May/about

Cualquier duda que os surja, no dudéis en consultármela. 😉

Libros interesantes para aprender MongoDB

Aquí os dejo una lista de libros que os ayudarán a aprender más sobre Mongo y a completar los conocimientos que iréis obteniendo durante el curso. Estos libros son los que la propia gente de 10Gen recomienda. Podéis consultar el listado completo en: http://www.10gen.com/books/

Yo personalmente he ido utilizando el libro:


MongoDB The Definitive Guide