¿Qué Es NoSQL_ - Codecriticon

8
POR ANTONIO 16 NOVIEMBRE, 2011 - 00:25 BASE DE DATOS, NOSQL ¿Qué es NoSQL? Durante los últimos años las bases de datos relacionales han dado soporte a la gran mayorí a de las aplicaciones. Con los años se han ido mejorando, normalizandolas en todo lo posible, escalandolas según crece la demanda y utilizando sistemas de persistencia. Pero últimamente, con la aparición 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 información que no cumplen con el esquema entidad-relación, no imponen una estructura de datos en forma de tablas y relaciones entre ellas , en ese sentido son más flexibles, ya que suelen permitir almacenar información 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, añadir más recursos a un solo nodo en particular dentro de un sistema, tal como el añadir memoria o un disco duro más rápido a un servidor. Entonces se pensó que la solución puede ser la escalabilidad horizontal (agregar más nodos a un sistema), pero las actuales bases de datos relacionales no se adaptan del todo correctamente a este modelo. Además de la carencia de un esquema predeterminado, la principal caracterí stica de las bases de datos NoSQL es que están pensadas para manipular enormes cantidades de información de manera muy rápida. Para ello suelen almacenar toda la información que pueden en memoria (utilizando el disco como una mera herramienta de persistencia), y están preparadas para escalar horizontalmente sin perder rendimiento. Suelen funcionar bastante bien en hardware de bajo coste, y permiten el escalado horizontal añadiendo nuevas máquinas 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 información se almacena de forma distinta, generalmente como clave-valor, como una tabla en la que las columnas son dinámicas, pueden cambiar sin perder la agrupación de la información, así es que puedo tener ‘Personas’ con mas atributos que otras, puedo cambiar la estructura de mi información dinámicamente sin tener que re- diseñar todo de nuevo. De entre todas las implementaciones de bases de datos NoSQL, hay muchas que no utilizan el lenguaje de CODECRITICON UN BLOG PARA PROGRAMADORES DECANTADOS 21 FLARES 8 7

description

Base de datos!!!

Transcript of ¿Qué Es NoSQL_ - Codecriticon

  • 14/5/2015 QuesNoSQL?Codecriticon

    http://codecriticon.com/queesnosql/ 1/8

    POR ANTONIO 16 NOVIEMBRE, 2011 - 00:25 BASE DE DATOS, NOSQL

    Qu es NoSQL?

    Durante los ltimos aos las bases de datos relacionales han dado soporte a la gran mayora de lasaplicaciones. Con los aos se han ido mejorando, normalizandolas en todo lo posible, escalandolas segncrece la demanda y utilizando sistemas de persistencia. Pero ltimamente, con la aparicin de grandesaplicaciones online, como Facebook, Twitter o LinkedIn, se plantea problemas de escalabilidad y rendimientosde 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 diferentessoluciones dadas para almacenar datos cuando las bases de datos relacionales nos generan problemas. Lasbases de datos NoSQL son sistemas de almacenamiento de informacin que no cumplen con el esquemaentidad-relacin, no imponen una estructura de datos en forma de tablas y relaciones entre ellas , en esesentido 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 medianteescalabilidad vertical, esto es, aadir ms recursos a un solo nodo en particular dentro de un sistema, tal comoel aadir memoria o un disco duro ms rpido a un servidor. Entonces se pens que la solucin puede ser laescalabilidad horizontal (agregar ms nodos a un sistema), pero las actuales bases de datos relacionales no seadaptan del todo correctamente a este modelo.

    Adems de la carencia de un esquema predeterminado, la principal caracterstica de las bases de datos NoSQLes que estn pensadas para manipular enormes cantidades de informacin de manera muy rpida. Para ellosuelen almacenar toda la informacin que pueden en memoria (utilizando el disco como una meraherramienta de persistencia), y estn preparadas para escalar horizontalmente sin perder rendimiento. Suelenfuncionar bastante bien en hardware de bajo coste, y permiten el escalado horizontal aadiendo nuevasmquinas 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 informacinse almacena de forma distinta, generalmente como clave-valor, como una tabla en la que las columnas sondinmicas, pueden cambiar sin perder la agrupacin de la informacin, as es que puedo tener Personas conmas atributos que otras, puedo cambiar la estructura de mi informacin dinmicamente sin tener que re-disear todo de nuevo.

    De entre todas las implementaciones de bases de datos NoSQL, hay muchas que no utilizan el lenguaje de

    CODECRITICONUN BLOG PARA PROGRAMADORES DECANTADOS

    21FLARES 8 7

  • 14/5/2015 QuesNoSQL?Codecriticon

    http://codecriticon.com/queesnosql/ 2/8

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

    Caractersticas

    Consistencia Eventual: No se implementan mecanismos rgidos de consistencia como los presentes en lasbases de datos relacionales, donde la confirmacin de un cambio implica una comunicacin del mismo atodos los nodos que lo repliquen. Esta flexibilidad hace que la consistencia se d, eventualmente, cuandono 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 hashdistribuidas.Escalabilidad horizontal: Consite en la posibilidad de aumentar el rendimiento del sistema simplementeaadiendo ms nodos, sin necesidad en muchos casos de realizar ninguna otra operacin ms que indicaral sistema cules son los nodos disponibles. Muchos sistemas NoSQL permiten utilizar consultas del tipoMap-Reduce, las cuales pueden ejecutarse en todos los nodos a la vez (cada uno operando sobre unaporcin 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 cadasentencia para poder ser ejecutada y, cada sentencia compleja requiere, adems de un nivel de ejecucinms concreto para poderse llevar a cabo, por lo que constituye un punto de entrada comn, nico yconflictivo en base a rendimiento.Solo lo estrictamente necesario: son sistemas simples que no tienen un sistema de consulta complejo nicon 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 atributosfija, es decir: Cada registro puede contener una informacin con diferente forma cada vez, pudiendo asalmacenar slo los atributos que interesen en cada uno de ellos, facilitando el polimorfismo de datos bajouna misma coleccin de informacin. Tambin se pueden almacenar estructuras de datos complejas en unslo 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 nicoregistro. Hacerlo as aumenta la claridad (al tener todos los datos relacionados en un mismo bloque deinformacin) y el rendimiento (no hay que hacer un JOIN para obtener los datos relacionados, pues stos seencuentran directamente en el mismo documento).

    TiposEn 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 identificadopor una llave nica, lo que permite la recuperacin de la informacin de manera muy rpida. Normalmenteel valor se alamcenar como un objeto BLOB. De esta forma el tipo de contenido no es importante para labase 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 ejemploaquellos cuya clave est entre 1 y 1000 van a un server, los de 1001 a 2000 a otro, etc. Muchas de ellasestn basadas en la publicacin de Google acerca de su BigTable y de Amazon. Dentro de estas bases dedatos 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 unaestructura simple como JSON o XML) y con una clave nica. Es similar a las bases de datos Key-value, perocon la diferencia que el valor es un fichero que puede ser entendido. Si el servidor entiende los datos,

  • 14/5/2015 QuesNoSQL?Codecriticon

    http://codecriticon.com/queesnosql/ 3/8

    puede hacer operaciones con ellos. De hecho varias de las implementaciones de este tipo de bases dedatos 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 deeste tipo.Orientadas a Grafos: Hay otras bases de datos que almacenan la informacin como grafos donde lasrelaciones entre los nodos son lo mas importante. Son muy tiles para representar informacin de redessociales. De hecho, las relaciones tambin pueden tener atributos y puedes hacer consultas directas arelaciones, en vez de a los nodos. Adems, al estar almacenadas de esta forma, es mucho ms eficientenavegar entre relaciones que en un modelo relacional. Obviamente, este tipo de bases de datos slo sonaprovechables si la informacin en cuestin se puede representar fcilmente como una red.Encontramos aneo4j entre otras.Orientadas a Columnas: guardan los valores en columnas en lugar de filas. Con este cambio ganamosmucha velocidad en lecturas, ya que si se requiere consultar un nmero reducido de columnas, es muyrpido hacerlo pero no es eficiente para realizar escrituras. Por ello este tipo de soluciones es usado enaplicaciones con un ndice bajo de escrituras pero muchas lecturas. Por ejemplo, Cassandra.

    ConclusinDefinitivamente, con el trmino NoSQL nos referimos a una multitud de bases de datos que intentan solventarlas limitaciones que el modelo relacional se encuentra en entornos de almacenamiento masivo de datos, yconcretamente en las que tiene en el momento de escalar, donde es necesario disponer de servidores muypotentes y de balanceo de carga.

    Estas bases de datos no significa que el modelo relacional desaparezca, pero s que en determinados entornosdonde hemos de escalar rpidamente, es una solucin muy buena, en especial por el altsimo rendimiento queofrecen. No en vano, hoy en da se utilizan ya muchsimo no slo como almacenamiento primario, sinotambin como sistema de persistencia para guardar cachs, analticas de uso, y otros datos para los que loprimordial es la velocidad.

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

    21FLARES 8 7

    Me gusta:

    Megusta

    Selprimeroendecirquetegusta.

    Relacionado

    21FLARES

    8

    7

    1

    5

    0

    0

  • 14/5/2015 QuesNoSQL?Codecriticon

    http://codecriticon.com/queesnosql/ 4/8

    ETIQUETADO

    HTML5, primeros pasos semntica Frameworks de persistencia.Diferencias

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

    PERMALINK.

    3 Respuestas0 Comentarios0 Tweets2 Facebook1 Notificacion

    La ultima respuesta fue hace 11 meses

    1. Sela PalomoVer 23 marzo, 2013Sela Palomo liked this on Facebook.

    Responder

    2. Daniel AlcazarVer 23 marzo, 2013Daniel 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-es-nosql/ []Responder

    Qu es Play 2 Framework?En "Programacin"

    Frameworks depersistencia.DiferenciasExisten varios frameworks depersistencia como Hibernate,Ibatis, OpenJPA, etc... pero hoyvoy a tratar las principalesdiferencias entre los dosEn "Base de Datos"

    Primeros pasos con Android (II).Conceptos bsicos.En la anterior entrada vimoscomo "adecentar" nuestroentorno para poder empezar adesarrollar aplicaciones Android.En esta entrada vamos a ver losEn "Android"

    DEJA UN COMENTARIOIntroducetucomentarioaqu...

  • 14/5/2015 QuesNoSQL?Codecriticon

    http://codecriticon.com/queesnosql/ 5/8

    BUSCAR

    Introduce tu correo electrnicoDireccindeemail

    Suscribir

    SUSCRBETE AL BLOG

    Windows8.1Pro32/64Bit1pcLicen...

    Comprar$479,99

    Windows8Pro32/64BitFullLicenci...

    Comprar$635

  • 14/5/2015 QuesNoSQL?Codecriticon

    http://codecriticon.com/queesnosql/ 6/8

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

    Codecriticon @Codecriticon

    Bliki: CodeAsDocumentation martinfowler.com/bliki/CodeAsDo

    Codecriticon @Codecriticon

    Mostrar resumen

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

    Codecriticon @Codecriticon

    Mostrar resumen

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

    Codecriticon @Codecriticon

    Mostrar resumen

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

    Codecriticon @Codecriticon

    13 abr

    10 abr

    6 abr

    1 abr

    30 mar

    Tweets Seguir

    Twittear a @Codecriticon

  • 14/5/2015 QuesNoSQL?Codecriticon

    http://codecriticon.com/queesnosql/ 7/8

    Codecriticon

    A90personaslesgustaCodecriticon.

    PluginsocialdeFacebook

    Megusta

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

    PoweredbyOneAllSocialLogin

    Registrarse

    Acceder

    RSS de las entradas

    RSS de los comentarios

    WordPress.org

    ETIQUETAS

    CONECTATE CON:

    META

  • 14/5/2015 QuesNoSQL?Codecriticon

    http://codecriticon.com/queesnosql/ 8/8

    RSS - Entradas

    RSS - Comentarios

    FUNCIONA CON PAABOLA & WORDPRESS.

    RSS