Conceptos Esenciales en Arquitectura de Software y Bases de Datos

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 9,03 KB

Arquitectura de Tres Capas: Fundamentos y Componentes

La arquitectura de tres capas ayuda a estructurar sistemas que se descomponen en subtareas a distintos niveles de abstracción:

  • Capa de Presentación: Se encarga de que el sistema interactúe con el usuario y viceversa.
  • Capa de Aplicación (o Lógica de Negocio): Residen las funciones que se ejecutan. Recibe peticiones del usuario, procesa la información y envía la respuesta.
  • Capa de Datos (o Persistencia): Almacena datos del usuario y del sistema, y devuelve datos a la capa de aplicación.

Modelos de Vistas Arquitectónicas

No es posible capturar todas las características de un sistema en un único modelo que resulte comprensible. Por ello, se utilizan diferentes vistas:

  • Vista Lógica: Describe la estructura y funcionalidad del sistema. Incluye diagramas de clases, secuencia y comunicación.
  • Vista de Procesos: Aborda los aspectos dinámicos del sistema, explicando los procesos y cómo se comunican. Se representa con diagramas de actividad.
  • Vista Física: Desde el punto de vista del ingeniero de sistemas. Se utiliza el diagrama de despliegue.
  • Vista de Desarrollo: Desde el punto de vista del programador y la administración del software. Incluye diagramas de componentes y paquetes.
  • Vista de Escenarios: Muestra las interacciones entre objetos y procesos, a menudo a través de la vista de casos de uso.

Modelo de Vistas de Rozanski y Woods

Este modelo propone diferentes puntos de vista para describir una arquitectura de software: funcional, de información, de concurrencia, operacional, de desarrollo y de despliegue.

Análisis de Flujo de Datos (DFD)

Utilizado para sistemas que procesan flujos de datos. Cada etapa se considera un filtro, y los datos pasan de un filtro a otro mediante canales.

Patrón Arquitectónico Pizarra (Blackboard)

Un patrón arquitectónico diseñado para resolver problemas complejos para los que no se conocen estrategias deterministas de solución.

Evaluación del Diseño Arquitectónico

Se realiza para verificar si se cumplen las provisiones, si el sistema es escalable y si se han tomado las decisiones correctas. La evaluación se puede realizar mediante escenarios, utilizando métodos como ATAM (Architecture Tradeoff Analysis Method) y SAAM (Software Architecture Analysis Method).

Ley de Servicios de la Sociedad de la Información (LSSI)

La Ley de Servicios de la Sociedad de la Información y de Comercio Electrónico (LSSI-CE) obliga a los propietarios de sitios web a informar de forma clara y obtener consentimiento para la utilización de ciertos datos o servicios (ej. cookies).

Estrategias de Acceso a Datos desde Aplicaciones

Diferentes enfoques para que las aplicaciones interactúen con las bases de datos:

  • Registros Activos (Active Record): Encapsulan estructuras de datos externas y aplican la lógica del dominio correspondiente, incluyendo operaciones para guardar en la Base de Datos.
  • Gateways (Pasarelas): Clases auxiliares correspondientes con las entidades presentes en la Base de Datos y operaciones para manipularla.
  • Mapeado Objeto-Relacional (O/R Mapping): Establece la correspondencia entre el modelo orientado a objetos del dominio y la representación de objetos en una Base de Datos relacional. Herramientas comunes incluyen JDO, JPA y JQL.

Interfaces de Nivel de Llamada (CLI) para Bases de Datos

Permiten acceder a Bases de Datos relacionales utilizando SQL directamente desde el código de la aplicación. Ejemplos destacados son ODBC (Open Database Connectivity) y JDBC (Java Database Connectivity).

Pila Tecnológica LAMP

Acrónimo de un conjunto de tecnologías de código abierto comúnmente utilizadas para construir servidores web dinámicos: Linux (sistema operativo), Apache (servidor web), MySQL (sistema de gestión de bases de datos) y PHP (lenguaje de programación).

Estrategias de Carga de Datos: Lazy Loading vs. Eager Loading

  • Lazy Loading (Carga Perezosa): Patrón que consiste en retrasar la carga de contenidos o datos hasta el momento en que realmente se necesitan. Evita la carga de objetos que podrían no llegar a utilizarse, optimizando el uso de recursos, aunque puede implicar más llamadas a la Base de Datos.
  • Eager Loading (Carga Ansiosa): Carga todos los datos relacionados de una vez. Utiliza más recursos inicialmente, pero puede resultar en menos llamadas a la Base de Datos.

Fragmentación de Datos en Bases de Datos Distribuidas

La fragmentación de datos se realiza para mejorar la localidad de acceso, la distribución de los datos y el rendimiento del sistema. Las estrategias comunes incluyen la fragmentación horizontal, vertical y anidada.

Bases de Datos NoSQL y Procesamiento de Datos Masivos

Las Bases de Datos NoSQL surgieron porque las Bases de Datos relacionales no siempre son la mejor solución para ciertas aplicaciones, especialmente aquellas que manejan grandes volúmenes de datos o requieren esquemas flexibles.

  • MapReduce: Modelo de programación cuya implementación permite procesar grandes cantidades de datos en un clúster de ordenadores.
  • Graph Database Systems (Bases de Datos de Grafos): Utilizan estructuras de grafos con nodos y aristas (con atributos) para almacenar y representar los datos, ideales para relaciones complejas.

Apache Spark: Plataforma de Computación Distribuida

Una plataforma de computación distribuida de código abierto que combina un sistema de procesamiento de datos a través de clústeres de ordenadores con una manera sencilla y elegante de escribir programas para el procesamiento de grandes volúmenes de datos.

Bases de Datos Clave-Valor (Key-Value Stores)

Un tipo de Base de Datos NoSQL que utiliza una tabla hash donde una clave única apunta a un elemento de datos. Son muy eficientes para operaciones de lectura y escritura rápidas. Utilizadas por plataformas como YouTube, Facebook y Twitter. Ejemplos populares incluyen Redis y Memcached.

Propiedades ACID en Transacciones de Bases de Datos

Las propiedades ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad) garantizan que las transacciones en Bases de Datos sean confiables y robustas:

  • Atomicidad: Una transacción debe ser tratada como una única unidad indivisible; o se completa por completo, o no se realiza en absoluto.
  • Consistencia: Una transacción debe llevar la Base de Datos de un estado válido a otro estado válido, manteniendo todas las reglas y restricciones.
  • Aislamiento: La ejecución concurrente de múltiples transacciones debe producir el mismo resultado que si se ejecutaran secuencialmente, sin interferencias entre ellas.
  • Durabilidad: Una vez que una transacción ha sido confirmada (commit), sus cambios deben ser permanentes y sobrevivir a cualquier fallo del sistema.

OLAP vs. OLTP: Diferencias en Sistemas de Bases de Datos

Comparación entre dos tipos fundamentales de sistemas de procesamiento de Bases de Datos:

OLAP (Online Analytical Processing):

  • Orientado a consultas complejas y análisis de datos.
  • Actualizaciones poco frecuentes.
  • Prioridad en el procesamiento de consultas y la optimización del tiempo de respuesta.
  • Almacena datos resumidos y agregados.
  • Orientado al usuario final y la toma de decisiones.

OLTP (Online Transaction Processing):

  • Orientado a consultas simples y tareas repetitivas, bien estructuradas.
  • Actualizaciones frecuentes (inserciones, modificaciones, eliminaciones).
  • Prioridad en la gestión de transacciones y la integridad de los datos.
  • Transacciones sobre grandes Bases de Datos operacionales.
  • Orientado a la aplicación y la operación diaria.

Data Warehouses (Almacenes de Datos)

Un Data Warehouse implica el diseño de procesos y la implementación de herramientas que proporcionan información completa, oportuna, correcta y entendible para apoyar la toma de decisiones empresariales.

Conceptos Clave en Modelos Multidimensionales

  • Hecho (Fact) en Modelo Multidimensional: Representa una actividad o evento con un objeto de análisis en un sistema multidimensional (ej. una venta, una transacción).
  • Medida (Measure) en Modelo Multidimensional: Atributos numéricos asociados a los hechos, que pueden ser agregados (ej. cantidad vendida, precio, beneficio).

Entradas relacionadas: