Download Telefonos
Document related concepts
no text concepts found
Transcript
Acceso a Datos para soluciones altamente escalables usando SQL, NoSQL y Almacenamiento políglota Walter Montes Delgado Most Valuable Professional MCSA, MCSD, MCPD, MCITP, MCT @tewar93 http://waltermontes.com #SQLSat443 Patrocinadores del SQL Saturday Gold Sponsor Bronze Sponsor Geek Sponsor Walter Montes Delgado Solutions Architecture Consultant en Enhance Solutions Microsoft MVP ASP.NET/IIS CR Developers .NET http://waltermontes.com Entrando en contexto ??? 1998 NoSQL 1969 Relational Model Modelos relacionales… Modelos relacionales… Modelos relacionales… Capa de mappeo Bases de datos a entidades Entidades a base de datos Esfuerzo/tiempo Rendimiento Modelos relacionales… Los requerimientos cambian, los procedimientos cambian, ¿y las aplicaciones? Análisis de impacto detallados Crecimiento de cantidad de datos ¿Cientos? Ok ¿Miles? Ummm ¿Millones? … Modelos relacionales… Alta disponibilidad y escalabilidad = altos costos Modelos relacionales… Agilidad y programabilidad Flexibilidad Rendimiento y escalabilidad Disponibilidad Modelos relacionales… Rendimiento y escalabilidad Scale up Aumentar proporcionalmente Scale out Escalar horizontalmente Internet Usuarios concurrentes Volúmenes de tráfico Más datos a capturar Globalización Nube No estructura No sólo SQL Llave/Valor Grafos Escalable No Relacional No SQL Documentos Internet BigData Agilidad Columna-Familia ¿Qué es NoSQL? No sólo SQL (relacional) ¿Entonces cómo se almacenan datos? Almacenamiento Llave/Valor (key/value store) Bases de datos de Documentos (document databases) Bases de datos Columna-Familia (column-family database) Bases de datos de Gráfos (graph databases) Almacenamiento Llave/Valor Tablas de Hash 18 | Almacenamiento Llave/Valor 0 1 Función Hash 2 3 4 5 Toma la primera letra de la llave Almacenamiento Llave/Valor Insert Key: Amarillo 0 1 Función Hash 2 3 4 5 Resultado: Posición 0 Almacenamiento Llave/Valor Search Key: Dorado Función Hash 0 Amarillo 1 Blanco 2 Café 3 4 5 Resultado: Posición 3 Almacenamiento Llave/Valor Insert Key: Azul Función Hash 0 Amarillo 1 Blanco 2 Café 3 4 5 Colisión Azul Almacenamiento Llave/Valor n Insert Key: Ámbar Función Hash 0 Amarillo 1 Blanco 2 Café Azul Ámbar k 3 4 5 Colisión n=10 k=1,000 10,000 microsegundos 0.01 segundos n=10 k=1 10 microsegundos 0.00001 segundos O(n/k) O(n) Bases de datos de Documentos Documento: colección de campos nombrados y valores XML, YAML, JSON, BSON Bases de datos de Documentos Participantes PK ParticipacionCharlas Charlas PK CharlaId Cedula PK ParticipacionCharlaId Nombre FK ParticipanteId Titulo ApellidoMaterno FK CharlaId HoraInicio FK ApellidoPaterno CedulaExpositor FechaNacimiento EmpresaId TelefonosParticipantes Expositores PK Cedula EmpresasParticipantes Nombre PK TelefonoId FK CedulaParticipante PK EmpresaId ApellidoMaterno Nombre ApellidoPaterno Telefono TipoTelefonoId Bases de datos de Documentos Participantes PK Cedula Nombre ApellidoMaterno ApellidoPaterno FechaNacimiento EmpresaId TelefonosParticipantes PK TelefonoId FK CedulaParticipante Telefono TipoTelefonoId EmpresasParticipantes PK EmpresaId Nombre Base de datos de Documentos Identificador Valor 1234 { Cedula:”1000000”, Nombre: { Nombre: “Walter”, ApellidoMaterno: “Montes”, ApellidoPaterno: “Delgado” }, FechaNacimiento: { Anno:0000, Mes: 00, Dia: 00 }, Telefonos:{ [ { Telefono: “1111-2222”, TipoTelefono:”Cel” }, { Telefono: “1111-4444”, TipoTelefono:”Casa” } ] }, EmpresaId: 1 } 1235 … Bases de datos Columna-Familia Denormalización Bases de datos Columna-Familia Bases de datos Columna-Familia Bases de datos de gráfos Relaciones de las entidades Nodos (nodes) y bordes (edges) Consultas y analizar relaciones entre entidades Bases de datos de gráfos Bases de datos de gráfos Importante Agregados siempre en mente Como se consultarán los datos Como se procesará la información en las operaciones 34 | ¿CÓMO FUNCIONA EN UN MUNDO REAL? Algunos problemas comunes en sistemas distribuidos Alta Disponibilidad Escalabilidad y reducción de latencia de red ¿Consistencia eventual? No uniformidad y esquemas Alta disponibilidad SQL No SQL Consistencia Disponibilidad Clustering Altos recursos Consistencia – baja prioridad Eventualmente consistente Alta disponibilidad SQL No SQL Consistencia Disponibilidad Clustering Altos recursos Consistencia – baja prioridad Eventualmente consistente Alta disponibilidad Primary/Secondary Replication y Peer to Peer Replication Alta disponibilidad Primary/Secondary Replication 1 Insertar 2 Confirmar Application1 4 Replicar Primary Secondary Alta disponibilidad Peer to Peer Replication 1 Insertar 2 Confirmar Application1 Peer1 Replicar 1 Insertar 2 Confirmar Application2 Peer2 Escalabilidad y reducir la latencia de red Diseñar con agregados y sharding en mente Distribución geográfica Tipos de Sharding Shared Nothing Auto Sharding Escalabilidad y reducir la latencia de red ¿Porqué Sharding es más sencillo en noSQL? Usuarios Telefonos Id Nombre Apellido Apellido2 Id 1 Linus Benedict Torvalds 134 1 1234-1234 Cel 2 William Gates III 135 2 2555-564 Cel 3 Shakira Mebarak Ripoll 136 3 7896-1235 Cel 137 3 5555-5547 Home UserId Telefono Tipo Escalabilidad y reducir la latencia de red ¿Porqué Sharding es más sencillo en noSQL? Usuarios Telefonos Id Nombre Apellido 1 Linus Benedict Usuarios Id Nombre Apellido 2 William Gates 3 Shakira Mebarak Apellido2 Id UserId Telefono Torvalds 134 1 1234-1234 Conocer las relaciones de las tablas y datos para Telefonos hacer un sharding Id UserId Telefono Apellido2 adecuado 135 2 2555-564 III Ripoll Tipo Cel Tipo Cel 136 3 7896-1235 Cel 137 3 5555-5547 Home Escalabilidad y reducir la latencia de red ¿Porqué Sharding es más sencillo en noSQL? Usuarios Telefonos Id Nombre Apellido U1 Apellido2 Id UserId Telefono T1 1 Linus Benedict Torvalds 134 1 1234-1234 Tipo Cel Telefonos Usuarios Apellido2 Id William Apellido U2 Gates III 135 2 2555-564 T2 Cel Shakira Mebarak Ripoll 136 3 7896-1235 Cel 137 3 5555-5547 Home Id Nombre 2 3 UserId Telefono Tipo Escalabilidad y reducir la latencia de red ¿Porqué Sharding es más sencillo en noSQL? U1 U2 T1 T2 Escalabilidad y reducir la latencia de red Usando almacenamiento con documentos… Usuarios Usuarios Id: 1, Nombre: Linus, Apellido: Benedict, Apellido2: Torvalds, Telefonos: [ { Telefono:1234-1234, Tipo: Cel } ] Id: 1, Nombre: Linus, Apellido: Benedict, Apellido2: Torvalds, Telefonos: [ { Telefono:1234-1234, Tipo: Cel } ] Id: 2, Nombre: William, Apellido: Gates, Apellido2: III, Telefonos: [ { Telefono:2555-564, Tipo: Cel } ] Id: 1, Nombre: Shakira, Apellido: Mebarak, Apellido2: Ripoll, Telefonos: [ { Telefono:7896-1235, Tipo: Cel }, { Telefono: 5555-5547, Tipo: Home } ] Usuarios Id: 2, Nombre: William, Apellido: Gates, Apellido2: III, Telefonos: [ { Telefono:2555-564, Tipo: Cel } ] Id: 1, Nombre: Shakira, Apellido: Mebarak, Apellido2: Ripoll, Telefonos: [ { Telefono:7896-1235, Tipo: Cel }, { Telefono: 5555-5547, Tipo: Home } ] Escalabilidad y reducir la latencia de red Usando almacenamiento con documentos… Usuarios Usuarios Id: 1, Nombre: Linus, Apellido: Benedict, Apellido2: Torvalds, Telefonos: [ { Telefono:1234-1234, Tipo: Cel } ] Id: 1, Nombre: Linus, Apellido: Benedict, Apellido2: Torvalds, U1 Telefonos: [ { Telefono:1234-1234, Tipo: Cel } ] Id: 2, Nombre: William, Apellido: Gates, Apellido2: III, Telefonos: [ { Telefono:2555-564, Tipo: Cel } ] Id: 1, Nombre: Shakira, Apellido: Mebarak, Apellido2: Ripoll, Telefonos: [ { Telefono:7896-1235, Tipo: Cel }, { Telefono: 5555-5547, Tipo: Home } ] Usuarios Id: 2, Nombre: William, Apellido: Gates, Apellido2: III, Telefonos: [ { Telefono:2555-564, Tipo: Cel } ] U2 Id: 1, Nombre: Shakira, Apellido: Mebarak, Apellido2: Ripoll, Telefonos: [ { Telefono:7896-1235, Tipo: Cel }, { Telefono: 5555-5547, Tipo: Home } ] Escalabilidad y reducir la latencia de red ¿Porqué Sharding es más sencillo en noSQL? U1 U2 Mejorando la consistencia Sharding y replicación aumentan el riesgo de inconsistencias Quórums de lectura y escritura Como un consenso Versionar datos y resolver conflictos Mejorando la consistencia - Quórums de lectura { Nombre: Walter , Apellido: Montes } { Nombre: Walter , Apellido: Montes } Db.users.findOne( {Id:1} ) { Nombre: Walter , Apellido: Montes } Read Quorum Mejorando la consistencia - Quórums de escritura Db.users.insert( {Nombre: Walter , Apellido: Montes } ) Ok, estoy listo Esperando... Ok, estoy listo Write Quorum Versionar datos y resolver conflictos 4. Update object Escenario común Bloqueo pesimista Bloqueo optimista App1 1. Find(1) 3. Update Object App2 2. Find(1) Database Versionar datos y resolver conflictos Bloqueo optimista 1. Obtiene el dato y la versión 2. Si intenta actualizar verifica la versión 3. Si no ha cambiado actualiza 4. Si cambió, retorna los datos actuales y retorna antes del paso 2 Identificador y timestamp Versionar datos y resolver conflictos Problemas de sincronización de horarios Viernes 25 de Abril, 4:25am Jueves 24 de Abril, 1:25pm Versionar datos y resolver conflictos – Vector Clocks Vector Clocks App1 App2 Insertar A:1 Server:A Server:B Versionar datos y resolver conflictos – Vector Clocks Vector Clocks App1 App2 A:1 A:1 A:1 Sincroniza Server:A Server:B Versionar datos y resolver conflictos – Vector Clocks Vector Clocks App1 App2 Modifica Modifica A:2 Server:A A:1, B:1 Server:B Versionar datos y resolver conflictos – Vector Clocks Vector Clocks App1 App2 A:2 A:1, B:1 Conflicto Sincronizar Server:A Server:B No uniformidad y esquemas “Diseño de la base de datos” Crear columnas con tipos de datos, rangos, si permite o no nulos, etc Depende Depende Cambia No uniformidad y esquemas Con noSQL y sin esquema… Depende Depende Se actualiza sin problemas Cambia ¿Puedo usar NoSQL siempre? Usos comunes de NoSQL… Almacenamiento de sesiones y perfiles de usuario (preferencias) Contenido y metadatos Móviles Caché (búsquedas populares, objetos, páginas) E-Commerce Juegos y aplicaciones cambiantes Análisis y almacenamiento de datos sociales Servidores Llave/Valor Servidores Documentos Servidores Columna-Familia Servidores Gráfos No SQL SOLUCIONES POLIGLOTAS Soluciones políglotas Demostración DocumentDB ESTUDIANTES SQL Azure DISTRIBUCIÓN AULAS Table Storage AULAS PREGUNTAS Y RESPUESTAS contacto @waltermontes.com Walter Montes Delhado waltermontes.com @tewar93 Evaluaciones Evaluacion del evento http://www.sqlsaturday.com/443/eventeval.aspx Evaluacion de las charlas http://www.sqlsaturday.com/443/sessions/sessionevaluation.aspx Proxima sesion Titulo proxima conferencia