Skip to content

matias-estay-torres/Python_Parallel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Proyecto Correctivo de Valores Inválidos en Base de Datos Meteorológica

1. Descripción General

Este proyecto implementa un sistema de corrección automática de valores inválidos en la base de datos meteorológica meteo. El proceso analiza la tabla observations e identifica valores numéricos iguales a -32768, interpretados como datos erróneos. Posteriormente, aplica un criterio determinista para reemplazarlos por valores coherentes obtenidos a partir de registros válidos de la misma estación.

La solución fue desarrollada en Python y utiliza procesamiento paralelo mediante multiprocessing para mejorar el rendimiento en bases de datos con grandes volúmenes de información. Todas las operaciones sobre PostgreSQL se realizan de forma transaccional y con manejo explícito de errores.

El proyecto funciona correctamente en Ubuntu Server 24.04 LTS (64 bits).


2. Arquitectura del Sistema

El programa está estructurado en módulos independientes, cada uno con una responsabilidad específica:

2.1 config.py

Gestiona la configuración del sistema y la interfaz de línea de comandos. Valida parámetros de conexión, número de procesos, tamaño de bloque y modos adicionales de ejecución.

2.2 db.py

Encapsula la conexión a PostgreSQL. Permite:

  • Validar la existencia de la tabla y sus columnas
  • Leer filas por estaciones en bloques paginados
  • Obtener valores vecinos válidos
  • Calcular promedios de estación
  • Ejecutar actualizaciones idempotentes dentro de transacciones

2.3 correction.py

Implementa el criterio determinista de corrección:

  1. Si el valor no es -32768, no se modifica.
  2. Si es -32768, se procede así:
    • Si existe un valor previo y uno posterior válidos, se usa su promedio.
    • Si solo existe uno de ellos, se utiliza dicho valor.
    • Si no existen valores vecinos, se utiliza el promedio global de la estación.
    • Si la estación carece de valores válidos, no se corrige el dato.

2.4 parallel.py

Orquesta el procesamiento paralelo. Divide las estaciones entre procesos, reconstruye la configuración en cada worker, corrige por bloques y consolida las métricas obtenidas.

2.5 metrics.py

Registra y presenta las estadísticas del procesamiento:

  • Filas procesadas
  • Correcciones por columna
  • Correcciones por estación
  • Errores detectados durante la ejecución

2.6 main.py

Punto de entrada del sistema. Valida la base de datos, inicia el procesamiento paralelo y emite el resumen final.


3. Características Implementadas

  • Corrección determinista de valores inválidos.
  • Procesamiento paralelo por estación sin solapamientos.
  • Manejo de memoria mediante lectura paginada por bloques.
  • Ejecución idempotente: no altera valores corregidos previamente.
  • Conexiones independientes por proceso para evitar bloqueos.
  • Validación de esquema y columnas antes del procesamiento.
  • Manejo robusto de transacciones, fallos y errores.

4. Requisitos

4.1 Software

  • Python 3.7 o superior
    (Ubuntu 24.04 incluye Python 3.12 por defecto).
  • PostgreSQL instalado y en ejecución.
  • Biblioteca psycopg2-binary instalada mediante pip.

5. Instalación y Ejecución en Ubuntu Server 24.04

5.1 Instalar Python y pip (si no existen)

sudo apt update
sudo apt install python3 python3-pip python3-venv -y

5.2 Instalar PostgreSQL (si no está disponible)

sudo apt install postgresql postgresql-contrib -y

5.3 Crear un entorno virtual

python3 -m venv venv
source venv/bin/activate

5.4 Instalar dependencias

pip install -r requirements.txt

5.5 Importar el esquema de la base meteo

psql -U postgres -d meteo -f meteo.sql

5.6 Ejecutar el programa

python3 main.py --database meteo --password tu_contraseña --verbose

6. Parámetros Disponibles

El programa acepta parámetros de conexión y control de ejecución, tales como:

  • --host
  • --port
  • --user
  • --password
  • --database
  • --processes (número de procesos paralelos)
  • --chunk-size (cantidad de filas por bloque)
  • --verbose
  • --diagnostic

Variables de entorno soportadas: PGHOST, PGPORT, PGDATABASE, PGUSER, PGPASSWORD.


7. Salida del Programa

El sistema genera un resumen con:

  • Total de filas procesadas.
  • Cantidad de valores corregidos por columna.
  • Cantidad de valores corregidos por estación.
  • Errores detectados durante el procesamiento.
  • Integrantes del grupo.

El mensaje final indica si el proceso fue exitoso o si existieron inconsistencias.


8. Guía Adicional

El proyecto incluye una guía extendida que proporciona:

  • Procedimiento detallado de instalación.
  • Solución a problemas frecuentes.
  • Recomendaciones de optimización en servidores Linux.
  • Configuración como servicio del sistema operativo (opcional).

9. Estado del Proyecto

El proyecto está completamente funcional, probado y optimizado para su ejecución en Ubuntu Server 24.04. No requiere cambios adicionales para su operación estándar.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages