NoSQL

Introducción a las bases de datos noSQL

El término noSQL se utiliza para referirse a los sistemas gestores de base de datos que difieren de los arquetipos tradicionales de base de datos (relacionales). Surgen de la necesidad de grandes compañías (Google, Amazon) de tener que tratar con enormes volúmenes datos de formas que las base de datos tradicionales no podrían, o al menos no pueden de manera eficiente y rápida.

Las principales diferencias entre las bases de datos noSQL y las relacionales son:
  • No utilizar SQL como lenguaje para realizar las consultas, esto podría intuirse por el nombre, pero en muchos casos se hace necesario aclararlo.
  • Los datos almacenados no requieren estructuras fijas (tablas) por lo tanto no soportan algunas acciones tipicas de SQL como JOIN.
  • No siempre garantizan la atomicidad, consistencia, aislamiento y durabilidad de la información. Esto en algunos casos está muy relacionado con el punto anterior.
  • A diferencia de las bases de datos relacionales, las bases de datos noSQL (en muchos casos) pueden escalarse en horizontal, esto implica poder tratar los datos por columnas en lugar de por filas.

Arquitectura

Frecuentemente los sistemas noSQL utilizan arquitectura distribuida. Además presentan redundancias en los datos, manteniéndolos en servidores diferentes mediante tablas hash distribuidas. Aunque esto parezca un error implica que el sistema pueda escalar en caso de necesidad, pudiendo añadir nuevos servidores sin tener que migrar todos los datos anteriores, además garantiza que en caso de fallo de un servidor el sistema pueda seguir funcionando.


Principales Sistemas noSQL

Cuando hablamos de sistemas noSQL hemos de tener en cuenta que unos sistemas no se parecen a otros, por lo que hablar de ellos de forma genérica se hace un poco complicado. Algunos de los principales sistemas son:

Bases de datos documentales:

En este caso el sistema esta formado por programas que se encargan de gestionar, almacenar y recuperar documentos, por lo que en lugar de las tradicionales tablas tenemos esta nueva entidad Documento.

MongoDB
El concepto de documento es algo abstracto, ya que cada sistema los implementa a su manera (XML y JSon son los dos más utilizados), cada documento contiene información sobre una tupla. La diferencia con las tablas es que los documentos son mucho menos rígidos, ya que para objetos similares (con esto me refiero a que se encontrarían en la misma tabla en una base de datos relacional) podemos tener dos documentos con diferentes atributos, algo imposible en tablas relacionales.

De estas bases de datos la más conocida es MongoDB.

Bases de datos clave/valor:

Apache Cassandra
En este tipo de sistema noSQL, cada elemento se identifica por una clave única, lo que disminuye los tiempos de recuperación aumentando la eficiencia de lectura y escritura.

En este caso no tenemos objetos. sino que tenemos un valor asociado a cada clave, de este modo los datos se tratan como una colección opaca, sin tener en cuenta el tipo de los dato como se hace ne las bases de datos relacionales.

Como base de datos clave/valor destacamos Cassandra.



Bases de datos en orientadas a objetos:

De forma similar a las documentales en estas bases  de datos tenemos objetos (similares a los utilizados en programación orientada a objetos.

De este modo facilita mucho la tarea de tratar los datos desde código. Ya que podrán tratarse los datos de contenidos en la base de datos como objetos creados en el código, reduciendo considerablemente los costes de desarrollo y facilitando la integración con con el programa (siempre que este se desarrolle en un lenguaje orientado a objetos.

De estos sitemas destacariamos ObjectDB, pensada para integrarla con Java.

No hay comentarios:

Publicar un comentario