Curso Base de Datos NoSQL MongoDB con PHP y Java
MongoDB · PHP · Java · Bases de Datos Documentales

Máxima Expresión de Libertad

Almacenes de Datos No Relacionales · Bases de Datos Documentales

Curso Almacén de Datos NoSQL MongoDB.
MongoDB desde PHP y Java en Debian GNU/Linux.

© Carlos D. González - Update: Nov - 2017
Contacto: usabilidadweb @ usabilidadweb.com.ar

El término NOSQL fue acuñado a principios de 1999 por un empleado de Rackspace, Eric Evans, cuando Johan Oskarsson de Last.fm quiso organizar un evento para discutir bases de datos distribuidas de código abierto. El nombre intenta describir el surgimiento de un número creciente de bases de datos no relacionales y distribuidas que no suelen proveer garantias ACID. El término ACID hace referencia a un conjunto de características necesarias para que una serie de instrucciones puedan ser consideradas como una transacción. Estos sistemas responden a las necesidades de escalabilidad horizontal que tienen cada vez más empresas. [Wikipedia]

NoSQL: el movimiento en contra de las bases de datos

Una reunión en San Francisco fue la inauguración de la comunidad de NoSQL, un grupo de personas que comparten la idea de destronar la tiranía de las bases de datos relaciones, costosas y lentas, en favor de una alternativa mucho más eficiente y barata para manipular datos. Las bases de datos relacionales nos ofrecen demasiado. Nos fuerzan a adaptar nuestros objetos para adaptarlos a una RDBMS (sistema de gestión de bases de datos relacional), dice Jon Travis, uno de los principales ingenieros en SpringSource, y uno de los 10 presentadores en la reunión de NoSQL. Las alternativas basadas en NoSQL te ofrecen sólo lo que necesitás, dice Travis. [Referencias: dosideas.com]

Los primeros precursores son desarrolladores Web y Java, muchos de los cuales aprendieron a llevar adelante sus iniciativas (ajustadas en presupuesto) sin usar Oracle. Para esto construyeron sus propias soluciones para almacenar datos (emulando lo que hicieron Google y Amazon), y luego las publicaron como código abierto. Hoy estas soluciones gestionan terabytes e incluso petabytes de datos para la Web 2.0, y ya no es factible volver atrás, por motivos técnicos, económicos e incluso ideológicos.

Facebook creó su almacen de datos Cassandra para soportar una nueva búsqueda en su sitio web, en vez de usar su base de datos MySQL existente. De acuerdo a la presentación del ingeniero de Facebook Avinash Lakshman, Casandra puede escribir hasta 50GB de datos en disco en tan sólo 0.12 milisegundos, más de 2500 veces más rápido que MySQL.

¿Y qué es NoSQL? (técnicamente hablando)

Los nombres de los proyectos son tan diversos como extraños: Hadoop, Voldemort, Dynomite, y otros. Pero suelen estar unificados por algunos puntos en común, incluyendo:

No llamarlos bases de datos. Werner Vogels, CTO de Amazon, se refiere a su sistema Dynamo como un almacenamiento de clave-valor de alta disponibilidad. Google llama a su BigTable, otro de los modelos para muchos simpatizantes de NoSQL, un sistema de almacenamiento distribuido para gestionar datos estructurados.

Pueden manejar enormes cantidades de datos. Hypertable, una implementación de código abierto basada en BigTable, se usa dentro del motor de búsqueda Zvents para escribir 1000 millones de celdas de datos por día, según cuenta el ingeniero Doug Judd en su presentación. A su vez, BigTable, en conjunto con su tecnología hermana MapReduce, procesa hasta 20 petabytes de datos por día.

Superan los cuellos de botella de rendimiento. Al no tener que realizar la traducción de datos hacia un formato amigable para SQL, las arquitecturas NoSQL son mucho más rápidas. SQL es un enfoque extraño para el código procedural, y casi todo el código es procedural, dice Curt Monash, un analista independiente de bases de datos y blogger. El costo de mapear los datos a SQL puede valer la pena para los casos en que estos datos tengan que manipularse extensivamente... pero cuando la estructura de la base de datos es muy simple, SQL no parece ayudar.

[Comentario de un usuario de barrapunto.com] Google no usa bases de datos relacionales. La universidad (o mejor dicho, muchas universidades) están obsesionadas con adorar y hacer reverencia a Oracle. Recientemente hablé con un profesional a cargo de un sistema que recogía datos de un acelerador de partículas. Se quejaba de que con MySQL (una de las BD relacionales más rápidas) no podía seguir metiendo datos y explotándolos para hacer informes u operaciones estadísticas. En ese caso, lo mejor es utilizar otro tipo de BD, primero porque la información que guardaba no era relacional, y segundo porque hay productos más rápidos tipo clave-valor o map-reduce.

[Entrada de barrapunto.com] Ryan King es ingeniero de Twitter y le dijo al blog MyNoSQL que están planeando cambiar su bases de datos en MySQL por Cassandra debido a la escalabilidad y a la gran comunidad de desarrolladores. Actualmente Twitter funciona en un cluster de servidores MySQL con un sistema de cache que cada vez es menos efectivo debido a su crecimiento. Cassandra fue desarrollado en un principio por Facebook y es un repositorio hecho en Java, la tecnología es similar a la ofrecida por otras bases de datos NoSQL. Otro que esta dejando las bases de datos MySQL es Digg que también estará migrando a Cassandra.

Las bases de datos NoSQL (Not Only SQL, no supone que SQL esté muerto o no deba usarse, sino que hay soluciones mejores) suponen relajar muchas de las limitaciones inherentes a las bases de datos convencionales y a la forma de trabajar con ellas. Colecciones de documentos con campos definidos de manera laxa, en lugar de tablas con filas y columnas, que permiten análisis mucho más rápidos y eficientes y, sobre todo, no limitados a la estructura convencional. La idea es almacenar datos de manera masiva, lo que responde muy bien a la enorme riqueza de datos que genera el mundo actual, y analizarlos sin seguir necesariamente unos estándares que no necesariamente se adaptan a ellos. Donde las bases de datos relacionales resultan costosas y lentas, la alternativa NoSQL resulta mucho más eficiente y barata para manipular datos sin tener necesariamente que adaptarlos a una estructura rígida. En realidad, un sistema de este tipo no es siquiera una base de datos entendida como tal, sino un sistema de almacenamiento distribuido para gestionar datos dotados de una cierta estructura, estructura que además puede ser enormemente flexible. [Fuente: enriquedans.com]

Desarollo del Curso MongoDB, PHP, Java

La introducción multicultural, pretende conectar a distintas fuentes de opinión y así poder tomar conocimiento en forma rápida de una de las tecnologías más interesantes, capaz de destronar la supremacía por décadas de las bases de datos relacionales.

El curso MongoDB es un ámbito alternativo, de investigación, de descubrimientos, de máxima libertad, donde quienes puedan codearse con lo mencionado estarán a gusto. Los colosales volúmenes de datos que controla la Web 2.0, que son la puerta de entrada a fabulosos negocios, son ámbitos poco propicios para las bases de datos relacionales.

Algunas Características de MongoDB

MongoDB es una solución escalable y de alto rendimiento, es una base de datos NoSQL de código abierto, escrita en C++:

MongoDB es un sistema de base de datos multiplataforma orientado a documentos, de esquema libre. Esto significa que cada entrada o registro puede tener un esquema de datos diferente, con atributos o columnas que no tienen por qué repetirse de un registro a otro. Está escrito en C++, lo que le confiere cierta cercanía al bare metal, o recursos de hardware de la máquina, de modo que es bastante rápido a la hora de ejecutar sus tareas. Está licenciado como GNU AGPL 3.0, de modo que se trata de un software de licencia libre. Funciona en sistemas operativos Windows, Linux, OS X y Solaris.

Las características más destacadas de MongoDB son su velocidad y su rico pero sencillo sistema de consulta de los contenidos de la base de datos. Se podría decir que alcanza un balance perfecto entre rendimiento y funcionalidad, incorporando muchos de los tipos de consulta que utilizaríamos en nuestro sistema relacional preferido, pero sin sacrificar en rendimiento.

MongoDB permite utilizar funciones Map y Reduce escritas en Javascript para seleccionar los atributos que nos interesan de los datos, y agregarlos (unificarlos, simplificarlos), etc..

La meta de MongoDB es unir la brecha entre los almacenamientos clave-valor, los cuales son rápidos y escalables, y los motores relacionales tradicionales, los cuales proveen de consultas ricas y funcionalidades avanzadas. El motor está designado para resolver problemas que no tienen una solución fácil mediante motores relacionales, como por ejemplo bases de datos distribuidas.

La base de datos es orientada a documentos, de modo que trabaja de una forma diferente a los DBMS relacionales. MongoDB maneja colecciones de documentos similares a JSON. Esto permite a muchas aplicaciones modelar los datos de una manera más natural, siendo posible anidar los datos en jerarquías complejas y que estos sigan siendo consultables e indizables.

  1. Están basadas en código abierto
  2. Soportan la escritura de un gran volumen de datos simultáneamente
  3. Orientada al almacenamiento de Documentos
  4. Auto-Sharding, escalado horizontal sin compromiso de la funcionalidad
  5. Puede trabajar con las siguientes tecnologías: C, C++, Erlang, Haskell, Java, Javascript, Perl, PHP, Python, Ruby, etc..

Los conceptos teóricos iniciales dan paso al proceso de instalación y puesta en marcha de MongoDB, en este caso se hará sobre una plataforma Debian GNU/Linux, que además de sus cualidades operativas, nos propone un escenario de máxima libertad.

I. Inicialmente el trabajo estará centrado en la interacción desde una consola Linux contra la base de datos, alli podremos comprender la forma de operación de éste sistema de almacenamiento, por supuesto, no usaremos el lenguaje SQL.

II. Cuando tengamos una idea interesante sobre su funcionamiento, la segunda etapa estará centrada en la instalación de diversos software y su configuración para poder llevar la operación contra el sistema de almacenamiento desde PHP.

III. Una tercera etapa, es la operación contra MongoDB desde Java, también en un ambiente Linux. Además de las consideraciones teóricas, se desarrollarán dos proyectos simples para poder apreciar el funcionamiento conjunto de ambas tecnologías.

Correlatividades del Curso

La puerta de entrada a todos los cursos son los Estándares Web HTML 5 y CSS 3, luego se avanza sobre el lenguaje de servidor PHP, SQL y la base de Datos Relacional MySQL. A continuación se está en condiciones de abordar el Sistema de Almacenamiento MongoDB (la etapa I) y luego MongoDB desde el lenguaje PHP.

Para abordar los proyectos que incluyen a MongoDB y el lenguaje Java es necesario estudiar previamente Java.




Página del Autor de Usabilidad web |

Estándares Web, Bases de Datos, Web Semántica
Desarrollo de Software en la Nube
Desarrollo de software en C++, JAVA y PYTHON
Consultor independiente: Usabilidad, AI, y Estándares web W3C
Cursos en Buenos Aires, Argentina
http://www.usabilidadweb.com.ar/

Red de Formación Continua On Line de usabilidadweb.com.ar (1994 - 2012)
w3codigo.com.ar/