«

»

may
05
2012

Bases de datos NoSQL

NoSQL: Not Only SQL, de ahí su nombre. Pero no creo que sea muy apropiado porque no se dónde colocar eso de “No sólo SQL” cuando lo correcto sería “Sólo una parte de SQL” una vez vista la funcionalidad que ofrece.

Un subconjunto de bases de datos que no es nuevo pero que se está poniendo de moda en los últimos años por se el soporte de los gigantes en internet.

Sus principales características son:

  • No tienen schemas: No diseñas tus tablas ni su estructura de antemano.
  • No permiten JOINs: Las consultas SQL sólo sobre un tabla.
  • No intentan garantizar ACID (Atomicidad, Consistencia, Isolation (aislamiento) y Durabilidad que hace que operaciones concurrentes se realicen como si fueran en serie): Dependiendo del nodo al que te conectes puedes estar viendo unos datos actualizados y otros no en el momento actual.
  • Escalan horizontalmente: Se agregan más nodos a un sistema, no se aumenta la capacidad del nodo.

Teorema de Brewer:

“Es imposible para un sistema computacional distribuido ofrecer simultáneamente las tres garantías CAP ”:

  • Consistencia  – todos los nodos ven los mismos datos al mismo tiempo
  • Disponibilidad (Availability)  – garantiza que cada petición recibe una respuesta acerca de si tuvo éxito o no
  • Tolerancia a la partición (Partition) – el sistema continua funcionando a pesar de la pérdida de mensajes del nodo.

Este es el momento de pensar se estamos dispuestos a renunciar a la disponibilidad o a la consistencia para permitir crecer a nuestros datos sin limitaciones.

Para una aplicación empresarial tradicional es evidente que seguimos utilizando una base de datos relacional ya que la consistencia de datos es innegociable (imaginemos una aplicación contable con datos inconsistentes …) y para aplicaciones web vemos que también se usan en productos en explotación prefabricados como WordPress, Joomla, Opencms, Wikimedia, etc.

Si por el contrario tenemos algunos de estos casos:

  • Indexación de un gran número de documentos
  • Servir páginas en sites de mucho tráfico
  • Envío de datos de streaming
  • Uso intensivo de escritura/lectura
  • Un volumen de datos que crece superando los TB
  • Cambios continuos en el esquema

entonces debemos considerar la solución NoSQL como soporte para nuestros datos.

Toda la vida tratando de normalizar correctamente las bases de datos, creando relaciones y creyendo en la consistencia de datos y ahora toca cambiar el chip para abordar el diseño de bases de datos con otras necesidades.

El concepto NoSQL no es nuevo y seguramente no tengas ningún proyecto ahora mismo que requiera de su uso (puede que nunca te haga falta) así que nuestra experiencia en bases de datos relacionales siguen sirviendo. Ahora lo que tendremos que saber es cuándo conviene pasarnos al otro lado.

Neo, toma la píldora roja para tomar conciencia de la realidad o la azul para olvidar lo que has leido y quedarte con los RDBMS.

Posts relacionados:

Enlace permanente a este artículo: http://blog.jromay.es/2012/05/05/bases-de-datos-nosql/

Deja un comentario

Tu email nunca se publicará.


9 − dos =

Puedes utilizar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Images hosting provided by ImageShack Via ImageShack Migration plugin