Cosmos DB es una base de datos NoSQL multimodelo que escala globalmente en Azure. Ofrece diferentes niveles de consistencia y puede almacenar datos como documentos, tablas y grafos. Su facilidad de escalado y baja latencia la hacen útil para aplicaciones globales e IoT. Se puede acceder a Cosmos DB desde Xamarin usando la biblioteca .NET Standard.
2. CULIACAN TECH DAY
¿QUE ES COSMOS DB?
Es una base de datos NoSQL multimodelo que escala infinitamente a nivel global
Se ejecuta en Azure como PaaS
3. CULIACAN TECH DAY
¿POR QUE USARLO?
Facilidad de mantener diferentes versiones de código
Escala mucho más fácil que una BD relacional
Búsquedas con SQL y LINQ (C#)
Modelos de consistencia bien definidos
Geobusquedas integradas
Distribución global a un click
Baja latencia definida (<10 ms 99%)
4. CULIACAN TECH DAY
¿QUIEN USA COSMOS DB?
X-BOX
One Note
Toyota
Domino’s pizza
Jet
Real Madrid
LG
Getwell
8. CULIACAN TECH DAY
CONSISTENCIA STRONG (ALTA)
Las lecturas SIEMPRE devuelven la versión mas reciente del documento
Una escritura solo es visible hasta confirmarse en todas las replicas (sincronamente)
Solo pueden existir en UNA región de Azure
9. CULIACAN TECH DAY
CONSISTENCIA BOUNDED STATELESS
(OBSOLESCENCIA ENTRELAZADA)
Las lecturas tienen un retraso máximo definido
Pueden existir en VARIAS regiones de Azure
La obsolescencia entrelazada proporciona una garantía de coherencia más fuerte que la coherencia de sesión
10. CULIACAN TECH DAY
CONSISTENCIA SESSION (SESIÓN)
Las lecturas SIEMPRE devuelven la versión mas reciente del documento dentro de la sesión del cliente
La consistencia de sesión proporciona consistencia predecible, así como rendimiento de lectura al máximo, así
Pueden existir en VARIAS regiones de Azure
11. CULIACAN TECH DAY
CONSISTENCIA PREFIX (PREFIJO
COHERENTE)
Las lecturas devuelven la versión mas reciente del documento ya que no existan más escrituras
Se garantiza que SIEMPRE se vean las escrituras en el orden que se dieron
Por ejemplo, suponiendo que se escribió A, B, C: Cliente 1
A
Cliente 2
A, C
Cliente 3
A, B, C
Pueden existir en VARIAS regiones de Azure
12. CULIACAN TECH DAY
CONSISTENCIA EVENTUAL
(OCASIONAL)
Las lecturas devuelven la versión mas reciente del documento ya que no existan más escrituras
Las lecturas pueden devolver una la versión mas antigua del documento
Tiene la latencia más baja tanto para escrituras como lecturas
13. CULIACAN TECH DAY
¿CUAL USAR?
Para la mayoría de los escenarios es suficiente el tipo sesión y prefijo coherente
21. CULIACAN TECH DAY
DOCUMENTOS MAS A FONDO
BD Relacional Cosmos DB
Renglones Documentos
Columnas Propiedades
Esquema definido Schema free
Robusto y maduro Simple y ligero
Escala vertical (más
hardware)
Escala horizontal (más
particiones)
22. CULIACAN TECH DAY
¿PORQUE SIN ESQUEMA?
Pros Contras
No se necesita definir tablas
Nada te obliga a cumplir una
estructura
No se necesita mapear
objetos a tablas
Nada te obliga a cumplir
relaciones
Se almacenan objetos como
objetos
Los datos se pueden repetir
Permite más cambios de
código
24. CULIACAN TECH DAY
COSTOS
Se basa en RU/m (Requests units per minute)
El costo es por colección
Cada colección puede almacenar 10Gb (sin necesidad de otra partición)
Una RU se define como como la capacidad de computación requerida para servir una petición
Depende del tamaño del objeto, del tipo de consistencia seleccionada, del query ejecutado, y de el
número de particiones afectadas
27. CULIACAN TECH DAY
PARTICIONES
Una colección tiene como límite 10 Gb
- Colecciones más grandes dene particionarse
- Una colección es una partición
Una estrategia de partición es pensar como se busca la información mas frecuentemente
Con una estrategia de partición correcta se puede escalar infinitamente agregando particiones
Tipos de estrategias de partición:
- Spillover
- Range
- Lookup
28. TEXTO
PARTICIONES - ELEMENTOS CLAVE
Los ID de cada documento debe ser único en todas las colecciones
Es mejor usar un “paritioning resolver” para que se pueda determinar a que colección pertenece el documen
Hay que evitar a toda cosa consultas que sea utilicen multiple colecciones al mismo tiempo (son muy
costosas en RU’s)
Se recomienda definir como clave de partición un elemento que contenga muchos valores distintos (como
mínimo centenas o miles)
Todos los elementos de una partición están fisicamente cerca uno del otro (mismo servidor, misma
región, mismo disco duro)
30. CULIACAN TECH DAY
PARTICION SPILLOVER
No sabemos como va a evolucionar los datos y no hay partición
Usamos la colección hasta que crezca a su limite y se cree una nueva
Mala estrategia para consultas
39. CULIACAN TECH DAY
¿COMO LO USO CON XAMARIN?
Se debe instalar el Nugget Microsoft.Azure.DocumentDB.Core
No hay una versión PCL
Se puede utilizar como una librería .NET Standar o como proyecto compartido