Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Motores de bases de datos y caché

11/17
Recursos

Aportes 5

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Motores:

  • Sql

  • Nosql

    • MongoDb (Documentos): escala más fácil.

Cache:

  • Redis
  • Mencach
  • CDNs

La herramienta que menciona para escalar el MySQL horizontalmente es Vitess https://vitess.io/.

¿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).

😮 No sabia que el CDN es un tipo de cache. Muy buen dato

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/