mongoDB

Hablar de bases de datos implica pensar en SQL y el modelo de bases de datos relacional, sin embargo existen alternativas como los modelos no relacionales donde MongoDB destaca.

MongoDB (del inglés humongous, "enorme") es un sistema de base de datos NoSQL orientado a documentos de código abierto y escrito en C++, que en lugar de guardar los datos en tablas lo hace en estructuras de datos BSON (similar a JSON) con un esquema dinámico. Al ser un proyecto de código abierto, sus binarios están disponibles para los sistemas operativos Windows, GNU/Linux, OS X y Solaris y es usado en múltiples proyectos o implementaciones en empresas como MTV Network, Craigslist, BCI o Foursquare.

La razón de esto es que MongoDB, al estar escrito en C++, cuenta con una más que notoria capacidad para aprovechar los recursos de la máquina y, al estar licenciado bajo una licencia GNU AGPL 3.0, es posible adaptarlo a nuestras necesidades.

Características de MongoDB

Si tuviéramos que resumir a una la principal característica a destacar de MongoDB, sin duda esta sería la velocidad, que alcanza un balance perfecto entre rendimiento y funcionalidad gracias a su sistema de consulta de contenidos. Pero sus características principales no se limitan solo a esto, MongoDB cuenta, además, con otras que lo posicionan como el preferido de muchos desarrolladores.

Características principales:

Consultas ad hoc. Con MongoDb podemos realizar todo tipo de consultas. Podemos hacer búsqueda por campos, consultas de rangos y expresiones regulares. Además, estas consultas pueden devolver un campo específico del documento, pero también puede ser una función JavaScript definida por el usuario.

Indexación. El concepto de índices en MongoDB es similar al empleado en bases de datos relacionales, con la diferencia de que cualquier campo documentado puede ser indexado y añadir múltiples índices secundarios.

Replicación. Del mismo modo, la replicación es un proceso básico en la gestión de bases de datos. MongoDB soporta el tipo de replicación primario-secundario. De este modo, mientras podemos realizar consultas con el primario, el secundario actúa como réplica de datos en solo lectura a modo copia de seguridad con la particularidad de que los nodos secundarios tienen la habilidad de poder elegir un nuevo primario en caso de que el primario actual deje de responder.

Balanceo de carga. Resulta muy interesante cómo MongoDB puede escalar la carga de trabajo. MongoDB tiene la capacidad de ejecutarse de manera simultánea en múltiples servidores, ofreciendo un balanceo de carga o servicio de replicación de datos, de modo que podemos mantener el sistema funcionando en caso de un fallo del hardware.

Almacenamiento de archivos. Aprovechando la capacidad de MongoDB para el balanceo de carga y la replicación de datos, Mongo puede ser utilizado también como un sistema de archivos. Esta funcionalidad, llamada GridFS e incluida en la distribución oficial, permite manipular archivos y contenido.

Ejecución de JavaScript del lado del servidor. MongoDB tiene la capacidad de realizar consultas utilizando JavaScript, haciendo que estas sean enviadas directamente a la base de datos para ser ejecutadas.

Cómo funciona MongoDB

MongoDB es una base de datos orientada a documentos. Esto quiere decir que en lugar de guardar los datos en registros, guarda los datos en documentos. Estos documentos son almacenados en BSON, que es una representación binaria de JSON.

Esto representa una de las diferencias más importantes con respecto a las bases de datos relacionales. Y resulta que no es que no es necesario seguir un esquema. Los documentos de una misma colección - concepto similar a una tabla de una base de datos relacional -, pueden tener esquemas diferentes.

Imaginemos que tenemos una colección a la que llamamos Personas. Un documento podría almacenarse de la siguiente manera:

{
    Nombre: "Miguel",
    Apellidos: "Parada",
    Edad: 39,
    Aficiones: ["Música","Ciclismo","Baloncesto"],
    Amigos: [
        {
            Nombre:"Marie",
            Edad:35
        },
        {
            Nombre:"Elsa", 
            Edad:42
        }
    ]
}

Como se puede ver el documento es exactamente igual a lo que conocemos de un documento JSON.

Lo interesante viene cuando queremos almacenar en una misma colección un documento como este: { Nombre: "Roger Rabbit", Estudios: "Dibu y conejo", Amigos:102 } Tal como podemos ver, este no sigue el mismo esquema del primero, añadiendo algún campo nuevo que no existe en el documento anterior o incluso de un tipo distinto, pero no importa. Algo que resulta impensable en una base de datos relacional como SQL es posible en MongoDB.

MongoDB: Ventajas y desventajas

¿Sirve MongoDB para todo y todo? Antes de entrar a definir por qué usar MondoDB en tu proyecto, conviene revisar pros y contras. MongoDB es un recurso muy interesante para desarrolladores pero no es perfecto. Por ejemplo:

VENTAJAS

  • Validación de documentos
  • Motores de almacenamiento integrado
  • Menor tiempo de recuperación ante fallos

DESVENTAJAS

  • No es una solución adecuada para aplicaciones con transacciones complejas
  • No tiene un reemplazo para las soluciones de herencia
  • Aún es una tecnología joven
  • Por qué usar MongoDB

MongoDB es un proyecto en constante evolución, por lo que cada versión ofrece nuevas e interesantes mejoras. Como desarrollador, la principal razón para usar MongoDB reside en su velocidad y su capacidad para añadir en una misma colección registros con diferentes campos de manera mucho más flexible que una base de datos basada en un modelo relacional.

Al estar escrito en C++ es multiplataforma e instalarlo en Ubuntu o Windows es relativamente fácil. De hecho, cómo instalar MongoDB en Ubuntu es tan fácil como correr la instrucción sudo apt install -y mongodb desde el terminal, por lo que no hay excusa posible para no darle una oportunidad.

Desarrollo de software o Software personalizado

¿Por qué el software personalizado o desarrollo a la medida?

Por lo general los programas o software comercial disponible en el mercado no cuentan con las funcionalidades o características específicas que requieren las empresas, en esta caso es totalmente recomendable desarrollar un software a la medida.

Las empresas que han utilizado el servicio de desarrollo de software a la medida o software personalizado, saben que obtendrán un producto que cubrirá todas las necesidades requeridas en la empresa.

Sigue leyendo

Clonar todo un disco duro consola linux

Listas las unidades conectadas al sistema

df -h

El método anterior nos servirá para clonar una partición. Si lo que queremos es clonar todo un disco duro, el disco de salida tiene que ser del mismo tamaño o más grande que el disco de entrada. Clonaremos el disco /sdb en /sdc con este comando:

dd if=/dev/sdb of=/dev/sdc

Si queremos comprobar el estado de los discos tras la clonación, usaremos este otro comando:

fdisk -l /dev/sdb /dev/sdc

POESÍA: LA SUSTANCIA DE LA VIDA

Weir, P. (1989). La Sociedad de los Poetas Muertos [película]. Touchstone Pictures.

Sociedad de los poetas muertos

No leemos y escribimos porque sea tierno, escribimos y leemos poesía porque somos miembros de la humanidad, y la humanidad rebosa pasión, la medicina, leyes, administración, ingenierías son muy nobles y necesarias para sostener la vida, pero la poesía, belleza, romance, amor es por eso que vivimos.

Keating

Sigue leyendo

Cambiar fecha y hora en Ubuntu

Visualizar la fecha y hora:
Comando:

date                                                                                 

Si queremos cambiar la fecha y hora de nuestro sistema usaremos el mismo comando pero con el parámetro “–set” de la siguiente forma, no olvides los “”.

Comando:

date --set "2017-10-17 01:16"

Donde en primer lugar especificamos el año, seguido del numero del mes, el día del mes la hora y los minutos que queremos establecer.

Visualizar zona horaria:

Si deseamos ver en que zona horaria tenemos configurado nuestro servidor ejecutaremos el siguiente comando:

Comando:

cat /etc/timezone

La salida obtenida corresponde a la franja horaria de “Madrid”.

Cambiar zona horaria:

Si queremos cambiar la zona horaria ejecutamos el comando y seleccionamos el continente y la ciudad a la franja horaria a la que corresponda nuestra ubicación.

dpkg-reconfigure tzdata

How To Format USB Drive in Linux Command Line

Formatting a USB drive in Ubuntu using Terminal commands is much easier as formatting it in Windows systems. Some of the Ubuntu users are not familiar with terminal commands. This tutorial will help Ubuntu (Linux) users with the simple steps of USB flash drive formatting via command line.

Sigue leyendo