SlideShare una empresa de Scribd logo
1 de 26
Cosmos DB Leonardo Micheloni
@leomicheloni
Un paseo por
¿Quién soy?
Leonardo Micheloni
@leomicheloni
@leomicheloni
Argentino en Madrid
Escenario
• Hoy en día es cada vez más común tener aplicaciones distribuidas
• Demanda todo el día
• Esto presenta desafíos diferentes a los acostumbrados
• Latencia
• Disponibilidad
• Escalamiento
• Único punto de falla
@leomicheloni
Escenario
• Existen muchas diferentes herramientas
• Diferentes formas de almacenar los datos
• Diferentes APIs
• Servicios
@leomicheloni
Sistemas relacionales RDBMS (clásicos)
• Son excelentes para modelos relacionales
• Siguen el teorema ACID
• Atomicidad
• Consistencia
• Aislamiento
• Durabilidad
• Son muy confiables y muy rápidos
• Pueden presentar problemas en sistemas distribuidos
@leomicheloni
Sistemas relacionales RDBMS (clásicos)
• En ocasiones se utilizan para algo que no fueron pensados
• Key value
• JSON
• ORM
@leomicheloni
Bases de
datos NoSQL
• Siguen el teorema CAP
• Consistency
• Availability
• Partition tolerance
• Solo puedo tener dos
en simultáneo
@leomicheloni
NoSQL
• Modelos
• Key Value
• Columnas
• Documentos
• Grafos
• Cada elemento es independiente
• Tiene su propio esquema
• Lo ideal es usar el más adecuado para nuestro requisito
@leomicheloni
Algunos ejemplos de NoSQL
• MongoDB
• Basada en documentos
• Ebay, GAP, Chicago Police, Under Armour, HSBC, McAfee, Adobe
• Lenguaje de consulta "basado en JSON"
• Cassandra (Facebook inbox search)
• Bigtable
• GoDaddy, Reddit, Weather Channel, Apple (75K nodos, 10PB)
• Cassandra Query Language (CQL)
• GraphDB
• Grafos
• Walmart, Cisco, Microsoft, Medium.
• Gremlin API
@leomicheloni
@leomicheloni
• NoSql Database as a service
• Multi region replication
• Manual and automatic failover
• Multi model
• Multi API
• Intuitive consistency level
• Designed for high availability
@leomicheloni
Global distribution
• Replicación automática alrededor
del mundo con un click
• Una sola colección particionada y
distribuida en varias regiones
• Geovallado basado en directivas
• Selección del mejor nodo
automática
@leomicheloni
Multiregional failover
@leomicheloni
Multimodelo
• Cosmos DB permite guardar los datos en diferentes formatos
• Documentos
• Grafos
• Clave / valor
• Indexa automáticamente todos los campos
• TTL a nivel documento
@leomicheloni
Multimodelo
• Soporte para UDF
• Trigger
• Stored procedures
• Binding con Azure functions
@leomicheloni
Multi API
• Sql Database (Document DB)
• MongoDB
• Table API
• Graph API (Gremlin)
• Cassandra
@leomicheloni
Soporte multiplataforma
• SDKs
• .NET
• .NET Core
• Java
• Phyton
• Node JS
• API REST
@leomicheloni
Escalado elástico de rendimiento y
almacenamiento
• Es posible cambiar en cualquier
momento
• Es posible hacerlo por código
• Es transparente para las aplicaciones
• Cosmos DB se encarga de conectar al
nodo más adecuado
@leomicheloni
Escalado elástico de rendimiento y
almacenamiento
• RU (request unit)
• SLA 99%
@leomicheloni
Tipos de consistencia
• Strong
• Bounded-staleness
• Session
• Consistent Prefix
• Eventual
@leomicheloni
Tipos de consistencia
• Strong: El más transaccional, las lecturas siempre retornan la última versión de los datos, en
este caso no se puede asociar a más de una región.
• Bounded Staleness: Las lecturas están detrás de las escrituras k prefijos (o versiones) o un
intervalo de tiempo definido
• Session: Ofrece consistencia para un cliente determinado.
• Consistent Prefix: En caso de escribirse A, B y C, los clientes leeran A o A, B, o A,B y C, pero
nunca mezaclados.
• Eventual: El modelo asegura lecturas inmediatas pero ningún nivel de consistencia inmediata,
solo que eventualmente todos los clientes verán las mismas escritura.
Al definir un nivel de consistencia definimos el nivel por defecto, sin embargo podemos utilizar
un nivel de consistencia diferente en cada lectura, lo cual aporta aún más flexibilidad.
@leomicheloni
Casos de uso
@leomicheloni
• Retail apps
• Mobile
• Web apps
• Games
• Social apps
• Azure!
¿Cómo saber si elegir Cosmos DB?
• Si los datos cambian mucho, sin importar si es esquema o keyvalue
• Si tenemos muchas transacciones por segundo
• Si hay una enorme cantidad de datos
• Si estamos usando el RDBMS para cosas “extrañas”
• En general todos aquellos escenarios para los que los RDBMS no
son buenos
• Pueden convivir!
@leomicheloni
@leomicheloni
https://www.sqlhammer.com/wp-content/uploads/2016/10/demo-god-meme.jpg
Probar Cosmos DB gratis
• https://azure.microsoft.com/en-us/try/cosmosdb/ @leomicheloni
Referencias
• https://azure.microsoft.com/en-us/services/cosmos-db/
• https://docs.microsoft.com/es-es/azure/cosmos-db/distribute-
data-globally
• https://docs.microsoft.com/en-us/azure/cosmos-db/consistency-
levels
• https://docs.microsoft.com/en-us/azure/cosmos-db/20-days-of-tips
• https://azure.microsoft.com/en-us/try/cosmosdb/
• https://www.youtube.com/watch?v=4fRKzcU__jY
• https://github.com/afhaque/MeanMapAppV2.0
@leomicheloni

Más contenido relacionado

Similar a Un viaje por Cosmos DB

Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Ricard Clau
 
Aplicaciones móviles super-escalables
Aplicaciones móviles super-escalablesAplicaciones móviles super-escalables
Aplicaciones móviles super-escalablesSergio Borromei
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAlberto Gimeno
 
Introducción a NoSQL
Introducción a NoSQLIntroducción a NoSQL
Introducción a NoSQLCycle-IT
 
Flowics - Jornada en Big Data 2016 - ITBA
Flowics - Jornada en Big Data 2016 - ITBA Flowics - Jornada en Big Data 2016 - ITBA
Flowics - Jornada en Big Data 2016 - ITBA Andres Moratti
 
Arquitectura de las nuevas aplicaciones web: Como lograr escalabilidad, alta ...
Arquitectura de las nuevas aplicaciones web: Como lograr escalabilidad, alta ...Arquitectura de las nuevas aplicaciones web: Como lograr escalabilidad, alta ...
Arquitectura de las nuevas aplicaciones web: Como lograr escalabilidad, alta ...Miguel Gallardo
 
Polybase
PolybasePolybase
PolybaseSolidQ
 
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQLDesarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQLRoanny Lamas
 
Grails, opción real y escalable para sitios web de alta carga
Grails, opción real y escalable para sitios web de alta cargaGrails, opción real y escalable para sitios web de alta carga
Grails, opción real y escalable para sitios web de alta cargaDomingo Suarez Torres
 

Similar a Un viaje por Cosmos DB (20)

Codemotion cosmosdb
Codemotion cosmosdbCodemotion cosmosdb
Codemotion cosmosdb
 
Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2
 
Aplicaciones móviles super-escalables
Aplicaciones móviles super-escalablesAplicaciones móviles super-escalables
Aplicaciones móviles super-escalables
 
Sistema de Bases de Datos AWS
Sistema de Bases de Datos AWSSistema de Bases de Datos AWS
Sistema de Bases de Datos AWS
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
 
Servicios de Bases de Datos de AWS
Servicios de Bases de Datos de AWSServicios de Bases de Datos de AWS
Servicios de Bases de Datos de AWS
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Introducción a NoSQL
Introducción a NoSQLIntroducción a NoSQL
Introducción a NoSQL
 
Webinar Oracle GoldenGate
Webinar Oracle GoldenGate Webinar Oracle GoldenGate
Webinar Oracle GoldenGate
 
Flowics - Jornada en Big Data 2016 - ITBA
Flowics - Jornada en Big Data 2016 - ITBA Flowics - Jornada en Big Data 2016 - ITBA
Flowics - Jornada en Big Data 2016 - ITBA
 
Arquitectura de las nuevas aplicaciones web: Como lograr escalabilidad, alta ...
Arquitectura de las nuevas aplicaciones web: Como lograr escalabilidad, alta ...Arquitectura de las nuevas aplicaciones web: Como lograr escalabilidad, alta ...
Arquitectura de las nuevas aplicaciones web: Como lograr escalabilidad, alta ...
 
Act4 bd teo
Act4 bd teoAct4 bd teo
Act4 bd teo
 
Video_MartinFowler.pptx
Video_MartinFowler.pptxVideo_MartinFowler.pptx
Video_MartinFowler.pptx
 
Video_MartinFowler.pptx
Video_MartinFowler.pptxVideo_MartinFowler.pptx
Video_MartinFowler.pptx
 
Polybase
PolybasePolybase
Polybase
 
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQLDesarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
 
Servicios de Storage en AWS
Servicios de Storage en AWSServicios de Storage en AWS
Servicios de Storage en AWS
 
Grails, opción real y escalable para sitios web de alta carga
Grails, opción real y escalable para sitios web de alta cargaGrails, opción real y escalable para sitios web de alta carga
Grails, opción real y escalable para sitios web de alta carga
 
Introducción a Big Data en AWS
Introducción a Big Data en AWSIntroducción a Big Data en AWS
Introducción a Big Data en AWS
 
Desayuno de arquitectos: Big data en azure
Desayuno de arquitectos: Big data en azureDesayuno de arquitectos: Big data en azure
Desayuno de arquitectos: Big data en azure
 

Más de Leonardo Micheloni

Más de Leonardo Micheloni (15)

Docker_K8S_lecciones_netcoreconf_2022.pdf
Docker_K8S_lecciones_netcoreconf_2022.pdfDocker_K8S_lecciones_netcoreconf_2022.pdf
Docker_K8S_lecciones_netcoreconf_2022.pdf
 
Docker dotnet netbaires
Docker dotnet netbairesDocker dotnet netbaires
Docker dotnet netbaires
 
Mas alla de javascript con typescript
Mas alla de javascript con typescriptMas alla de javascript con typescript
Mas alla de javascript con typescript
 
Workshop clean code javascript
Workshop clean code javascriptWorkshop clean code javascript
Workshop clean code javascript
 
2019 commit solid typescript
2019 commit solid typescript2019 commit solid typescript
2019 commit solid typescript
 
Solid con typescript
Solid con typescriptSolid con typescript
Solid con typescript
 
Tdd desde las trincheras
Tdd desde las trincherasTdd desde las trincheras
Tdd desde las trincheras
 
Docker Dotnet Málaga
Docker Dotnet MálagaDocker Dotnet Málaga
Docker Dotnet Málaga
 
Pipeline continuo con VSTS Azure DevOps
Pipeline continuo con VSTS Azure DevOpsPipeline continuo con VSTS Azure DevOps
Pipeline continuo con VSTS Azure DevOps
 
Docker for losers
Docker for losersDocker for losers
Docker for losers
 
Clean code javascript + live coding
Clean code javascript + live codingClean code javascript + live coding
Clean code javascript + live coding
 
Esp8266 iothub Azure data analysis in real time
Esp8266 iothub Azure data analysis in real timeEsp8266 iothub Azure data analysis in real time
Esp8266 iothub Azure data analysis in real time
 
Clean code javascript
Clean code javascriptClean code javascript
Clean code javascript
 
Tdd y pair programming
Tdd y pair programmingTdd y pair programming
Tdd y pair programming
 
Blockchain, smart contracts y azure
Blockchain, smart contracts y azureBlockchain, smart contracts y azure
Blockchain, smart contracts y azure
 

Último

DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJODIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJOJimyAMoran
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEduardoBriones22
 
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfCONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfwduranteg
 
ingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptxingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptxjhorbycoralsanchez
 
libro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operacioneslibro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operacionesRamon Bartolozzi
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaAlexanderimanolLencr
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCarlosGabriel96
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfs7yl3dr4g0n01
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.pptjacnuevarisaralda22
 
Trazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptxTrazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptxmiguelmateos18
 
Matrices Matemáticos universitario pptx
Matrices  Matemáticos universitario pptxMatrices  Matemáticos universitario pptx
Matrices Matemáticos universitario pptxNancyJulcasumaran
 
2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologicaJUDITHYEMELINHUARIPA
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZgustavoiashalom
 
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVOESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVOeldermishti
 
Sesion 03 Formas de absorcion de agua.pptx
Sesion 03 Formas de absorcion de agua.pptxSesion 03 Formas de absorcion de agua.pptx
Sesion 03 Formas de absorcion de agua.pptxMarcosAlvarezSalinas
 
Sistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptxSistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptx170766
 
Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5juanjoelaytegonzales2
 
Desigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfDesigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfRonaldLozano11
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDEdith Puclla
 
Sistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión internaSistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión internamengual57
 

Último (20)

DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJODIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
 
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfCONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
 
ingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptxingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptx
 
libro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operacioneslibro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operaciones
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdf
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt
 
Trazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptxTrazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptx
 
Matrices Matemáticos universitario pptx
Matrices  Matemáticos universitario pptxMatrices  Matemáticos universitario pptx
Matrices Matemáticos universitario pptx
 
2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
 
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVOESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
 
Sesion 03 Formas de absorcion de agua.pptx
Sesion 03 Formas de absorcion de agua.pptxSesion 03 Formas de absorcion de agua.pptx
Sesion 03 Formas de absorcion de agua.pptx
 
Sistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptxSistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptx
 
Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5
 
Desigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfDesigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdf
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCD
 
Sistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión internaSistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión interna
 

Un viaje por Cosmos DB

  • 1. Cosmos DB Leonardo Micheloni @leomicheloni Un paseo por
  • 3. Escenario • Hoy en día es cada vez más común tener aplicaciones distribuidas • Demanda todo el día • Esto presenta desafíos diferentes a los acostumbrados • Latencia • Disponibilidad • Escalamiento • Único punto de falla @leomicheloni
  • 4. Escenario • Existen muchas diferentes herramientas • Diferentes formas de almacenar los datos • Diferentes APIs • Servicios @leomicheloni
  • 5. Sistemas relacionales RDBMS (clásicos) • Son excelentes para modelos relacionales • Siguen el teorema ACID • Atomicidad • Consistencia • Aislamiento • Durabilidad • Son muy confiables y muy rápidos • Pueden presentar problemas en sistemas distribuidos @leomicheloni
  • 6. Sistemas relacionales RDBMS (clásicos) • En ocasiones se utilizan para algo que no fueron pensados • Key value • JSON • ORM @leomicheloni
  • 7. Bases de datos NoSQL • Siguen el teorema CAP • Consistency • Availability • Partition tolerance • Solo puedo tener dos en simultáneo @leomicheloni
  • 8. NoSQL • Modelos • Key Value • Columnas • Documentos • Grafos • Cada elemento es independiente • Tiene su propio esquema • Lo ideal es usar el más adecuado para nuestro requisito @leomicheloni
  • 9. Algunos ejemplos de NoSQL • MongoDB • Basada en documentos • Ebay, GAP, Chicago Police, Under Armour, HSBC, McAfee, Adobe • Lenguaje de consulta "basado en JSON" • Cassandra (Facebook inbox search) • Bigtable • GoDaddy, Reddit, Weather Channel, Apple (75K nodos, 10PB) • Cassandra Query Language (CQL) • GraphDB • Grafos • Walmart, Cisco, Microsoft, Medium. • Gremlin API @leomicheloni
  • 11. • NoSql Database as a service • Multi region replication • Manual and automatic failover • Multi model • Multi API • Intuitive consistency level • Designed for high availability @leomicheloni
  • 12. Global distribution • Replicación automática alrededor del mundo con un click • Una sola colección particionada y distribuida en varias regiones • Geovallado basado en directivas • Selección del mejor nodo automática @leomicheloni
  • 14. Multimodelo • Cosmos DB permite guardar los datos en diferentes formatos • Documentos • Grafos • Clave / valor • Indexa automáticamente todos los campos • TTL a nivel documento @leomicheloni
  • 15. Multimodelo • Soporte para UDF • Trigger • Stored procedures • Binding con Azure functions @leomicheloni
  • 16. Multi API • Sql Database (Document DB) • MongoDB • Table API • Graph API (Gremlin) • Cassandra @leomicheloni
  • 17. Soporte multiplataforma • SDKs • .NET • .NET Core • Java • Phyton • Node JS • API REST @leomicheloni
  • 18. Escalado elástico de rendimiento y almacenamiento • Es posible cambiar en cualquier momento • Es posible hacerlo por código • Es transparente para las aplicaciones • Cosmos DB se encarga de conectar al nodo más adecuado @leomicheloni
  • 19. Escalado elástico de rendimiento y almacenamiento • RU (request unit) • SLA 99% @leomicheloni
  • 20. Tipos de consistencia • Strong • Bounded-staleness • Session • Consistent Prefix • Eventual @leomicheloni
  • 21. Tipos de consistencia • Strong: El más transaccional, las lecturas siempre retornan la última versión de los datos, en este caso no se puede asociar a más de una región. • Bounded Staleness: Las lecturas están detrás de las escrituras k prefijos (o versiones) o un intervalo de tiempo definido • Session: Ofrece consistencia para un cliente determinado. • Consistent Prefix: En caso de escribirse A, B y C, los clientes leeran A o A, B, o A,B y C, pero nunca mezaclados. • Eventual: El modelo asegura lecturas inmediatas pero ningún nivel de consistencia inmediata, solo que eventualmente todos los clientes verán las mismas escritura. Al definir un nivel de consistencia definimos el nivel por defecto, sin embargo podemos utilizar un nivel de consistencia diferente en cada lectura, lo cual aporta aún más flexibilidad. @leomicheloni
  • 22. Casos de uso @leomicheloni • Retail apps • Mobile • Web apps • Games • Social apps • Azure!
  • 23. ¿Cómo saber si elegir Cosmos DB? • Si los datos cambian mucho, sin importar si es esquema o keyvalue • Si tenemos muchas transacciones por segundo • Si hay una enorme cantidad de datos • Si estamos usando el RDBMS para cosas “extrañas” • En general todos aquellos escenarios para los que los RDBMS no son buenos • Pueden convivir! @leomicheloni
  • 25. Probar Cosmos DB gratis • https://azure.microsoft.com/en-us/try/cosmosdb/ @leomicheloni
  • 26. Referencias • https://azure.microsoft.com/en-us/services/cosmos-db/ • https://docs.microsoft.com/es-es/azure/cosmos-db/distribute- data-globally • https://docs.microsoft.com/en-us/azure/cosmos-db/consistency- levels • https://docs.microsoft.com/en-us/azure/cosmos-db/20-days-of-tips • https://azure.microsoft.com/en-us/try/cosmosdb/ • https://www.youtube.com/watch?v=4fRKzcU__jY • https://github.com/afhaque/MeanMapAppV2.0 @leomicheloni