Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Un viaje por Cosmos DB

163 views

Published on

Presentación utilizada durante el web cast para la comunidad code
https://comunidadcode.com/2018-05-17-cosmosdb/

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Un viaje por Cosmos DB

  1. 1. Cosmos DB Leonardo Micheloni @leomicheloni Un paseo por
  2. 2. ¿Quién soy? Leonardo Micheloni @leomicheloni @leomicheloni Argentino en Madrid
  3. 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. 4. Escenario • Existen muchas diferentes herramientas • Diferentes formas de almacenar los datos • Diferentes APIs • Servicios @leomicheloni
  5. 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. 6. Sistemas relacionales RDBMS (clásicos) • En ocasiones se utilizan para algo que no fueron pensados • Key value • JSON • ORM @leomicheloni
  7. 7. Bases de datos NoSQL • Siguen el teorema CAP • Consistency • Availability • Partition tolerance • Solo puedo tener dos en simultáneo @leomicheloni
  8. 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. 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
  10. 10. @leomicheloni
  11. 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. 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
  13. 13. Multiregional failover @leomicheloni
  14. 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. 15. Multimodelo • Soporte para UDF • Trigger • Stored procedures • Binding con Azure functions @leomicheloni
  16. 16. Multi API • Sql Database (Document DB) • MongoDB • Table API • Graph API (Gremlin) • Cassandra @leomicheloni
  17. 17. Soporte multiplataforma • SDKs • .NET • .NET Core • Java • Phyton • Node JS • API REST @leomicheloni
  18. 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. 19. Escalado elástico de rendimiento y almacenamiento • RU (request unit) • SLA 99% @leomicheloni
  20. 20. Tipos de consistencia • Strong • Bounded-staleness • Session • Consistent Prefix • Eventual @leomicheloni
  21. 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. 22. Casos de uso @leomicheloni • Retail apps • Mobile • Web apps • Games • Social apps • Azure!
  23. 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
  24. 24. @leomicheloni https://www.sqlhammer.com/wp-content/uploads/2016/10/demo-god-meme.jpg
  25. 25. Probar Cosmos DB gratis • https://azure.microsoft.com/en-us/try/cosmosdb/ @leomicheloni
  26. 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

×