Trabajo base de datos NoSQL PDF

Title Trabajo base de datos NoSQL
Course Gestión De Base De Datos
Institution Universidad ECCI
Pages 14
File Size 278.2 KB
File Type PDF
Total Downloads 13
Total Views 135

Summary

Download Trabajo base de datos NoSQL PDF


Description

Trabajo base de datos NoSQL

Presentado a

UNIVERSIDAD ECCI FACULTAD DE INGENIERÍA DE SISTEMAS Gestión de base de datos BOGOTA D.C. 2019

1. Que es una base de datos no SQL y SQL diferencias Primero se debe aclarar que cada modelo es una herramienta, y como toda herramienta, son buenos para ciertas cosas y para otras no tanto. La mayor diferencia entre estos dos tipos de modelos, es que mientras las SQL se hacen con modelos relacionales, es decir, las tablas están unidas con un propósito y algunas de estas tienen llaves para poder buscar elementos en específico, los NOSQL, son nuevos modelos, en los cuales no utilizan modelos relacionales, en cambio utiliza archivos y campos dentro de estos archivos para poder guardar los datos. Este cambio como tal, presenta algunas ventajas y desventajas para ambos.

Integridad de los datos; Se sabe que las integridades de los datos especifican que los elementos guardados en las entidades creadas, van a permanecer sin cambios a través del tiempo, siempre que no se realicen cambios a la estructura de esa base de datos. SQL: Ahora ya que esta trabaja con relaciones, las tablas siempre son rígidas, donde cada campo tiene un tipo definido y si se trata de insertar un valor diferente en un campo ya definido, este no nos dejara guardarlo. NOSQL: Esto es más confuso, debido a que las bases de datos de este tipo no exigen definir un tipo de dato, por lo tanto, se pueden guardar desde Strings hasta enteros y otros en el mismo campo. Esto quiere decir que si se desea una base de datos que mantenga la información tal cual como la ingresamos (exactos y consistentes), lo mejor es utilizar SQL. Mientras, los elementos en las bases de datos NOSQL, tienen a ser redundantes, porque la prioridad no es saber qué tipo de información es, sino la velocidad a la cual se acceden estos datos. Cabe recalcar que para realizar cambios como insertar una nueva llave en SQL significaría reevaluar la base de datos ya cambiada, ya que debido a que están

relacionadas pueden surgir errores no muy agradables más si la base de datos modificada es muy robusta, mientras las NOSQL, me permite agregar llaves con mucha facilidad. (Cuidado, conque SQL tenga estas dificultades para poder modificar tablas, no quiere decir que esto sea malo, ya que en muchas ocasiones se busca solo la seguridad de la información, como puede ser el ejemplo de una base de datos de un banco).

Operaciones atómicas; Para explicar en que se base esto, se debe primero saber dos significados; El rollback: que quiere decir, sin mayores palabras (o se cambia todo, o nada cambia), esto asegura que la base de datos quede intacta (llamado también como atomicidad). El race condition: se refiere a varios clientes queriendo tener una versión diferente del mismo dato. SQL: este tipo de base de datos poseen atomicidad ya que todas las tablas se encuentran conectadas, y no aceptan los cambios hasta asegurase que se terminó la transacción con éxito. Por lo tanto, son más utilizadas cuando se necesita que se cambie varias entidades al mismo tiempo. NOSQL: aquí si se necesita realizar un cambio en varias tablas al mismo tiempo, es necesario inscribir todas estas instrucciones de cambio, debido a que aquí no existen relaciones entre tablas, aquí se puede producir el llamado race condition. Lo malo de la atomicidad es que necesita mucha capacidad de procesamiento y esto afecta el rendimiento de la base de datos. Mientras si da igual que haya inconsistencia de datos, lo mejor es utilizar base de datos NOSQL, además que maximiza la velocidad de búsqueda de estos.

Escalabilidad;

Este término aparece cuando se habla de que cantidad de datos puede soportar la base de datos (que tanto puede crecer, como se puede adaptar al crecimiento), de aquí sale el termino escalabilidad vertical, que significa aumentar y agregarle más elementos a un nodo, para que este soporte mejor el trabajo (cuando se habla de escalamiento horizontal, se refiere en agregar nuevos nodos, para aprovechar al máximo la redundancia, y no solo enfocarse en uno (dividir la base de datos en varios nodos)). SQL: muchas bases de datos que manejan este tipo, tienen una muy buena escalabilidad, pero llega un momento en que hay tantos datos, que la máquina, aunque sea muy potente, se queda corta en el procesamiento de estos datos, por lo que es necesario realizar una escalabilidad horizontal para repartir estos procesos en varios nodos. Aun así, esto es muy peligros para la seguridad de los datos debido a que las operaciones que se van a realizar como el de cambio, son dejados a varios computadores, y puede ocurrir un error, dañando así la integridad de los datos. NOSQL: ya que aquí la base de datos no es relacional y la integridad de los datos no es muy importante, la escalabilidad horizontal es la mejor opción, debido a que se pueden agregar en máquinas no muy potentes, por lo que es mucho más barato y rápido.

Velocidad; Se refiere a que tan rapidas son las lecturas y escrituras en una base de datos. Elemento necesario, ya que este puede ayudar a definir con que base de datos se va a trabajar. SQL: debido a que este tipo e base de datos contiene relaciones, tarde o temprano se realizara búsqueda con joins, por lo tanto, si se acceden a muchas entidades al mismo tiempo, la búsqueda tardara un tiempo (cabe decir que esto se puede evitar con un buen0 diseño de la base de datos, pero no esto no libera a la base de datos del problema del tiempo gastado en hacer un proceso join). NOSQL: aquí dependerá de que tanto se aprovecha la velocidad con la que viene estos tipos de base de datos, ya que la búsqueda es sumamente rápida para conseguir un dato en específico entre millones.

Por lo tanto, una base de datos NOSQL que tenga un buen diseño, va a ganar por mucho a una base de datos SQL, además de que se puede diseñar en función a las consultas que se harán, por lo que le da una ventaja descomunal. Cabe agregar que las bases de datos NOSQL son más atractivas para aplicaciones modernas, por la velocidad y el ahorro del plan de datos.

¿Consistencia o redundancia? Esta es la diferencia más marcada entre las bases de datos SQL y NOSQL el cual nos permitirá decir cual implementar. Primero se repasarán algunos términos, los cuales son; Consistencia: asegurarse que un único dato este una única vez en toda la base de datos. Redundancia: los datos están repetidos en varias entidades. Normalización: reducir la cantidad de datos “Repetidos” en la base de datos. SQL: esta clase de base de datos, cumple con ser consistente, mediante el proceso de normalización. NOSQL: este tipo de base de datos, son redundantes, solo por conveniencia, ya que ayuda a la rapidez de lectura en el proceso de búsqueda. Por lo tanto, con lo anterior se demuestra que dependiendo de la aplicación a la cual se aplicara la base de datos, podemos escoger la consistencia de datos o que haya un incremento de velocidad

2. Como funciona Mientras SQL son base de datos relacionales y estructurado, los NOSQL, posee un tipo de almacenamiento no estructurado y no posee relaciones, por lo que no tiene una estructura de tabla fija.

Tipo de almacenamiento de datos NOSQL; Las bases de datos NOSQL funcionan como un archivo donde todos los datos se mantienen almacenados, nos permiten trabajar con una enorme cantidad de información, asimismo la mantienen organizada para que podamos acceder a ella en cualquier momento que la necesitemos.

Key Value Store;

Se utiliza una tabla hash en la que una clave única apunta a un elemento, estas pueden ser organizadas por grupos de claves lógicos, por lo que se puede tener claves idénticas en diferentes grupos lógicos. Un ejemplo de esto es;

Algunos de estas implementaciones del almacén de valores clave proporcionan mecanismos de almacenamiento en el cache, por lo que mejora su rendimiento.

Almacenamiento de columnas; Mientras en la base de datos relacionales los elementos se almacenan en filas, en los NOSQL se almacenan en columnas, por lo que un almacén de columnas está compuesto por una o más familias de columnas y estas se agrupan de forma lógica en determinadas columnas en una base de datos. En un almacén de columnas las filas corresponden a una sola columna se almacenan como una sola entrada de disco, lo cual facilita el acceso durante las operaciones de lectura. Rest es un tipo de estilo arquitectónico que consiste en un conjunto coordinado de restricciones aplicadas a componentes, conectores y elementos de datos. Las aplicaciones RESTfull utilizan peticiones HTTP para publicar, leer y eliminar datos. Base gráfica; En una base de datos NOSQL, se utiliza una “Estructura de grafica dirigida” para representar los datos, este está compuesto por bordes y nodos

3. Productos del mercado Entre los sistemas de gestión de bases de datos NoSQL mas importantes, reconocidos y/o usados se encuentran los siguientes:



MongoDB: Es la base de datos desarrollada para trabajar orientada a documentos, y lo más llamativo, que es de esquema libre, lo que se traduce en que podemos ingresarle cuantos esquemas de datos queramos sin que esto tengan que estar relacionados con los demás registros que se almacenan. En la actualidad es una de las bases de datos más usadas la simplicidad de su uso además de la particularidad de permitir la generación de relaciones si el usuario así lo requiere.



Apache Cassandra: Como su nombre lo indica, fue desarrollada por apache como una apuesta a las bases de datos NoSQL, no está de más aclarar que también es de tipo clave-valor y que maneja su propio lenguaje de consultas (CQL). Tiene la ventaja de ser una aplicación desarrollada en lenguaje Java lo que le permite a cualquier usuario con el paquete de JVM instalado el usar esta base de datos.



Google Bigtable: Este producto desarrollado por Google es un sistema de base de datos NoSQL, orientado principalmente al almacenamiento de datos relacionados a operaciones de búsqueda en internet y servicios web. El modelo de datos que usa dicha herramienta ha sido descrito por Google como "un mapa ordenado multidimensional persistente, disperso, distribuido”. Bigtable es una opción de base de datos para aplicaciones como el almacén de datos de Google App Engine, Google Personalized Search, Google Earth y Google Analytics. Google ha mantenido el software como una tecnología propia y propia. No obstante, Bigtable ha tenido un gran impacto en el diseño de bases de datos NoSQL. Los desarrolladores de software de Google revelaron públicamente los detalles de Bigtable en un documento técnico presentado en el Simposio USENIX sobre sistemas operativos e implementación de diseño en 2006.



Redis Se puede imaginar como un array gigante en memoria para almacenar datos, datos que pueden ser cadenas, hashes, conjuntos de datos o listas. Tiene la ventaja de que sus operaciones son atómicas y persistentes. Por ponerle una pega, Redis no permite realizar consultas, sólo se puede insertar y obtener datos, además de las operaciones comunes sobre conjuntos (diferencia, unión e inserción). Creado en ANSI C, por lo tanto, es compatible y funciona sin problemas en sistemas Unix, Linux y sus derivados, Solaris, OS/X sin embargo no existe soporte oficial para plataformas Windows.

4. Casos de ejemplo A continuación, mostraremos algunos casos de ejemplo más importantes en la actualidad sobre empresas/aplicaciones que hacen uso de bases de datos NoSQL para el manejo de datos:



Twitter y Redis Cada vez que el usuario accede a Twitter a través de la web o de una aplicación externa, el timeline suele ser la primera pantalla que se muestra. Este timeline tiene mucho que ver con Redis. Twitter mantiene en un clúster de Redis en el que se mantienen los timelines de los usuarios del sitio en memoria, de forma que, cada vez que un usuario escribe un nuevo tweet, un proceso lee los seguidores de ese usuario y escribe en sus timelines una referencia al tweet que acaba de ser escrito. 83 Ilustración 16. Flujo de escritura de Tweets desde una aplicación y sus actualizaciones en Redis Es decir, cada vez que un usuario escribe un tweet, se realiza una inserción en Redis en los timelines de cada uno de sus followers. Twitter recibe un promedio escrituras de 5.000 tweets/s, con picos de 12.000, y un ratio de lecturas de 300.000 tweets/s. Además, el rendimiento es aún más impactante si se piensa en personalidades como Katy Perry, Justin Bieber o Barack Obama, que cuentan con decenas de millones de seguidores cada uno. Cada tweet que escribe una de estas personas, provoca unos 50 millones de actualizaciones en Redis, una por cada seguidor.



Spotify y Apache Cassandra Spotify comenzó únicamente con postgreSQL como backend para la plataforma, pero a medida que fueron creciendo y las necesidades de escalabilidad se fueron haciendo más fuertes comenzaron a mirar por nuevas alternativas. Según cuenta Alex Liljencrantz, ingeniero backend en Spotify, “básicamente, una vez que alcanzas varios CPDs, la replicación en tiempo real de postgreSQL no funciona especialmente bien con para escribir volúmenes de datos muy grandes. De esta forma, cuando comenzamos a buscar una solución BigData, Cassandra fue la que más cumplía nuestras expectativas, por su ausencia de puntos únicos de fallo, y lo que es más importante, su diseño basado en Bigtable. Esto nos aseguraba un nivel de confianza de forma que no perderíamos datos, incluso siendo aún un proyecto muy joven. Básicamente, aun produciéndose bugs o errores, estaremos seguros de no perder nuestros datos.” Existen varios servicios de Spotify que hacen uso de Cassandra, pero el que más datos almacena es un clúster con unos 50 terabytes de datos comprimidos.



Foursquare y MongoDB Cuando Foursquare decidió migrar a MongoDB, su capa de backend consistía en una única base de datos relacional. Debido al crecimiento exponencial que experimentó desde su creación en 2009 hasta pocos años después, los ingenieros de Foursquare decidieron evaluar, entre otras soluciones, bases de datos NoSQL. Finalmente encontraron en MongoDB la base de datos que les permitía solucionar tanto sus necesidades más inmediatas, como las que, previsiblemente, pudieran surgirles más adelante. Las características que apreciaron de MongoDB fueron:

- El particionado automático, mediante el cual simplemente tienes que añadir nodos al clúster a medida que se van necesitando y el software se encarga de lo demás. - La indexación geográfica de la que dispone MongoDB, la cual les permitía realizar búsquedas basadas en una ubicación espacial concreta. - Los ReplicaSet, mediante los cuales se consigue alta disponibilidad y redundancia de nodos en caso de caídas. - Su modelo de datos dinámico y adaptable a las necesidades en cada punto del proyecto.

Bibliografía Bases de datos NoSQL vs SQL: diferencias y cuándo elegirlas. (s/f). Recuperado el 10 de marzo de 2019, de http://innova-t.co/topic/bases-de-datos-sql-vs-nosql/ Nosql vs sql: diferencias y principales tecnologías. (2018, mayo 18). Recuperado el 10 de marzo de 2019, de https://blogs.imf-formacion.com/blog/tecnologia/nosql-vs-sql-diferencias-principalestecnologias-201805/ NoSQL vs SQL: principales diferencias y cuándo elegir cada una de ellas. (2015, noviembre 18). Recuperado el 10 de marzo de 2019, de https://blog.pandorafms.org/es/nosql-vs-sql-diferenciasy-cuando-elegir-cada-una/ Platzi. (s/f). ¿Que es SQL y NoSQL? Recuperado de https://www.youtube.com/watch? v=CuAYLX6reXE Victor Robles WEB. (s/f). NoSQL vs SQL - Diferencia entre MongoDB y MySQL - Bases de datos no relacionales - Víctor Robles. Recuperado de https://www.youtube.com/watch?v=b_zr8t2g2Ic Bigtable: A Distributed Storage System for Structured Data, ACM Transactions on Computer Systems (TOCS) | 10.1145/1365815.1365816 | DeepDyve. (s. f.). Recuperado 8 de marzo de 2019, de https://www.deepdyve.com/lp/acm/bigtable-a-distributed-storage-system-for-structured-datamhqQhFFjGJ?key=acm Cassandra: The Definitive Guide - Eben Hewitt - Google Libros. (s. f.). Recuperado 8 de marzo de 2019, de https://books.google.com.co/books? hl=es&lr=&id=MKGSbCbEdg0C&oi=fnd&pg=PR7&dq=cassandra+db&ots=XqUx2zE74u&sig =PbCOp4eqxgHqMrpO08zzhka_KpA&redir_esc=y#v=onepage&q&f=false From NoSQL Accumulo to NewSQL Graphulo: Design and utility of graph algorithms inside a BigTable database - IEEE Conference Publication. (s. f.). Recuperado 8 de marzo de 2019, de https://ieeexplore.ieee.org/abstract/document/7761577 Gómez, R. H., & Maqueda, A. M. I. (s. f.). BASES DE DATOS NOSQL: ARQUITECTURA Y EJEMPLOS DE APLICACIÓN, 159.

MongoDB: The Definitive Guide: Powerful and Scalable Data Storage - Kristina Chodorow - Google Libros. (s. f.). Recuperado 8 de marzo de 2019, de https://books.google.com.co/books? hl=es&lr=&id=uGUKiNkKRJ0C&oi=fnd&pg=PP1&dq=mongodb&ots=h9nvJghWwg&sig=8V HYAS-6UY4Tlh-_MKo4RNV5_W8&redir_esc=y#v=onepage&q=mongodb&f=false NoSQL databases: a step to database scalability in web environment | International Journal of Web Information Systems | Vol 9, No 1. (s. f.). Recuperado 8 de marzo de 2019, de https://www.emeraldinsight.com/doi/abs/10.1108/17440081311316398?journalCode=ijwis What is Google Bigtable? - Definition from WhatIs.com. (s. f.). Recuperado 10 de marzo de 2019, de https://searchdatamanagement.techtarget.com/definition/Google-BigTable...


Similar Free PDFs