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