Motores:
-
Sql
- Mysql (Relacional): escalar con réplicas o verticalmente. https://vitess.io/
-
Nosql
- MongoDb (Documentos): escala más fácil.
Cache:
- Redis
- Mencach
- CDNs
Introducción a alta concurrencia
El camino DevOps y los SRE
¿Qué es arquitectura de alta concurrencia?
Escalabilidad
Tipos de escalamiento: vertical y horizontal
Stateless y stateful en alta concurrencia
Resiliencia y pruebas efectivas
Qué métricas usar para escalar
Manejando el tráfico por países
Herramientas
Linux en servidores y lenguajes para alta concurrencia
Manejar usuarios en entornos de staging y production
Orquestadores y serverless en de alta concurrencia
Motores de bases de datos y caché
Uso de las CDN en alta concurrencia
Seguridad
Cómo manejar ataques DDOS en alta concurrencia
Protocolos
gRPC o REST en alta concurrencia
Negocios y casos de uso
Consideraciones de negocio para alta concurrencia y caso de uso
Caso de uso: blog con enfoque en serverless
Conclusiones
Conclusiones
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Pablo Fredrikson
Aportes 9
Preguntas 0
Motores:
Sql
Nosql
Cache:
¿Qué motores de bases de datos son recomendables utilizar para este tipo de aplicaciones?
Podríamos dividir los motores de bases de datos en dos grandes grupos: bases de datos relacionales y bases de datos no relacionales.
El motor principal para las bases de datos relacionales es MySQL, y el motor principal para las bases de datos no relacionales es MongoDB.
La principal diferencia entre una base de datos en cada uno de los motores mencionados anteriormente, es que MongoDB es un gestor de bases de datos orientado a documentos, que por lo tanto tiene un enfoque totalmente diferente en cuanto al almacenamiento de datos. La diferencia fundamental es que mientras todas las filas de una tabla de una tabla MySQL tiene la misma estructura, en MongoDB los documentos no están sujetos a un orden fijo. Las filas de las tablas de MySQL tienen un mismo número de valores (cada uno con los mismos tipos de datos), por su parte, los documentos individuales de MongoDB tienen su propia estructura; de esta manera es posible crear nuevos campos con cualquier valor, mientras que para una base de datos relacional, se necesitaría una re-estructuración completa.
Otra diferencia fundamental que resulta de la comparativa de estos dos tipos de motores de bases de datos, es el enfoque dado a la recuperación de datos: como base de datos NoSQL, MongoDB no utiliza SQL como lenguaje de consulta, disponiendo de su propio lenguaje para el procesamiento de datos; esto permite la comunicación entre MongoDB y el respectivo cliente. Para este fin, la base de datos utiliza los métodos específicos del correspondiente lenguaje de programación del cliente, valiéndose de la ayuda de las librerías que pueden ser descargadas desde su página web oficial.
Al ser un motor de bases de datos no relacional, escalar MongoDB es mucho más fácil, ya que cada parte de datos está hospedada en un shard. Al tener estos shards, podríamos comenzar a crear y agregar más datos y más shards a medida que nuestra aplicación crece. Este no es el caso con un motor de bases de datos relacional.
Escalar un servidor de bases de datos relacional puede ser muy complejo. Posiblemente la única forma de escalar este tipo de servidores de bases de datos es agregando réplicas o escalando verticalmente. Hay algunas soluciones para escalar este tipo de servidores de bases de datos de manera horizontal, pero son complicada y dependen totalmente del equipo de infraestructura.
Una de las herramientas que se pueden utilizar para escalar horizontalmente un servidor de bases de datos relacional, es Vitess, que es una herramienta Open Source que viene de la mano de la CNCF (Cloud Native Computing Foundation), que es una de las aceleradoras que se encargan de fundar proyectos Open Source. Vitess es usado por YouTube para escalar sus servidores MySQL de manera horizontal.
¿Qué tipo de caché es recomendable utilizar?
Aquí, hay dos grandes grupos de caché. Generalmente se utilizan para almacenar sesiones, valores pequeños y sobre todo para la autenticación. Este tipo de caché generalmente es usado porque es muy rápido de acceder y las principales herramientas son Redis y Mencach. Estas herramientas están disponibles en la mayoría de los proveedores y es muy fácil de integrar con cualquier aplicación.
Otro tipo de caché es el caché de internet, como por ejemplo, para permitir que nuestra página web funcione más rápido o se descarguen los archivos estáticos de una manera más rápida para nuestros clientes, y la tecnología más usada son los CDNs (Content Delivery Network).
La herramienta que menciona para escalar el MySQL horizontalmente es Vitess https://vitess.io/.
Los shards son bloques que dividen los documentos, bases de datos en un cluster de MongoDB. https://www.mongodb.com/docs/manual/core/sharded-cluster-shards/
😮 No sabia que el CDN es un tipo de cache. Muy buen dato
Motores de bases de datos
• SQL
MySQL (todas las tablas tienen la misma estructura, sujetos a un orden)
Escalar es muy difícil, puede ser replicando o creciendo verticalmente
Escalar horizontalmente (Vitess)
• NO SQL
Mongo DB (gestor de base de datos orientado a documentos, no están sujetos a un orden)
Mongo DB no utiliza SQL como lenguaje de consulta
Escalar es mucho más fácil
Gracias
Este profesor en 30 segundos me aclaro la diferencia entre db basadas en documentos y sql como en muchisimo tiempo no me habia quedado claro
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?