You are on page 1of 8

14/5/2015

QuesNoSQL?Codecriticon

CODECRITICON
UN BLOG PARA PROGRAMADORES DECANTADOS

Qu es NoSQL?
POR ANTONIO

16 NOVIEMBRE, 2011 - 00:25

BASE DE DATOS, NOSQL

21

FLARES

Durante los ltimos aos las bases de datos relacionales han dado soporte a la gran mayora de las
aplicaciones. Con los aos se han ido mejorando, normalizandolas en todo lo posible, escalandolas segn
crece la demanda y utilizando sistemas de persistencia. Pero ltimamente, con la aparicin de grandes
aplicaciones online, como Facebook, Twitter o LinkedIn, se plantea problemas de escalabilidad y rendimientos
de las bases de datos relacionales con miles de usuarios concurrentes y con millones de consultas diarias,
entonces surge el termino NoSQL, pero qu quiere decir?.
Cuando hablamos de NoSQL no nos referimos nicamente a un tipo de bases de datos sino a diferentes
soluciones dadas para almacenar datos cuando las bases de datos relacionales nos generan problemas. Las
bases de datos NoSQL son sistemas de almacenamiento de informacin que no cumplen con el esquema
entidad-relacin, no imponen una estructura de datos en forma de tablas y relaciones entre ellas , en ese
sentido son ms flexibles, ya que suelen permitir almacenar informacin en otros formatos como clave-valor
(similar a tablas Hash), Mapeo de Columnas, Documentos o Grafos.
Hasta ahora los problemas de rendimiento en estas aplicaciones se han intentado solucionar mediante
escalabilidad vertical, esto es, aadir ms recursos a un solo nodo en particular dentro de un sistema, tal como
el aadir memoria o un disco duro ms rpido a un servidor. Entonces se pens que la solucin puede ser la
escalabilidad horizontal (agregar ms nodos a un sistema), pero las actuales bases de datos relacionales no se
adaptan del todo correctamente a este modelo.
Adems de la carencia de un esquema predeterminado, la principal caracterstica de las bases de datos NoSQL
es que estn pensadas para manipular enormes cantidades de informacin de manera muy rpida. Para ello
suelen almacenar toda la informacin que pueden en memoria (utilizando el disco como una mera
herramienta de persistencia), y estn preparadas para escalar horizontalmente sin perder rendimiento. Suelen
funcionar bastante bien en hardware de bajo coste, y permiten el escalado horizontal aadiendo nuevas
mquinas en caliente (sin necesidad de reinicio del sistema).
Las bases de datos NoSQL parten de la base en la que las tablas no existen como tal, sino que la informacin
se almacena de forma distinta, generalmente como clave-valor, como una tabla en la que las columnas son
dinmicas, pueden cambiar sin perder la agrupacin de la informacin, as es que puedo tener Personas con
mas atributos que otras, puedo cambiar la estructura de mi informacin dinmicamente sin tener que redisear todo de nuevo.
De entre todas las implementaciones de bases de datos NoSQL, hay muchas que no utilizan el lenguaje de
http://codecriticon.com/queesnosql/

1/8

14/5/2015

QuesNoSQL?Codecriticon

consultas SQL (por ejemplo, MongoDB usa JSON), pero hay algunas que siguen usndolo, como por ejemplo
BigTable (GQL), que lo ha transformado manteniendo su estructura bsica.

Caractersticas
Consistencia Eventual: No se implementan mecanismos rgidos de consistencia como los presentes en las
bases de datos relacionales, donde la confirmacin de un cambio implica una comunicacin del mismo a
todos los nodos que lo repliquen. Esta flexibilidad hace que la consistencia se d, eventualmente, cuando
no se hayan modificado los datos durante un periodo de tiempo. Esto se conoce tambin como BASE
(Basically Available Soft-state Eventual Consistency, o coherencia eventual flexible bsicamente disponible).
Estructura distribuida: Generalmente se distribuyen los datos mediante mecanismos de tablas de hash
distribuidas.
Escalabilidad horizontal: Consite en la posibilidad de aumentar el rendimiento del sistema simplemente
aadiendo ms nodos, sin necesidad en muchos casos de realizar ninguna otra operacin ms que indicar
al sistema cules son los nodos disponibles. Muchos sistemas NoSQL permiten utilizar consultas del tipo
Map-Reduce, las cuales pueden ejecutarse en todos los nodos a la vez (cada uno operando sobre una
porcin de los datos) y reunir luego los resultados antes de devolverlos.
Tolerancia a fallos y Redundancia.
No generan cuellos de botella: el problema de fondo de los sistemas SQL, es que deben de transcribir cada
sentencia para poder ser ejecutada y, cada sentencia compleja requiere, adems de un nivel de ejecucin
ms concreto para poderse llevar a cabo, por lo que constituye un punto de entrada comn, nico y
conflictivo en base a rendimiento.
Solo lo estrictamente necesario: son sistemas simples que no tienen un sistema de consulta complejo ni
con capacidad declarativa para en una sola lnea realizar una cantidad interna de operaciones desorbitada.
Estructura dinmica: La primera caracterstica significa que los datos no tienen una definicin de atributos
fija, es decir: Cada registro puede contener una informacin con diferente forma cada vez, pudiendo as
almacenar slo los atributos que interesen en cada uno de ellos, facilitando el polimorfismo de datos bajo
una misma coleccin de informacin. Tambin se pueden almacenar estructuras de datos complejas en un
slo documento, como por ejemplo almacenar la informacin sobre una publicacin de un blog (ttulo,
cuerpo de texto, autor, etc) junto a los comentarios y etiquetas vertidos sobre el mismo, todo en un nico
registro. Hacerlo as aumenta la claridad (al tener todos los datos relacionados en un mismo bloque de
informacin) y el rendimiento (no hay que hacer un JOIN para obtener los datos relacionados, pues stos se
encuentran directamente en el mismo documento).

Tipos
En general hay 5 tipos de bases de datos NoSQL, dependiendo de como almacenan la informacin:
Key-Value: clave-valor es la forma mas tpica, como un HashMap donde cada elemento esta identificado
por una llave nica, lo que permite la recuperacin de la informacin de manera muy rpida. Normalmente
el valor se alamcenar como un objeto BLOB. De esta forma el tipo de contenido no es importante para la
base de datos, solo la clave y el valor que tiene asociado. Son muy eficientes para lecturas y escrituras,
adems de que pueden escalar fcilmente particionando los valores de acuerdo a su clave; por ejemplo
aquellos cuya clave est entre 1 y 1000 van a un server, los de 1001 a 2000 a otro, etc. Muchas de ellas
estn basadas en la publicacin de Google acerca de su BigTable y de Amazon. Dentro de estas bases de
datos podemos encontrar a BigTable de Google, SimpleDB de Amazon, Cassandra, Hadoop, Riak,
Voldemort y MemcacheDB entre otras.
Basada en Documentos: estas almacenan la informacin como un documento (generalmente con una
estructura simple como JSON o XML) y con una clave nica. Es similar a las bases de datos Key-value, pero
con la diferencia que el valor es un fichero que puede ser entendido. Si el servidor entiende los datos,
http://codecriticon.com/queesnosql/

2/8

14/5/2015

QuesNoSQL?Codecriticon

puede hacer operaciones con ellos. De hecho varias de las implementaciones de este tipo de bases de
datos permiten consultas muy avanzadas sobre los datos, e incluso establecer relaciones entre ellos,
aunque siguen sin permitir joins. Podemos encontrar a MongoDB y CouchDB entre las mas importantes de
este tipo.
Orientadas a Grafos: Hay otras bases de datos que almacenan la informacin como grafos donde las
relaciones entre los nodos son lo mas importante. Son muy tiles para representar informacin de redes
sociales. De hecho, las relaciones tambin pueden tener atributos y puedes hacer consultas directas a
relaciones, en vez de a los nodos. Adems, al estar almacenadas de esta forma, es mucho ms eficiente
navegar entre relaciones que en un modelo relacional. Obviamente, este tipo de bases de datos slo son
aprovechables si la informacin en cuestin se puede representar fcilmente como una red.Encontramos a
neo4j entre otras.
Orientadas a Columnas: guardan los valores en columnas en lugar de filas. Con este cambio ganamos
mucha velocidad en lecturas, ya que si se requiere consultar un nmero reducido de columnas, es muy
rpido hacerlo pero no es eficiente para realizar escrituras. Por ello este tipo de soluciones es usado en
aplicaciones con un ndice bajo de escrituras pero muchas lecturas. Por ejemplo, Cassandra.

21

FLARES

Conclusin
Definitivamente, con el trmino NoSQL nos referimos a una multitud de bases de datos que intentan solventar
las limitaciones que el modelo relacional se encuentra en entornos de almacenamiento masivo de datos, y
8
concretamente
en las que tiene en el momento de escalar, donde es necesario disponer de servidores muy
potentes y de balanceo de carga.
Estas bases de datos no significa que el modelo relacional desaparezca, pero s que en determinados entornos
7
donde
hemos de escalar rpidamente, es una solucin muy buena, en especial por el altsimo rendimiento que
ofrecen. No en vano, hoy en da se utilizan ya muchsimo no slo como almacenamiento primario, sino
tambin como sistema de persistencia para guardar cachs, analticas de uso, y otros datos para los que lo
primordial es la velocidad.
1

Esto implica que tendremos que realizar un estudio de nuestro sistema, aplicacin y datos y ver cuales de
todas las posibilidades que se nos proporcionan es la mejor para nuestra aplicacin. Incluso podemos utilizar
una base de datos relacional para almacenar los usuarios registrados y una base de datos NoSQL para
5
almacenar
la informacin de un blog.

21

FLARES

Me0gusta:
Megusta
Selprimeroendecirquetegusta.

Relacionado

http://codecriticon.com/queesnosql/

3/8

14/5/2015

Qu es Play 2 Framework?
En "Programacin"

QuesNoSQL?Codecriticon

Frameworks de
persistencia.Diferencias

Primeros pasos con Android (II).


Conceptos bsicos.

Existen varios frameworks de

En la anterior entrada vimos

persistencia como Hibernate,

como "adecentar" nuestro

Ibatis, OpenJPA, etc... pero hoy

entorno para poder empezar a

voy a tratar las principales

desarrollar aplicaciones Android.

diferencias entre los dos


En "Base de Datos"

En esta entrada vamos a ver los


En "Android"

ETIQUETADO Base de Datos, BigTable, Cassandra, CouchDB, MongoDB, NoSQL. AADIR A FAVORITOS EL
PERMALINK.

HTML5, primeros pasos semntica

Frameworks de persistencia.Diferencias

DEJA UN COMENTARIO
Introducetucomentarioaqu...

3 Respuestas
0 Comentarios
0 Tweets
2 Facebook
1 Notificacion
La ultima respuesta fue hace 11 meses
1.

Sela Palomo
Ver 23 marzo, 2013
Sela Palomo liked this on Facebook.
Responder

2.

Daniel Alcazar
Ver 23 marzo, 2013
Daniel Alcazar liked this on Facebook.
Responder

3. Sistemas NoSQL | Hola!


Ver hace 11 meses
[] Vidal, A. (s.f). Qu es NoSQL?. Recuperado el 04 de mayo, 2014 de http://codecriticon.com/que-esnosql/ []
Responder

http://codecriticon.com/queesnosql/

4/8

14/5/2015

QuesNoSQL?Codecriticon

BUSCAR

SUSCRBETE AL BLOG
Introduce tu correo electrnico
Direccindeemail
Suscribir

Windows8.1Pro32/64Bit1pcLicen...

$479,99

Comprar

Windows8Pro32/64BitFullLicenci...

$635

http://codecriticon.com/queesnosql/

Comprar

5/8

14/5/2015

QuesNoSQL?Codecriticon

Tweets

Seguir

Codecriticon @Codecriticon
13 abr
La inversin de dependencias no es slo
lo que t piensas
blog.koalite.com/2015/04/lainv

Codecriticon @Codecriticon
10 abr
Bliki: CodeAsDocumentation
martinfowler.com/bliki/CodeAsDo
Mostrar resumen

Codecriticon @Codecriticon
Architecting Large Enterprise Java
Projects My Virtual JUG Session
blog.eisele.net/2015/04/archit va
@myfear

6 abr

Mostrar resumen

Codecriticon @Codecriticon
1 abr
Google Guava: 5 Things You Never Knew
It Could Do
blog.takipi.com/googleguava5 va
@takipid
Mostrar resumen

Codecriticon @Codecriticon
30 mar
Tipologas de equipos software III.
Patrones y buenas prcticas para
organizar un equipo
javiergarzas.com/2015/03/tipolo va
@jgarzas

Twittear a @Codecriticon

http://codecriticon.com/queesnosql/

6/8

14/5/2015

QuesNoSQL?Codecriticon

Codecriticon
Megusta

A90personaslesgustaCodecriticon.

PluginsocialdeFacebook

ETIQUETAS
.Net Activity agile Android Argumentos Arrays article aside async Atributos AutoClosable Base de Datos BigTable
Cassandra Class Collections Conceptos Constructor CouchDB CSS3 defer Dependencia de Inyeccin div Eclipse Enum
Etiqueta etiquetas extreme programming Field File Google Guava Header hgroup Hibernate HTML5 Java Java 8 JDK7
Path Programacion Reflection API Scala Variables Web Semantica

CONECTATE CON:

PoweredbyOneAllSocialLogin

META
Registrarse
Acceder
RSS de las entradas
RSS de los comentarios
WordPress.org

http://codecriticon.com/queesnosql/

7/8

14/5/2015

QuesNoSQL?Codecriticon

RSS
RSS - Entradas
RSS - Comentarios

FUNCIONA CON PAABOLA & WORDPRESS.

http://codecriticon.com/queesnosql/

8/8

You might also like