Arquitectura Comparte Nada con Map Reduce

Clase 18 de 43Curso Profesional de Arquitectura de Software

Resumen

La arquitectura Comparte Nada ofrece una ruta clara para procesar grandes volúmenes de datos sin compartir recursos: cada componente opera con su estado privado y su base de datos privada, evitando bloqueos y casos de contingencia. Esta estrategia mejora la disponibilidad y simplifica decisiones de prioridad al eliminar puntos de unión entre componentes.

¿Qué es la arquitectura comparte nada y cómo reduce la complejidad?

Cuando varios componentes comparten recursos, aumentan las dudas sobre quién tiene prioridad y cómo asegurar la disponibilidad. Comparte Nada propone no compartir nada y así no depender de un punto común. Con esto, cada componente se vuelve autosuficiente: tiene todo lo que necesita para él y solo para él.

  • Componentes con estado privado y base de datos privada.
  • Únicos consumidores de sus propios datos.
  • Sin necesidad de loquear otros recursos.
  • Menos casos de contingencia y un proceso optimizado.

¿Cómo se garantiza el aislamiento de componentes?

El aislamiento se logra asegurando que cada componente tenga su propio conjunto de datos y no requiera leer o escribir en los de otros. Así, se evitan bloqueos y esperas.

  • Sin puntos de unión entre componentes.
  • Independencia de lectura y escritura.
  • Acceso exclusivo a la información necesaria.

¿Cómo aplica map reduce el patrón comparte nada?

En map reduce se trabaja con volúmenes muy grandes de datos, por lo que se particionan y se procesan en batches pequeños de forma agrupada y secuencial. Cada partición se asigna a un componente que la procesa de forma independiente.

  • Se decide una estrategia de partición de datos.
  • Cada componente recibe su porción independiente.
  • Nadie más accede a esa porción durante el procesamiento.

¿Qué ejemplo muestra la partición por nombre?

Con tres componentes, se puede dividir la base de usuarios por rangos de letras: de A a I, de J a O y de P a Z. Cada sub-base queda independizada y asignada a su componente.

  • Cada componente usa su sub-base para él y solo para él.
  • No necesita loquear ni sincronizar con otros.
  • Nadie más accede a esos datos en ese momento.

¿Cuántas particiones conviene usar para optimizar?

Cuantas más particiones haya, mayor paralelismo potencial, siempre que no se necesiten datos de otros procesos. Pasar de tres particiones a ocho o veinte puede acelerar el procesamiento si se mantiene el aislamiento.

  • Aumento de particiones con independencia garantizada.
  • Mejor uso de recursos disponibles.
  • Procesamiento más optimizado sin conflictos.

¿Cuándo usar este patrón y qué habilidades necesitas?

Es un patrón muy puntual: no siempre es sencillo diseñar sistemas que no comparten nada, pero cuando el escenario lo permite, aprovecha al máximo los recursos.

  • Identificar cuándo compartir recursos añade complejidad innecesaria.
  • Definir particiones que no requieran acceso cruzado.
  • Garantizar exclusividad de acceso por componente.
  • Planificar prioridad y disponibilidad sin puntos de unión.

¿Quieres comentar cómo particionarías tus datos o en qué escenario aplicarías Comparte Nada?

      Arquitectura Comparte Nada con Map Reduce