Resumen de POD

This GitHub repo has example exercises for the ITBA Distributed Systems course. Develop practical skills and learn key concepts to master distributed systems.

View the Project on GitHub GonzaloHirsch/Programacion-de-Objetos-Distribuidos

Sistemas Distribuidos

Go to Index

Hay muchos diferentes tipos de sistemas distribuidos.

RDBMS

Un RDBMS es un sistema/servicio que permite crear, actualizar y administrar bases de datos relacionales y la información contenida en las mismas.

Utilizan el Modelo Relacional, que significa que la información se guarda como un conjunto de relaciones representadas por tablas. La tabla tiene filas (registros) y columnas (atributos), cada fila tiene una primary key, y las relaciones se dan por las foreign key.

Un schema es la implementación física del modelo de datos y permite definir tipos de datos, que incluye constraints para los mismos, además de posibles optimizaciones de guardado, y también índices para optimizar la búsqueda.

También contiene Transacciones ACID, que son operaciones que cumplen:

Utiliza SQL (Structured Query Language), un lenguaje de dominio específico para manejar y consultar la información contenida. El SQL está basado en el álgebra relacional, y consiste de 3 sub-lenguajes, DDL (Data Definition Language, crear/alterar tablas), DML (Data Manipulation Language, insertar/modificar datos) y DCL (Data Control Language).

Problemas

Los RDBMS tienen algunos problemas intrínsecos a la tecnología:

OLAP

Conceptualmente se genera un “cubo” con la información dividida a partir de la granularidad de las operaciones que se quieren hacer.

Tienen diferentes acciones que se pueden hacer, como:

OLAP

Hay que poder llevar los datos desde el RDBMS a la OLAP, para eso se usan operaciones de ETL, Obtención/Extracción (E), Transformación (T), y Carga (L). Estos procesos se hacen en forma batch periódicamente, toman mucho tiempo en procesar y las consultas son bastante rígidas.

Big Data

Se define a partir de las 3 Vs:

  1. Volumen –> Cantidad de datos crece de manera geométrica
  2. Variedad –> Aparecen nuevos tipos de datos, son no/semi estructurados
  3. Velocidad –> Aumenta la velocidad con la que los datos se generan

Problemas

La máquina por definición no puede procesar los datos de Big Data, y surgen problemas:

Sistemas Distribuidos

Los sistemas distribuidos conviene escalarlos horizontalmente antes que verticalmente, se busca mantener las transaparencias, es decir, trabajar con un sistema distribuido sin saber que está distribuido.

Almacenamiento Distribuido

Busca resolver el guardado de información que no entra toda en 1 solo nodo.

Particionado

Lo más conveniente es dividir la información entre los diferentes nodos. Si la partición es buena algunas ventajas son que, permite realizar escrituras más rápidas y eficientes, y acelerar las lecturas. Aunque sigue teniendo ciertas desventajas, como la coordinación del cluster y que los datos pueden quedar mal particionados si se utiliza una técnica incorrecta.

Replicación

Tener 1 copia de cada partición en el sistema es peligroso, si se cae un nodo se puede perder/corromper la información. Deberían haber más de 1 copia de cada partición.

Consistencia

Al tener particionado y replicación, hay que tomar una decisión en torno a cuando considero al dato escrito y cuando se lo puede leer:

Hay 2 factores que indican la preferencia en consistencia:

Hay diferentes modelos de consistencia que nacen:

Elasticidad

Capacidad del cluster de modificar la cantidad de nodos sin que el cluster quede offline.

Tolerancia a Fallos

Si algún nodo se cae, las particiones (principales y backup) se reasignan. Esto requiere coordinación, generalmente de un nodo master o nodo coordinador.