NO-SQL. Lic. Gerardo Rossel

Documentos relacionados
Bases de Datos NoSql. Conceptos generales. Lic. Gerardo Rossel Lic. Fernando Bugni

TP3 - Sistemas Distribuidos Map-Reduce

Características de las BD NoSQL

Bases de Datos Paralelas. Carlos A. Olarte BDII

Diseño de Sistemas Distribuidos Máster en Ciencia y Tecnología Informática Curso Presentación e introducción

Capítulo 10. Bases de datos distribuidas

BASES DE DATOS NoSQL

Big Data, MapReduce y. Hadoop. el ecosistema. Bases de Datos No Relacionales Instituto de Computación, FING, UdelaR 2016

Sistema de archivos de Google. Mario Alonso Carmona Dinarte A71437

Modelo de programación MapReduce

Maestría en Bioinformática. Bases de Datos y Sistemas de Información. Bases de Datos. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

Big Data. Rodolfo Campos

Auditoría de procesos de negocio en la nube: persistencia mediante almacenes no relacionales

Gestión de Transacciones: Concurrencia y Recuperación

Oracle Database 11g: RAC Administration Release 2

Migración de Bases de Datos SQL a NoSQL

Transacción. Introducción a los conceptos del Procesamiento de las Transacciones. Monousuarios vs. Multiusuarios. Pablo Turjanski.

TEORIA DE BASES DE DATOS. M. Sc. Cristina Bender Lic. Diana Gázquez

1. Lenguaje de Definición de Datos. 2. Lenguaje de Manipulación de. Datos. M. C. Gustavo Alfonso Gutiérrez Carreón

Agustiniano Ciudad Salitre School Computer Science Support Guide Second grade First term

Base de Datos Distribuidas

Modelos de Datos Gestión y Modelación de Datos. María Constanza Pabón mcpabon@javerianacali.edu.co

Persistencia Políglota Caso de estudio: MongoDB y Neo4j

ARQUITECTURAS DE DB2 LUW

CLOUD & BIG DATA. Trabajando el CLOUD, explotando BIG DATA. Cómo pueden ayudarnos estas tecnologías?. Convivimos con ellas?.

Bases de datos 1. Teórico: Introducción

Bases de datos distribuidas Fernando Berzal,

Bases de datos NoSQL Fernando Berzal,

Qué es MongoDB? mongo NoSQL

Unidad 4 Control de Transacciones

BASES DE DATOS, MODELOS DE DATOS Y DBMS

Kuapay, Inc. Seminario Internacional Modernización de los medios de pago en Chile

Storm: Procesamiento distribuido de datos.

Calculo Relacional de Tuplas. Lic. Andrea Manna

UNIDAD 1 ESTUDIO DE UNA APLICACIÓN DISTRIBUIDA: HADOOP HDFS PARA EL ALMACENAMIENTO DE BIG DATA

MASTER CLASS. Curso de Introducción MongoDB. Juan Manuel Parrilla. Consultor de Amaris en Telefónica I+D. Release Engineer * FUENTE DE DOCUMENTACIÓN :

Arquitectura de Manejadores de Base de Datos

MS_20464 Developing Microsoft SQL Server Databases

MapReduce. Modelo de programación MapReduce. MapReduce. Sistemas Distribuidos. Tecnologías procesado masivo de datos. Vamos a contar palabras

UNIVERSIDAD NACIONAL DEL SUR 1 BAHIA BLANCA DEPARTAMENTO DE CIENCIAS E INGENIERÍA DE LA COMPUTACION

Gender: Female Ethnicity: Birthdate: (Mon/Date/Year) (Number) (Street) (City) (Zip)

QUICK GUIDE RECORD SETUP CONFIGURACIÓN DE GRABACIÓN English / Español

Replicación de bases de datos NoSQL en dispositivos móviles DIRECTOR: PROF. MG. JAVIER BAZZOCCO

74 Prime Time. conjetura Suposición acerca de un patrón o relación, basada en observaciones.

BIG DATA. Jorge Mercado. Software Quality Engineer

Taller MongoDB. 1er Cuatrimestre 2016 Base de datos

Anexo 3 COMPONENTES DE SQL SERVER. Los DDL (Data Definition Languaje) que permiten crear y definir nuevas

SGBD. Gestión y Modelación de Datos. María Constanza Pabón

Consistencia y Replicación

La Máquina de Acceso Aleatorio (Random Access Machine)

Sistemas Distribuidos. Módulo 5. Consistencia, Replicación y Memoria Compartida Distribuida

Facultad de Ingeniería Industrial y de Sistemas v1.0 MA781U PROCESOS DISTRIBUIDOS

Qué es SGBD? Mencionar 4 tipos de SGBD. SGBD de red. Román Gutiérrez Sosa. SGBD jerárquicos. Modelo de datos relacionales.

Práctica 2 - Manejo de estructuras de datos y punteros

Ing. Informática. Catedrático: Lic. Angélica Avalos Cano

QUICK GUIDE RECORD SETUP CONFIGURACIÓN DE GRABACIÓN English / Español

Recuperación del Sistema

Bases de datos NoSQL. Hugo González Noviembre 17, 2011

Nuevas Características de la Versión 9.1 de PostgreSQL. Alcides Rivera Posso

Gestion y Modelación de Datos Sistemas de Información, Sistemas de BD

Oracle Data Guard 11g

Conectores Pentaho Big Data Community VS Enterprise

WordPress Custom Post Types. Una buena forma de darle a tu contenido el espacio que se merece.

1. Introducción Información y datos Ficheros vs. Bases de datos

Programación de sistemas Listas enlazadas

Bases de datos Unidad 1 Introducción a las BD. Mónica María Rojas Rincón Oficina: P19-103

Modulo I: Introducción Gestores de Bases De Datos

Portal para padres PowerSchool Tarjeta de referencia rápida

Big Data Analytics & IBM BIG INSIGHT

UNIDAD4. 1. Procedimentales 2. No Procedimentales

CURSO: DESARROLLADOR PARA APACHE HADOOP

Curso Querying Microsoft SQL Server 2014 (20461)

ANÁLISIS Y DESARROLLO DE UNA PLATAFORMA BIG DATA

REPRESENTACIÓN INTERNA DE FICHEROS

Transacciones en SQL. Lic. Gerardo Rossel

Resumen Tema 5: Proceso de transacciones

Unidad 1. CONCEPTOS DE BASES DE DATOS.

Software Libre para Aplicaciones de Big Data

ORGANIZACIÓN DE COMPUTADORAS

Hadoop. Cómo vender un cluster Hadoop?

Transacciones. Carlos A. Olarte BDII

acenswhitepapers Bases de datos NoSQL. Qué son y tipos que nos podemos encontrar

SQL. Amparo López Gaona. México, D.F. Noviembre 2003

Transcripción:

NO-SQL Lic. Gerardo Rossel 2016

Introducción

Definición Dan McCreary -Ann Kelly NoSQL is a set of concepts that allows the rapid and efficient processing of data sets with a focus on performance, reliability, and agility. Shashank Tiwari NoSQL is used today as an umbrella term for all databases and data stores that don t follow the popular and well established RDBMS principles and often relate to large data sets accessed and manipulated on a Web scale. This means NoSQL is not a single product or even a single technology. It represents a class of products and a collection of diverse, and sometimes related, concepts about data storage and manipulation.

Definición Fowler -Sadalage NoSQL is an accidental neologism. There is no prescriptive definition all you can make is an observation of common characteristics.

Que deberían ya saber? Modelos de Distribución: Maestro-Esclavo. Maestro-Maestro. Sharding. Consistencia: Consistencia Fuerte. Consistencia Eventual. Teorema CAP. ACID vs. BASE.

Consistencia Modelos de consistencia Un modelo de consistencia determina la visibilidad y el orden aparente de las actualizaciones. Modelos de Consistencia - Tanenbaum Un modelo de consistencia es básicamente un contrato entre los procesos y el almacén de datos. Este contrato dice que si los procesos aceptan obedecer ciertas reglas, el almacén promete funcionar correctamente.

Consistencia

Consistencia Consistencia Fuerte Todas las operaciones de lectura deben devolver datos de la última operación de escritura completada.

Consistencia Consistencia Fuerte Todas las operaciones de lectura deben devolver datos de la última operación de escritura completada.

Consistencia Consistencia Fuerte Todas las operaciones de lectura deben devolver datos de la última operación de escritura completada. Consistencia Eventual Las operaciones de lectura verán conforme pasa el tiempo las escrituras. En un estado de equilibrio el sistema devolvería el último valor escrito. A medida que t > los clientes verán las escrituras.

Consistencia no Estricta Read Your Own Writes (RYOW) Consistency Consistencia de Sesión Consistencia Causal Consistencia de lectura monotónica. Consistencia Eventual. Read Your Own Writes El cliente lee sus actualizaciones inmediatamente después de que hayan sido completadas. Independientemente si escribe en un server y lee de otro. Las actualizaciones de otros clientes no tienen porque ser visibles instantáneamentee.

Consistencia no Estricta Read Your Own Writes (RYOW) Consistency Consistencia de Sesión Consistencia Causal Consistencia de lectura monotónica. Consistencia Eventual. Sesión Es un poco más débil que RYOW. Porvee RYOW sólo si el cliente esta dentro de la misma sesión. Usualmente sobre el mismo server.

Consistencia no Estricta Read Your Own Writes (RYOW) Consistency Consistencia de Sesión Consistencia Causal Consistencia de lectura monotónica. Consistencia Eventual. Causal Si el evento b es causado o influenciado por un evento previo a, la causalidad requiere que todos los demás eventos vean primero a a, y después a b. Escrituras que potencialmente están relacionadas por la causalidad, deben ser vistas por todos los procesos en el mismo orden. Las escrituras concurrentes pueden verse en un orden diferente en diferentes máquinas.

Consistencia no Estricta Read Your Own Writes (RYOW) Consistency Consistencia de Sesión Consistencia Causal Consistencia de lectura monotónica. Consistencia Eventual. Monotonic Read Si un proceso lee el valor de un elemento de datos x, cualquier operación de lectura sucesiva sobre x que haga ese proceso devolverá siempre el mismo valor o un valor más reciente.

Consistencia no Estricta Read Your Own Writes (RYOW) Consistency Consistencia de Sesión Consistencia Causal Consistencia de lectura monotónica. Consistencia Eventual.

El teorema CAP C Consistency: Todos ven los mismos datos al mismo tiempo A Availability: Si se puede comunicar con un nodo en el cluster entonces se pueden leer y escribir datos. 1 P Partition tolerance: El cluster puede sobrevivir a roturas de comunicación que lo dividan en particiones que no pueden comunicarse entre ellas. 1 every request received by a non failing node in the system must result in a response

El teorema CAP C Consistency: Todos ven los mismos datos al mismo tiempo A Availability: Si se puede comunicar con un nodo en el cluster entonces se pueden leer y escribir datos. 1 P Partition tolerance: El cluster puede sobrevivir a roturas de comunicación que lo dividan en particiones que no pueden comunicarse entre ellas. Teorema CAP Dado C, A y P: sólo se puede tener un máximo de dos de estas propiedades para cualquier sistema de datos compartidos 1 every request received by a non failing node in the system must result in a response

CAP - Falacias de la computación distribuida La red es fiable. La latencia es cero. El ancho de banda es infinito. La red es segura. La topología no cambia. Hay un administrador. El costo del transporte es cero. La red es homogénea.

CAP - Falacias de la computación distribuida La red es fiable. La latencia es cero. El ancho de banda es infinito. La red es segura. La topología no cambia. Hay un administrador. El costo del transporte es cero. La red es homogénea. Teorema CAP Fallos de red le suceden a su sistema y no puede elegir cuando se producen.

CAP - Falacias de la computación distribuida Teorema CAP Fallos de red le suceden a su sistema y no puede elegir cuando se producen.

CAP - Falacias de la computación distribuida Teorema CAP Fallos de red le suceden a su sistema y no puede elegir cuando se producen. CP vs AP Hay que tolerar particiones! CP - Consistency/Partition Tolerance AP - Availability/Partition Tolerance No es una decisión binaria. Un poco de uno a costa del otro.

Eric Brewer: BASE Mito La plata es importante, así que los bancos debe usar transacciones para mantener la plata segura y consistente?

Eric Brewer: BASE Mito La plata es importante, así que los bancos debe usar transacciones para mantener la plata segura y consistente? Realidad Las transacciones bancarias son inconsistentes, particularmente para ATM (Cajeros Automáticos). ATM es diseñado para tener un comportamiento en modo normal y otro en modo partición. En modo partición la Availability es elegida por sobre la Consistencia Realidad La industria financiera históricamente no tubo consistencia porque no tenía comunicación perfecta.

Realidad ATMs eligen operaciones conmutativas así el orden en el cual se aplican no importa. Relidad ATMs Si hay una partición el cajero puede seguir funcionando, luego al volver a recuperar la partición se envían las operaciones y el saldo final sigue siendo correcto. Idea Lo que se está haciendo es delimitar y administrar el riesgo. ATMs son rentables aún a costa de alguna perdida.

Durabilidad vs. Performance. Durabilidad de replicación Aplicar Cambios a Memoria y cada t enviar los cambios a disco (Redis) A menudo, se puede especificar las necesidades durabilidad por cada llamada, de tal manera que las actualizaciones más importantes pueden forzar su escritura a disco.

Durabilidad vs. Performance. Durabilidad de replicación Un nodo puede procesar una actualización y falla antes de que se replique en otros nodos. Mastro/Esclavo: Se puede mejorar esperando por algunas réplicas antes confirmar al cliente.

Map-Reduce

Introducción Vistas Materializadas Computación de grandes volúmenes de información Donde realizar el computo? Ranking de páginas WEB por importancia. Búsquedas en amigos en redes sociales que involucra grafos con cientos de millones de nodos.

Introducción Jeffrey Dean y Sanjay Ghemawat "MapReduce: Simplified Data Processing on Large Clusters" In OSDI 04: Proceedings of the 6th conference on Symposium on Opearting Systems Design & Implementation. 2004

Visión general Leer secuencialemente una enorme cantidad de datos Map: Extraer algo que nos interesa. Agrupar por clave. Ordenar y Mezclar Reduce: Agregar, sumarizar, filtrar o transformar Devolver el resultado Adecuación El esquema general siempre es el mismo. Map y Reduce cambian para adecuarse al problema

1 Entrada: un conjunto de pares clave-valor de esta manera se logra permitir la composición de procesos 2 El desarrollador especifica dos funciones: Map(k, v) < k, v > Toma un par key-value y devuelve un conjunto de pares key-value Hay un llamada a Map por cada par (k,v) Reduce(k, < v > ) < k, v > Todos los valores de v para la misma k se reducen y procesan en conjunto

Esquema general Figura de J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

Reduce Ejemplo - Contar Palabras map( String input_key, String input_value ) : / / input_key : document name / / input_value : document contents for each word w in input_value : EmitIntermediate (w, 1) ; Map reduce ( String output_key, Iterator intermediate_values ) : / / output_key : word / / output_values :???? int result = 0; for each v in intermediate_values : result += v ; Emit ( result ) ;

Ejemplo Al finalizar las tareas Map los pares key-value son agrupados por key y los valores asociados con cada key son colocados en una lista de valores (k, [v 1, v 2,..., v n ]). Este agrupamiento es desarrollado por el sistema independientemente de lo que hagan Map y Reduce.

Paralelismo y arquitectura El entorno Map-Reduce se encarga de: Particionar los datos de entrada. Planificar la ejecución de los programas en un conjunto de computadoras. Desarrollar el agrupamiento por clave. Manejar las fallas en las máquinas. Administrar la comunicación.

Esquema general Figura de J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

Paralelismo Figura de J. Leskovec, A. Rajaraman, J. Ullman: Mining of Massive Datasets, http://www.mmds.org

Paralelismo Combinable Reducer Es un Reduce que se ejecuta en el mismo nodo que el Map No todas las funciones Reduce son combinables La entrada debe coincidir con la salida. La función Reduce debe ser asociativa y conmutativa

Ejemplo - Map Calcular el ingreso total por producto. Figura de Sadalage y Fowler / NoSQL distilled : a brief guide to the emerging world of polyglot persistence

Ejemplo - Reduce Calcular el ingreso total por producto. Figura de Sadalage y Fowler / NoSQL distilled : a brief guide to the emerging world of polyglot persistence

Ejemplo - Paralelismo Calcular el ingreso total por producto. Figura de Sadalage y Fowler / NoSQL distilled : a brief guide to the emerging world of polyglot persistence

Ejemplo - Combinable Reduce Calcular el ingreso total por producto. Se puede optimizar más?

Ejemplo - Combinable Reduce Calcular el ingreso total por producto. Figura de Sadalage y Fowler / NoSQL distilled : a brief guide to the emerging world of polyglot persistence

Implementar la Junta del Algebra Relacional Bar Cerveza Precio Moe Duff 25 Cito Quilmes 35 Joe s Miller 27.5 Joe s Bud 25 Vende Bar Moe Cito Dirección Maple St River Rd. Joe s Balcarce 50 Bar Bar Cerveza Precio Dirección Moe Duff 25 Maple St Cito Quilmes 35 River Rd. Joe s Miller 27.5 Balcarce 50 Joe s Bud 25 Balcarce 50 Vende Bar

Implementar la Junta del Algebra Relacional -Map Bar Cerveza Precio Moe Duff 25 Cito Quilmes 35 Joe s Miller 27.5 Joe s Bud 25 Vende Bar Moe Cito Dirección Maple St River Rd. Joe s Balcarce 50 Bar (Bar, Moe, Maple St) (Bar, Cito, River Rd.) (Bar, Joe s, Balcarce 50) (Vende, Moe, Duff.25) (Vende, Cito, Quilmes, 35) (Vende, Joe s, Miller, 27.5) (Vende, Joe s, Bud, 25)

Implementar la Junta del Algebra Relacional -Map Bar Cerveza Precio Moe Duff 25 Cito Quilmes 35 Joe s Miller 27.5 Joe s Bud 25 Vende Bar Moe Cito Dirección Maple St River Rd. Joe s Balcarce 50 Bar (Bar, Moe, Maple St) (Bar, Cito, River Rd.) (Bar, Joe s, Balcarce 50) (Vende, Moe, Duff.25) (Vende, Cito, Quilmes, 35) (Vende, Joe s, Miller, 27.5) (Vende, Joe s, Bud, 25)

Implementar la Junta del Algebra Relacional -Map Bar Cerveza Precio Moe Duff 25 Cito Quilmes 35 Joe s Miller 27.5 Joe s Bud 25 Vende Bar Moe Cito Dirección Maple St River Rd. Joe s Balcarce 50 Bar (Bar, Moe, Maple St) (Bar, Cito, River Rd.) (Bar, Joe s, Balcarce 50) (Vende, Moe, Duff.25) (Vende, Cito, Quilmes, 35) (Vende, Joe s, Miller, 27.5) (Vende, Joe s, Bud, 25)

Implementar la Junta del Algebra Relacional -Map Bar Cerveza Precio Moe Duff 25 Cito Quilmes 35 Joe s Miller 27.5 Joe s Bud 25 Vende Bar Moe Cito Dirección Maple St River Rd. Joe s Balcarce 50 Bar (Bar, Moe, Maple St) (Bar, Cito, River Rd.) (Bar, Joe s, Balcarce 50) (Vende, Moe, Duff.25) (Vende, Cito, Quilmes, 35) (Vende, Joe s, Miller, 27.5) (Vende, Joe s, Bud, 25)

Implementar la Junta del Algebra Relacional -Map Bar Cerveza Precio Moe Duff 25 Cito Quilmes 35 Joe s Miller 27.5 Joe s Bud 25 Vende Bar Moe Cito Dirección Maple St River Rd. Joe s Balcarce 50 Bar (Bar, Moe, Maple St) (Bar, Cito, River Rd.) (Bar, Joe s, Balcarce 50) (Vende, Moe, Duff.25) (Vende, Cito, Quilmes, 35) (Vende, Joe s, Miller, 27.5) (Vende, Joe s, Bud, 25)

Implementar la Junta del Algebra Relacional -Map Bar Cerveza Precio Moe Duff 25 Cito Quilmes 35 Joe s Miller 27.5 Joe s Bud 25 Vende Bar Moe Cito Dirección Maple St River Rd. Joe s Balcarce 50 Bar (Bar, Moe, Maple St) (Bar, Cito, River Rd.) (Bar, Joe s, Balcarce 50) (Vende, Moe, Duff.25) (Vende, Cito, Quilmes, 35) (Vende, Joe s, Miller, 27.5) (Vende, Joe s, Bud, 25)

Implementar la Junta del Algebra Relacional -Map Bar Cerveza Precio Moe Duff 25 Cito Quilmes 35 Joe s Miller 27.5 Joe s Bud 25 Vende Bar Moe Cito Dirección Maple St River Rd. Joe s Balcarce 50 Bar (Bar, Moe, Maple St) (Bar, Cito, River Rd.) (Bar, Joe s, Balcarce 50) (Vende, Moe, Duff.25) (Vende, Cito, Quilmes, 35) (Vende, Joe s, Miller, 27.5) (Vende, Joe s, Bud, 25)

Implementar la Junta del Algebra Relacional - Map (Bar, Moe, Maple St) (Bar, Cito, River Rd.) (Bar, Joe s, Balcarce 50) (Vende, Moe, Duff.25) (Vende, Cito, Quilmes, 35) (Vende, Joe s, Miller, 27.5) (Vende, Joe s, Bud, 25) key= Moe values= (Bar, Moe, Maple St) key= Cito values= (Bar, Cito, River Rd.) key= Joe s values= (Bar, Joe s, Balcarce 50) key= Moe values= (Vende, Moe, Duff, 25) key= Cito values= (Vende, Cito, Quilmes,35) key= Joe s values= (Vende, Joe s, Miller,27.5) key= Joe s values= (Vende, Joe s, Bud,25)

Junta. Que hace el Reduce? key= Cito values=[ (Bar, Cito, River Rd.),(Vende, Cito, Quilmes, 35)] key= Joe s values=[ (Bar, Joe s,balcarce 50),(Vende, Joe s, Miller, 27.5),(Vende, Joe s, Bud, 25)]

Junta. Que hace el Reduce? key= Cito values=[ (Bar, Cito, River Rd.),(Vende, Cito, Quilmes, 35)] ( Cito, Quilmes, 35., River Rd) key= Joe s values=[ (Bar, Joe s,balcarce 50),(Vende, Joe s, Miller, 27.5),(Vende, Joe s, Bud, 25)]

Junta. Que hace el Reduce? key= Cito values=[ (Bar, Cito, River Rd.),(Vende, Cito, Quilmes, 35)] ( Cito, Quilmes, 35., River Rd) key= Joe s values=[ (Bar, Joe s,balcarce 50),(Vende, Joe s, Miller, 27.5),(Vende, Joe s, Bud, 25)] (Joe s, Miller, 27.5., Balcarce 50) (Joe s, Bud, 25., Balcarce 50)

Junta Resumen Sean las relaciones R(a, b) y S(b, c) computar R S Función Map Para cada tupla (a, b) de R producir el par clave-valor b, (R, a) Para cada tupla (b, c) de S producir el par clave-valor b, (S, c)

Junta Resumen Sean las relaciones R(a, b) y S(b, c) computar R S Función Map Para cada tupla (a, b) de R producir el par clave-valor b, (R, a) Para cada tupla (b, c) de S producir el par clave-valor b, (S, c) Función Reduce Para cada valor de b Recibe una lista de pares (R, a), (S, c) Produce para cada entrada una valor de la forma (a, b, c), La clave es irrelevante.

Map-Reduce: MongoDB

Map-Reduce: MongoDB

Key-Value

Origen Dynamo-Amazon Giuseppe DeCandia, et al., Dynamo: Amazon s highly available key-value store. In Proceedings of twentyfirst ACM SIGOPS symposium on Operating systems principles (SOSP 07). ACM, New York, NY, USA,

Key-Value Diccionario o array asociativo Key-Value: Namespaces o Buckets In-Memory vs On-Disk Características Simples Escalables Veloces.

Claves? Bases relacionales: Garantizar la inmutabilidad de la la clave primaria. Se usan claves sin significado. Key-Value No hay columnas, no hay manera de saber el significado de un valor excepto dándole semántica a la clave. Cart[12387] = SKUAK8912j4 CustName[12387] = Katherine Smith

Cómo construir una clave?

Cómo construir una clave? Entity Name + : + Entity Identifier + : + Entity Attribute Cliente : 12345678 : Apellido Producto : SKU110 : Nombre Dependiendo de la BD hay soporte para varios tipos en los valores. Redis soporta valores de: Strings, Lists, Sets, Sorted sets, Hashes, Bit Arrays Keys en Redis son binary safe Ojo: las claves sirven también para organizar valores en múltiples servers

Key-Value: Keys Usar nombres significativos y no ambiguos

Key-Value: Keys Usar nombres significativos y no ambiguos Usar partes basadas en rango si se necesita recuperar rangos de valores (enteros, fechas)

Key-Value: Keys Usar nombres significativos y no ambiguos Usar partes basadas en rango si se necesita recuperar rangos de valores (enteros, fechas) Usar un delimitador común ":"

Key-Value: Keys Usar nombres significativos y no ambiguos Usar partes basadas en rango si se necesita recuperar rangos de valores (enteros, fechas) Usar un delimitador común ":" Mantener las claves lo más cortas posibles sin sacrificar las otras características. define getcustattr ( p_id, p_attrname) v_key = cust + : +p_id+ : +p_attrname ; return (AppNameSpace[ v_key ] ) ; define setcustattr ( p_id, p_attrname, p_value ) v_key = cust + : +p_id+ : +p_attrname ; AppNameSpace[ v_key]=p_value

Keys en Oracle NOSQL Key Component Major components (/Smith/Bob/ o /Smith/Patricia/ ) Minor components (/birthdate o /phonenumber)

Keys en Oracle NOSQL Key Component Major components (/Smith/Bob/ o /Smith/Patricia/ ) Minor components /Smith/Bob/-/birthdate /Smith/Bob/-/phonenumber /Smith/Bob/-/image /Smith/Bob/-/userID /Smith/Patricia/-/birthdate /Smith/Patricia/-/phonenumber /Smith/Patricia/-/image /Smith/Patricia/-/userID /Wong/Bill/-/birthdate /Wong/Bill/-/phonenumber /Wong/Bill/-/image /Wong/Bill/-/userID (/birthdate o /phonenumber)

Cómo guardar Valores? String: 1232 NE River Ave, St. Louis, MO Lista: ( 1232 NE River Ave, St. Louis, MO ) JSON: { "Street" : "1232 NE River Ave", "City" : "St. Louis", " State" : "MO"} {username="userpepe", sessionid=12939 4,since=14083187,theme="bluesky"} {"type": "record","namespace": "com.example","name": " UserSession","fields": [ {"name": "username", "type": ["string","null"]}, {"name": "sessionid", "type": "int"}, {"name": "since", "type": "long"}, {"name": "theme", "type": ["string","null"]} ]}

Espacio de Nombres Espacios de nombre permiten evitar conflictos

Tiempo de Vida Venta de tickets. Guardar asientos mientras se procesa la compra.

Agregados Como almacenar agregados?

Agregados Como almacenar agregados? {"type" : "stadium", "condate" :15 Mar 2015, " locdescr " : " Springfield Civic Center", " assgnseat" : " J 38", " starttime " : "17:30", " price " : "$50.00", "perfname" : " National "} {"type" : "small venue", "condate" : 12 Jun 2015, locdescr" : "Plymoth Concert Hall ", " starttime " : "17:30", " price " : "$75.00", " perfname" : "Joshua Redman" } {"type" : "small venue", "condate" : 12 Jun 2015, locdescr" : "Plymoth Concert Hall ", "starttime " : "17:30", " price " : "$75.00", "perfname" : "Joshua Redman" }

Agregados Atómicos ConcertApp[ ticketlog :9888] = {"condate" :15 Mar 2015, "locdescr" : " Springfield Civic Center", "assgnseat" : " J 38"} Vs. ConcertApp[ ticketlog :9888:conDate] = 15 Mar 2015 ConcertApp[ ticketlog :9888: locdescr ] = " Springfield ConcertApp[ ticketlog :9888:assgnSeat ] = " J38" Civic Center"

Indices define addlocassgnseat( p_locdescr, p_seat ) begin v_seatlist = ConcertApp[ p_locdescr ] v_seatlist = append( v_seatlist, p_seat ) ConcertApp[ p_locdescr ] = v_seatlist end; Indices Muchas bases de datos key-value soportan índices. Pero sino es así: se pueden usar indices invertidos.

Ejercicio Indices Diseñar la base de datos para un twitter Se pueden usar como tipos de datos: Json, Hash, Sets HSET usuarios nombre Jhon apellido Doe HGET usuarios nombre = Jhon Se puede usar una operación: INCR key. INCR prox_id = 10

Ejercicio Indices Diseñar la base de datos para un twitter Se pueden usar como tipos de datos: Json, Hash, Sets HSET usuarios nombre Jhon apellido Doe HGET usuarios nombre = Jhon Se puede usar una operación: INCR key. INCR prox_id = 10 Qué entidades?

Ejercicio Indices Diseñar la base de datos para un twitter Se pueden usar como tipos de datos: Json, Hash, Sets HSET usuarios nombre Jhon apellido Doe HGET usuarios nombre = Jhon Se puede usar una operación: INCR key. INCR prox_id = 10 Qué entidades? Usuarios

Ejercicio Indices Diseñar la base de datos para un twitter Se pueden usar como tipos de datos: Json, Hash, Sets HSET usuarios nombre Jhon apellido Doe HGET usuarios nombre = Jhon Se puede usar una operación: INCR key. INCR prox_id = 10 Qué entidades? Usuarios Seguidores

Ejercicio Indices Diseñar la base de datos para un twitter Se pueden usar como tipos de datos: Json, Hash, Sets HSET usuarios nombre Jhon apellido Doe HGET usuarios nombre = Jhon Se puede usar una operación: INCR key. INCR prox_id = 10 Qué entidades? Usuarios Seguidores Siguiendo

Ejercicio Indices Diseñar la base de datos para un twitter Se pueden usar como tipos de datos: Json, Hash, Sets HSET usuarios nombre Jhon apellido Doe HGET usuarios nombre = Jhon Se puede usar una operación: INCR key. INCR prox_id = 10 Qué entidades? Usuarios Seguidores Siguiendo Posts

Ejercicio Indices Diseñar la base de datos para un twitter Se pueden usar como tipos de datos: Json, Hash, Sets HSET usuarios nombre Jhon apellido Doe HGET usuarios nombre = Jhon Se puede usar una operación: INCR key. INCR prox_id = 10 Qué entidades? Usuarios Seguidores Siguiendo Posts Cómo diseñar Claves?