0% encontró este documento útil (0 votos)
18 vistas70 páginas

Modelado de Bases1

Las bases de datos orientadas a objetos (BDOO) representan información en forma de objetos, permitiendo modelar datos complejos y naturales, lo que las hace útiles en aplicaciones multimedia y sistemas de información geográfica. Aunque ofrecen beneficios como la integración con lenguajes de programación orientados a objetos, enfrentan desafíos como la falta de adopción y estándares universales. El documento también aborda la relación entre BDOO y otros modelos de bases de datos, así como la importancia de herramientas como UML y estándares como ISO/IEC 24744 en el desarrollo de software.

Cargado por

KADE SAN
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
18 vistas70 páginas

Modelado de Bases1

Las bases de datos orientadas a objetos (BDOO) representan información en forma de objetos, permitiendo modelar datos complejos y naturales, lo que las hace útiles en aplicaciones multimedia y sistemas de información geográfica. Aunque ofrecen beneficios como la integración con lenguajes de programación orientados a objetos, enfrentan desafíos como la falta de adopción y estándares universales. El documento también aborda la relación entre BDOO y otros modelos de bases de datos, así como la importancia de herramientas como UML y estándares como ISO/IEC 24744 en el desarrollo de software.

Cargado por

KADE SAN
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

MODELADO AVANZADO

DE
BASE DE DATOS
UNIDAD 1
BASES DE DATOS NO RELACIONALES
Las bases de datos orientadas a objetos (BDOO)

Una base de datos orientada a objetos es un sistema de gestión de bases


de datos en el que la información se representa en forma de objetos, tal
como se hace en la programación orientada a objetos. Los datos no solo se
almacenan, sino que también contienen comportamientos (métodos), lo que
permite modelar datos más complejos y naturales. Este enfoque hace que
las BDOO sean especialmente útiles en aplicaciones donde se manejan
datos multimedia, sistemas de información geográfica, entre otros.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Beneficios de las bases de datos orientadas a objetos
• Datos complejos y una mayor variedad de tipos de datos en comparación
con los tipos de datos MySQL .
• Fácil de guardar y recuperar datos rápidamente.
• Integración perfecta con lenguajes de programación orientados a objetos.
• Es más fácil modelar problemas avanzados del mundo real.
• Extensible con tipos de datos personalizados.

Desafíos de las bases de datos orientadas a objetos


• No está tan ampliamente adoptado como las bases de datos relacionales.
• No existe un modelo de datos universal. Carece de fundamentos teóricos
y estándares.
• No admite vistas.
• Alta complejidad, que puede generar problemas de rendimiento.
• No existe un mecanismo de seguridad adecuado ni derechos de acceso a
los objetos.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Casos de uso
•Aplicaciones multimedia . Almacenan y gestionan objetos multimedia
eficientemente. La herencia y la encapsulación son ventajas al trabajar con este
tipo de contenido.
•Sistemas CAD/CAM . Las aplicaciones de ingeniería, automoción y aeroespacial
utilizan datos CAD/CAM. Estos datos tienen elementos altamente interconectados
y se modelan mejor como objetos de base de datos.
•Sistemas de información geográfica (SIG) . La representación y gestión de
datos espaciales, como mapas e información del terreno, requiere relaciones y
propiedades complejas. Estas características, como las coordenadas y las
relaciones topográficas, son más adecuadas para estructuras orientadas a objetos.
•Telecomunicaciones . Las bases de datos orientadas al trabajo (OODB)
gestionan eficientemente las estructuras de datos jerárquicas e interconectadas
típicas de las redes de telecomunicaciones. Los datos incluyen configuraciones de
red, registros y preferencias de usuario.
•Sistemas en tiempo real . Permiten la rápida actualización y recuperación de
datos complejos esenciales para sistemas en tiempo real. Estas tecnologías se
encuentran en la automatización industrial, la robótica y las aplicaciones
integradas.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Relacionales vs. Orientadas a Objetos
• Estructura: Las bases de datos relacionales utilizan tablas y relaciones,
mientras que las BDOO utilizan objetos y clases.
• Consultas: En bases de datos relacionales, las consultas se realizan con
SQL, mientras que en BDOO se utilizan lenguajes de consulta orientados
a objetos.
• Flexibilidad: Las BDOO son más flexibles en la representación de datos
complejos, mientras que las bases de datos relacionales son más
adecuadas para datos estructurados y bien definidos.

NoSQL vs. Orientadas a Objetos


• Estructura de datos: Las bases de datos NoSQL pueden manejar datos
no estructurados y semi-estructurados, mientras que las BDOO se
centran en objetos y sus relaciones.
• Modelo de consistencia: Las bases de datos NoSQL a menudo
sacrifican la consistencia en favor de la disponibilidad y partición, mientras
que las BDOO pueden mantener la consistencia de los datos complejos.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


ORM Object Relational Mapper

Es una herramienta que simplifica la interacción entre una aplicación de


programación orientada a objetos y una base de datos relacional. Permite
mapear las estructuras de la base de datos a objetos de código, evitando la
necesidad de escribir código SQL directamente

Hibernate ORM
Es un framework de mapeo objeto-relacional (ORM) para Java que facilita la
interacción con bases de datos, permitiendo que los objetos de Java sean
mapeados a tablas en la base de datos y viceversa. En esencia, Hibernate
ayuda a los desarrolladores a evitar escribir código repetitivo para acceder a la
base de datos, proporcionando una capa de abstracción que simplifica el
acceso a los datos.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0
Principales elementos en una base de datos orientada a objetos
Todos los elementos mencionados anteriormente, como las clases o categorías,
los atributos y los elementos o los propios objetos, además de otros como los
patrones, son básicos en una base de datos orientada a objetos. Como cabe
esperar, se trata de los mismos elementos que podemos encontrar en la
programación orientada a objetos.

Objetos
Los objetos son las entidades que introducimos en la base de datos y que
habitualmente no se modifican. Se trata de elementos físicos o personas, que
ejercen acciones dentro de la base de datos.

Clase
Es la agrupación de todos los objetos que poseen características y
comportamientos similares en las bases de datos orientadas a objetos.
La clase se corresponde con el significado de categoría; es decir, lo que agrupa
determinados objetos en una base de datos porque responden a métodos y
atributos idénticos o similares.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Atributos y métodos
Los atributos son propiedades del objeto. Los métodos son la forma en la
que se comportan las propiedades de dicho objeto en las bases de datos
orientadas a objetos.
.
Los métodos hacen referencia al comportamiento de los atributos del
objeto, lo que nos indica características más genéricas como el fabricante, el
precio o el año de fabricación del modelo.

Patrones
En una base de datos orientada a objetos, los patrones son aquello que
permite el acceso a objetos de mayor complejidad, que se corresponden con
algunas de las características como el polimorfismo, la encapsulación, la
herencia o la abstracción, tal y como veremos más adelante.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Características de una base de datos orientada a objetos
Una base de datos orientada a objetos posee las mismas características que
se usan en la programación orientada a objetos. Estas son:

Polimorfismo
Es la capacidad que tiene un objeto para adoptar múltiples formas. En una
BDOO esta característica hace que el mismo código de programa funcione
con diferentes tipos de datos.

Herencia
Dentro de modelo de base de datos orientado a objeto, crea relaciones
jerárquicas entre distintas clases que permiten que muchas partes del
código puedan reciclarse. Esta es quizás uno de los grandes objetivos de las
BDOO y de la POO en general: la habilidad de poder usar código de un
programa en la realización de otro programa, ya que todas las estructuras y
clases tienen un patrón y un orden específico que está perfectamente
alineado con las características y clases necesarias (herencia).

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Encapsulación
Es la capacidad de agrupar diferentes datos y objetos en una sola clase u
objeto mayor, para poder brindar seguridad al sistema realizado. Por medio
de este proceso se pueden ocultar piezas de información, por ejemplo, el
anonimato del autor de un libro.

Las clases interactúan entre sí a través de métodos y no es necesario saber


cómo funcionan otros métodos particulares que hacen que esas clases
funcionen, es decir, solo se muestra lo necesario.

Abstracción
La encapsulación del modelo de base de datos orientado a objetos hace que
el proceso de abstracción en una base de datos orientada a objetos sea
posible, ya que elimina toda la información no esencial y permite representar
solo las características de datos relevantes para la funcionalidad necesaria.
La abstracción permite simplificar los datos modelados y a su vez posibilita
la reutilización de esos datos de los elementos orientado a objetos.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Característica Descripción
Encuentra objetos y recupera datos de la base de
Lenguaje de consulta
datos.
Permite acceder y utilizar datos con un lenguaje de
Persistencia transparente programación orientado a objetos sin un manejo
especial.
Garantiza que las transacciones ACID y todas las
Transacciones ACID transacciones se completen sin cambios
conflictivos.
Crea una réplica parcial de la base de datos en
Almacenamiento en
memoria. Permite un acceso más rápido a la base
caché de bases de datos
de datos sin necesidad de leer el disco.

Proporciona mecanismos de recuperación ante


Recuperación desastres en caso de falla de la aplicación o del
sistema.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


El estándar ODMG.
• Este Modelo estándar ODMG, especifica los elementos que se definirán, y en
qué manera se hará, para la consecución de persistencia en las Bases de
datos orientadas a objetos que soporten el estándar.
• Consta de un lenguaje de definición de objetos, ODL, que especifica los
elementos de este modelo.
• Un grupo de representantes de la industria de las bases de datos formaron el
ODMG (Object Database Management Group) con el propósito de definir
estándares para los SGBD orientados a objetos.
• Este grupo propuso un modelo estándar para la semántica de los objetos de
una base de datos. Su ultima versión, ODMG 3.0, apareció en enero de 2000.
• El estándar ODMG es un producto de consorcio internacional OMG, el cual
principalmente proporciona técnicas orientadas a objetos para la ingeniería
de software.
• Sus estándares pueden ser aceptados por empresas certificadas como ISO.
• El estándar OSMG es el modelo para la semántica de los objetos de una base
de datos. Permite portar tanto los diseños como las implementaciones en
diversos sistemas compatibles.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Modelo de Objeto
El modelo de objetos ODMG permite que tanto los diseños, como las
implementaciones, sean portables entre los sistemas que lo soportan. Dispone
de las siguientes primitivas de modelado:
• Los componentes básicos de una base de datos orientada a objetos son los
objetos y los literales.
• Los objetos y los literales se categorizan en tipos. Cada tipo tiene un dominio
específico compartido por todos los objetos y literales de ese tipo.
• Cada operación puede requerir datos de entrada (parámetros de entrada) y
puede devolver algún valor de un tipo conocido.
• Los objetos tienen propiedades, que incluyen sus atributos y las relaciones
que tienen con otros objetos.
• El estado actual de un objeto viene dado por los valores actuales de sus
propiedades.
• La definición de una base de datos está contenida en un esquema que se ha
creado mediante el lenguaje de definición de objetos ODL (Object Definition
Language) que es el lenguaje de manejo de datos que se ha definido como
parte del estándar propuesto para las bases de datos orientadas a objetos.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


¿Qué es UML?

UML (Unified Modeling Language) es un lenguaje gráfico estándar que se


utiliza para visualizar, especificar, construir y documentar los elementos de
un sistema orientado a objetos.
• Nos permite modelar clases, objetos, relaciones y comportamientos de un
sistema.
• Es especialmente útil para diseñar software complejo de manera
estructurada.

UML OODBMS
Modela clases y objetos. Almacena objetos de esas clases.
Soporta herencia. Soporta herencia en datos.
Define relaciones entre clases. Almacena referencias entre objetos.
Usa atributos y métodos. Persiste atributos y enlaza métodos.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


De UML a la Base de Datos

• Diseño UML: Se modelan las clases y relaciones.


• Generación de código: Se puede generar automáticamente en lenguajes
como Java, Python o C++.
• Persistencia: Con una OODBMS como ObjectDB, db4o o ZODB, los
objetos se almacenan tal como fueron diseñados en UML.

Ventajas de usar UML con OODBMS

• Coherencia entre el modelo de diseño y el modelo de almacenamiento.


• Mayor productividad al evitar la transformación entre objetos y tablas
(no se requiere ORM).
• Facilidad de mantenimiento y evolución del sistema.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


¿Qué es ISO/IEC 24744?

La ISO/IEC 24744 es una norma internacional que define un metamodelo


para metodologías de desarrollo de software. Su objetivo es proporcionar un
marco conceptual que permita describir y construir metodologías de
desarrollo de manera coherente y estructurada.

El metamodelo de ISO/IEC 24744 se basa en tres dominios principales:


• Dominio del Metamodelo: Define los conceptos fundamentales utilizados
para describir metodologías.
• Dominio de la Metodología: Describe las metodologías específicas
construidas a partir del metamodelo.
• Dominio del Proyecto (Endeavour): Representa la aplicación práctica
de una metodología en un proyecto real.

ResearchGate
Esta estructura permite una clara separación entre la definición de
conceptos, la construcción de metodologías y su aplicación práctica.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Relación con UML y OODBMS
Aunque la ISO/IEC 24744 no está diseñada específicamente para bases de datos
orientadas a objetos (OODBMS), su enfoque orientado a objetos y su compatibilidad
con UML facilitan su integración en entornos que utilizan OODBMS. Al modelar
metodologías con UML siguiendo el metamodelo de ISO/IEC 24744, se pueden
generar estructuras que se alinean con los principios de las OODBMS, permitiendo
una implementación más coherente y eficiente.
Aplicaciones Prácticas
• Diseño de Metodologías Personalizadas: Permite a las organizaciones definir
metodologías adaptadas a sus necesidades específicas.
• Integración de Herramientas: Facilita la integración de herramientas de
desarrollo y gestión de proyectos mediante un marco común.
• Formación y Documentación: Proporciona una base estructurada para la
formación de equipos y la documentación de procesos.
La norma ISO/IEC 24744 ofrece un marco robusto y flexible para el modelado de
metodologías de desarrollo de software. Su enfoque orientado a objetos y su
compatibilidad con UML la hacen especialmente útil en entornos que utilizan bases
de datos orientadas a objetos, facilitando una integración coherente entre la
definición de metodologías y su implementación práctica.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Las buenas prácticas incluyen:
• 1. Modelar antes de codificar: Usa UML (como diagramas de clases)
para diseñar las clases y relaciones antes de programar o persistir
objetos.
• 2. Usar la herencia y el polimorfismo con moderación: Evita jerarquías
de clases demasiado profundas, ya que pueden afectar el rendimiento de
las consultas y la serialización.
• 3. Persistencia transparente: Utiliza frameworks o bases de datos que
permitan almacenar objetos directamente sin tener que transformarlos
manualmente (como db4o, ObjectDB).
• 4. Encapsula la lógica de acceso a datos: No mezcles lógica de
negocio con lógica de persistencia. Usa repositorios u objetos DAO.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


• Usa UML (Unified Modeling Language) para definir clases, relaciones y asociaciones. Se
puede usar diagramas de clases para representar cómo se relacionan los objetos que luego
serán almacenados en la base de datos.
Ventaja: Alinea tu modelo conceptual con la base de datos de manera natural.
• Persistencia transparente: Usa herramientas que permiten almacenar objetos directamente,
sin necesidad de realizar transformaciones complejas.
Ventaja: El desarrollador piensa en objetos, no en tablas.
• Evita relaciones cíclicas no necesarias: Aunque OODBMS soportan referencias
bidireccionales, el abuso de ciclos entre objetos puede causar problemas de carga y
sincronización.
Solución: Usa asociaciones unidireccionales o débiles cuando sea posible.
• Aplica la cohesión y bajo acoplamiento: Cada clase debe tener una única responsabilidad
(Principio de Responsabilidad Única). Evita que una clase conozca detalles internos de otras.
Ventaja: Facilita la modificación y evolución del sistema sin romper dependencias.
• Versionado de objetos. Los OODBMS deben soportar versionado de clases y objetos para
cuando cambie la estructura de tus clases a lo largo del tiempo.
Ventaja: Migraciones menos riesgosas y sin pérdida de datos históricos.
• Documenta con UML. Utiliza diagramas UML no solo para clases, sino también para
secuencias, casos de uso y componentes.
Ventaja: Mejora la comunicación entre equipos técnicos y no técnicos.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


ObjectStore

• Es un sistema de gestión de bases de datos orientadas a objetos


(OODBMS) desarrollado originalmente por Object Design, Inc. a
principios de los años 90.
• Fue uno de los primeros productos comerciales ampliamente adoptados
para aplicaciones que requerían almacenamiento persistente de objetos
complejos, particularmente en entornos de ingeniería y
telecomunicaciones.
• ObjectStore permite a las aplicaciones almacenar objetos directamente
en disco sin necesidad de convertirlos a un modelo relacional.
• Los objetos se almacenan con sus atributos, referencias y jerarquías,
manteniendo su identidad y relaciones tal como existen en memoria.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Estado actual

• ObjectStore ha pasado por varias manos corporativas (Object Design →


Progress Software → eXtremeDB/Actian) y ha sido sustituido en muchos
casos por:
•Object-Relational Mapping (ORM) (como Hibernate o Entity
Framework)
•NoSQL con soporte de documentos (MongoDB) o grafos (Neo4j)
•Sistemas de persistencia embebidos como db4o o Berkeley DB
• Aunque ya no es tan popular como antes debido al dominio de bases de
datos relacionales y NoSQL, ObjectStore sigue siendo usado en algunos
sistemas heredados y entornos especializados.
• Actualmente, la tecnología pertenece a Progress Software, bajo el
nombre ObjectStore® by Progress.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


GemStone/S

• Es un sistema de base de datos orientado a objetos y también una


plataforma de desarrollo basada en Smalltalk, lanzado en los años 80 por
GemStone Systems (ahora parte de Gemtalk Systems).
• A diferencia de otros OODBMS, GemStone/S combina:
• Un motor de base de datos de objetos distribuidos
• Un entorno completo de ejecución y persistencia para Smalltalk

Casos de uso

• Aplicaciones financieras (donde la transacción y la integridad son


esenciales).
• Sistemas de simulación y modelado empresarial.
• ERP y sistemas complejos de gestión del conocimiento.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Desventajas

• Requiere conocimiento de Smalltalk, un lenguaje poco común hoy.


• Curva de aprendizaje alta si vienes de paradigmas relacional o
estructurado.
• Menor soporte y comunidad frente a soluciones modernas.

GemStone/S es una plataforma completa que combina una base de datos


de objetos y el lenguaje Smalltalk para ofrecer persistencia nativa, acceso
distribuido y un entorno de ejecución poderoso. Está diseñada para sistemas
que requieren alta integridad de datos, transacciones complejas y lógica de
negocio sofisticada.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


¿Qué es db4o?
• Es un sistema de base de datos orientado a objetos embebido y de
código abierto que permite persistir objetos de Java y .NET directamente,
sin necesidad de hacer mapeo objeto-relacional (ORM).
• Fue muy popular en entornos ligeros, móviles y de escritorio, y es fácil de
integrar en aplicaciones.
• Aunque ya no está activamente desarrollada, su modelo sirvió de
inspiración para tecnologías más modernas como ObjectBox o Realm.

Ideal para:
• Aplicaciones embebidas y móviles.
• Proyectos educativos.
• Sistemas donde el uso de SQL es innecesario.
• Prototipos rápidos con Java o .NET.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


¿Por qué fue importante?
• Eliminó la "fricción" entre el modelo de objetos y el modelo relacional.
• Redujo el tiempo de desarrollo en aplicaciones simples.
• Fue muy usado en educación, prototipos, móviles y dispositivos
embebidos.

¿Qué pasó con db4o?


• Fue desarrollado por db4objects Inc. y luego adquirido por Versant
Corporation.
• El soporte oficial fue descontinuado en 2014, aunque el código aún está
disponible en línea.
• Hoy en día, ha sido reemplazado por bases de datos NoSQL (como
MongoDB) o motores embebidos modernos (como Realm, SQLite o
ObjectBox).

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Versant Object Database
• es un sistema de base de datos orientado a objetos (OODBMS) diseñado
para aplicaciones complejas que necesitan almacenar, consultar y
manipular grandes volúmenes de objetos con alto rendimiento y
persistencia transparente.
• Es desarrollado por Versant Corporation, una empresa con décadas de
experiencia en persistencia de objetos.
• Brinda alto rendimiento, persistencia nativa, y soporte para transacciones
distribuidas, ideal para aplicaciones con necesidades de modelado de
datos intensivo en objetos.

Arquitectura general
• Aplicación Java o C++
• API de Versant (JVI o C++)
• Motor de Versant
• Almacenamiento de objetos en disco (con referencias, colecciones,
jerarquías)

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Ventajas

• Evita desajustes entre el modelo de objetos del lenguaje y la base de


datos.
• Ideal para sistemas complejos con relaciones ricas y lógica orientada a
objetos.
• Alta escalabilidad y rendimiento, incluso en entornos distribuidos.

Desventajas

• Curva de aprendizaje alta comparado con bases de datos relacionales.


• Menor soporte y comunidad en la actualidad.
• Dependencia fuerte del lenguaje Java o C++.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


2.8 Teorema CAP
Establece algunos atributos deseados en todo gestor de base de datos que nos
permita manejar los datos con cierta seguridad y confianza en ellos. Son tres
características que los motores de bases de datos tratan de equilibrar, en el sentido
que algunos poseen mayor fortaleza en alguno de los tres términos involucrados;

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Por regla general las bases de datos pueden garantizar solo dos de los tres
atributos lo que origina las siguientes combinaciones:
CA: Consistencia y Disponibilidad - Se garantiza el acceso a la información y el
valor del dato es consistente (igual) para todas las peticiones atendidas; de haber
cambios, se mostrarán inmediatamente. Sin embargo, la partición de los nodos no
es tolerada por el sistema de forma simultánea.
Bases de datos relacionales: MySQL, PostgreSQL, Oracle, SQL Server, etc.
AP: Disponibilidad y Tolerancia a la partición - Se garantiza el acceso a los
datos y el sistema es capaz de tolerar (gestionar) la partición de los nodos, pero
dejando en segundo plano la consistencia de los datos, ya que no se conserva y el
valor de dato no estará replicado en los diferentes nodos al instante.
Las bases que adotan este modelo son aquellas construidas para manejar un gran
volumen de datos en entornos distribuidos, con múltiples nodos de datos
interconectados entre sí. Bases noSQL: MongoDB, DynamoDB, Cassandra
CP: Consistencia y Tolerancia a la partición - Se garantiza la consistencia de los
datos entre los diferentes nodos y la partición de los nodos se tolera, pero
sacrificando la disponibilidad de los datos, con lo cual, el sistema puede fallar o
tardar en ofrecer una respuesta a la petición del usuario.
La elección de la base está en relación con el negocio. Ejemplo: en los bancos
prevalece CP, porque la información debe ser siempre consistente y no admitir
fallos, y dejando la disponibilidad en segundo plano.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


NoSQL.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


✓ NoSQL, también conocido como "no solo SQL", "no SQL", es un enfoque
de diseño de base de datos que permite almacenar y consultar datos fuera
de las estructuras tradicionales que se encuentran en las bases de datos
relacionales.
✓ Aunque puede almacenar los datos que se encuentran dentro de los
sistemas de gestión de bases de datos, los almacena de manera diferente
a un RDBMS.
✓ Las bases de datos NoSQL alojan datos dentro de una estructura de datos,
como un documento JSON.
✓ Dado que este diseño de base de datos no relacional no requiere un
esquema, ofrece una rápida escalabilidad para gestionar grandes conjuntos
de datos normalmente no estructurados.
✓ NoSQL es también un tipo de base de datos distribuida, lo que significa que
la información se copia y almacena en varios servidores, que pueden ser
remotos o locales.
✓ Garantizan la disponibilidad y la fiabilidad de los datos. Si alguno de los
datos queda fuera de línea, el resto de la base de datos puede seguir
ejecutándose.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Ventajas de los sistemas NoSQL
✓ Se ejecutan en máquinas con pocos recursos: Estos sistemas, a
diferencia de los sistemas basados en SQL, no requieren de apenas
computación, por lo que se pueden montar en máquinas de un coste
más reducido.
✓ Escalabilidad horizontal: Para mejorar el rendimiento de estos
sistemas simplemente se consigue añadiendo más nodos, con la única
operación de indicar al sistema cuáles son los nodos que están
disponibles.
✓ Pueden manejar gran cantidad de datos: Esto es debido a que utiliza
una estructura distribuida, en muchos casos mediante tablas Hash.
✓ No genera cuellos de botella: El principal problema de los sistemas
SQL es que necesitan rranscribir cada sentencia para poder ser
ejecutada, y cada sentencia compleja requiere además de un nivel de
ejecución aún más complejo, lo que constituye un punto de entrada en
común, que ante muchas peticiones puede ralentizar el sistema.
Principales diferencias con las bases de datos SQL
✓ No utilizan SQL como lenguaje de consultas. La mayoría de las
bases de datos NoSQL evitan utilizar este tipo de lenguaje o lo utilizan
como un lenguaje de apoyo. Por poner algunos ejemplos, Cassandra
utiliza el lenguaje CQL, MongoDB utiliza JSON o BigTable hace uso de
GQL.
✓ No utilizan estructuras fijas como tablas para el almacenamiento
de los datos. Permiten hacer uso de otros tipos de modelos de
almacenamiento de información como sistemas de clave–valor, objetos
o grafos.
✓ No suelen permitir operaciones JOIN. Al disponer de un volumen de
datos tan extremadamente grande suele resultar deseable evitar los
JOIN. Esto se debe a que, cuando la operación no es la búsqueda de
una clave, la sobrecarga puede llegar a ser muy costosa. Las
soluciones más directas consisten en desnormalizar los datos, o bien
realizar el JOIN mediante software, en la capa de aplicación.
✓ Arquitectura distribuida. Las bases de datos relacionales suelen estar
centralizadas en una única máquina o bien en una estructura máster–
esclavo, sin embargo en los casos NoSQL la información puede estar
compartida en varias máquinas mediante mecanismos de tablas Hash
distribuidas
FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0
Bases de datos clave – valor

✓ Son las base de datos NoSQL más


populares, y son las más sencilla en
cuanto a funcionalidad.
✓ Cada elemento está identificado por
una llave única, lo que permite la
recuperación de la información de
forma muy rápida, información que
habitualmente está almacenada como
un objeto binario (BLOB).
✓ Son muy eficientes tanto para las
lecturas como para las escrituras.
✓ Algunos ejemplos de este tipo son
Cassandra, BigTable o HBase.
Bases de datos clave – valor
Bases de datos clave – valor

Redis
■ Está apoyado por VMWare.
■ Se puede imaginar como un array gigante en memoria para almacenar
datos, datos que pueden ser cadenas, hashes, conjuntos de datos o listas.
■ Tiene la ventaja de que sus operaciones son atómicas y persistentes.
■ No permite realizar consultas, sólo se puede insertar y obtener datos,
además de las operaciones comunes sobre conjuntos (diferencia, unión e
inserción).
Bases de datos documentales

✓ Almacena la información como un


documento, generalmente utilizando
para ello una estructura simple como
JSON o XML y donde se utiliza una
clave única para cada registro.
✓ Permite realizar búsquedas por clave–
valor y consultas más avanzadas
sobre el contenido del documento.
✓ Se pueden utilizar en gran cantidad de
proyectos, incluyendo muchos que
tradicionalmente funcionarían sobre
bases de datos relacionales.
✓ Algunos ejemplos de este tipo son
MongoDB o CouchDB.
Bases de datos documentales
Bases de datos en grafo

✓ La información se representa como nodos de un grafo y sus relaciones con


las aristas del mismo, de manera que se puede hacer uso de la teoría de
grafos para recorrerla.
✓ Para sacar el máximo rendimiento a este tipo de bases de datos, su
estructura debe estar totalmente normalizada, de forma que cada tabla
tenga una sola columna y cada relación dos.

➢ Ofrece una navegación más


eficiente entre relaciones que
en un modelo relacional.
➢ Algunos ejemplos de este tipo
son Neo4j, InfoGrid o Virtuoso
Bases de datos en grafo
Base de datos columnar

✓ Es un modelo que organiza los datos en columnas en lugar de filas.


✓ En este enfoque, cada columna contiene datos de un solo tipo, y las filas
contienen un conjunto de valores correspondientes a esas columnas.
✓ La idea principal es almacenar y procesar los datos columnarmente en
lugar de hacerlo en forma de filas.

Características de las bases de datos columnares


✓ Compresión eficiente: Almacenar los datos por columnas permite una
mayor compresión, ya que los valores en una columna tienden a repetirse
o ser similares, lo que reduce el tamaño de almacenamiento.
✓ Procesamiento optimizado: Al realizar operaciones sobre columnas en
lugar de filas, las bases de datos columnares pueden acelerar ciertas
consultas y análisis que implican grandes volúmenes de datos.
✓ Análisis selectivo: Permite que las consultas seleccionen solo las
columnas necesarias para una operación específica, lo que reduce la
búsqueda de datos que deben ser leídos desde el almacenamiento.
✓ Análisis analítico: Las bases de datos columnares se utilizan
principalmente para análisis analítico
Base de datos columnar
Bases de datos orientadas a objetos

• La información se representa mediante objetos, de la misma forma que


son representados en los lenguajes de programación orientada a objetos
(POO) como ocurre en JAVA, C# o Visual Basic .NET.
• Algunos ejemplos de este tipo de bases de datos son Zope, Gemstone
Usos

✓ Cuando se necesita una BBDD para una aplicación que hace una
consulta/lectura intensiva de grandes cantidades de datos.
✓ Cuando no hay la necesidad de que los datos sean consistentes.
✓ Si los datos a almacenar no tienen una estructura fija.
✓ Una misma aplicación puede usar una BBDD relacional y una BBDD
NoSQUL y guardar cosas diferentes en cada una de ellas.
✓ Algunos ejemplos de uso de este tipo de BBDD:
– Amazon.
– Facebook.
– Google.
NoSQL o no relacional SQL o relacional
•Administrar datos de gran volumen, no
•Administrar datos relacionales con requisitos
relacionados, indeterminados o que cambian
lógicos y discretos que se puedan identificar
LA rápidamente.
con antelación.
MEJO •Datos independientes del esquema o
•Esquema que se debe mantener sincronizado
R esquema dictados por la aplicación.
entre la aplicación y la base de datos.
OPCI •Aplicaciones en las que el rendimiento y la
•Sistemas heredados creados para estructuras
ÓN disponibilidad son más importantes que una
relacionales.
PARA: coherencia alta.
•Aplicaciones que requieren transacciones de
•Aplicaciones siempre activas que dan
varias filas o consultas complejas.
servicios a usuarios de todo el mundo.
•Aplicaciones celulares.
•Sistemas de contabilidad, finanzas y
ESCE •Análisis en tiempo real.
bancarios.
NARIO •Administración de contenido.
•Sistemas de administración de inventario.
S: •Aplicaciones de IoT.
•Sistemas de administración de transacciones.
•Migración de bases de datos.
ESCA •Escala los datos horizontalmente mediante
•Escala los datos verticalmente al aumentar la
LA: el particionamiento entre los [Link] del servidor.
•Tipo de base de datos: tablas de filas,
•Tipos de base de datos: bases de datos de
MODE agrupadas en relaciones.
pares clave-valor, documentos, en columnas
LO DE •Usa el Lenguaje de consulta (SQL).
y de grafos.
DATO •Almacena datos como filas en tablas; datos
•Almacena los datos en función del tipo de
S: relacionados almacenados por separado y
base de datos.
unidos para consultas complejas
MongoDB

✓ Se trata de una base de datos creada por 10gen del tipo orientada a
documentos, de esquema libre, es decir, que cada entrada puede tener un
esquema de datos diferente que nada tenga que ver con el resto de
registros almacenados.
✓ Es bastante rápido a la hora de ejecutar sus operaciones ya que está escrito
en lenguaje C++.
✓ Para el almacenamiento de la información, utiliza un sistema propio de
documento conocido con el nombre BSON, que es una evolución del
conocido JSON pero con la peculiaridad de que puede almacenar datos
binarios.
MongoDB

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0
Funcionamiento de mongo

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0
FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0
✓ En MongoDB se utiliza otro formato para
almacenar los documentos, BSON, que
no es más que una extensión de JSON
que se representa de manera binaria.

✓ JSON (JavaScript Object Notation) es un


formato estándar utilizado principalmente
para transmitir datos entre un servidor
web y una aplicación web.

✓ Si MongoDB utilizase JSON para almacenar la información estaríamos


limitados a seis tipos de datos,
✓ Por ejemplo, no dispone de un tipo de datos específico para la fechas,
aunque podemos utilizar una cadena de texto. Tampoco dispone de un tipo
de datos para almacenar el contenido de un fichero.
✓ BSON proporciona tipos de datos que no existen en JSON, como Date para
fechas, BinData para información binaria, ObjectId para valores únicos
(generalmente usado para el campo _id de las colecciones),…

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Json vs bson
JSON - JavaScript Object
Notation
JSON - JavaScript Object Notation

API
Década de los 2000

Archivos de configuración

MongoDB - Json
Registro de mensajes

JSON solo admite una cantidad limitada


de tipos de datos básicos. Almacenamiento en BBOD

Los objetos y propiedades JSON no tienen


una longitud fija, lo qua hace que el recorrido
sea mas lento

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


BSON – JSON binario

La estructure binaria, de BSON codifica


información de tipo y longitud lo que
permite recorrer mucho mas rápido en
comparación con JSON.

BSON agrega algunos tipos de datos que


no son nativos de JSON, como fechas y
datos binarios

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0
FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0
Campo _id
ObjectID (value)
El campo _id tiene el siguiente
comportamiento Esta conformado por 12 bytes

De forma predeterminada, mongoDB Una marca de tiempo de 4 bytes que


crea un índice único en el campo _id representa la creación de Objectid

Si el servidor recibe un documento Un valor aleatorio de 5 bytes generado


que no tiene el campo _id primero, una vez por proceso. Este valor aleatorio
entonces el servidor moverá el campo es único para la maquina y el proceso
al principio
Un contador incremental de 3 bytes
inicializados a un valor aleatorio.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Operaciones crud

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Operaciones crud

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Atomicidad

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Cursor Cursores
Es la forma de la que podemos modificar o
leer un documento, el método que hemos
utilizado desde un principio, find, siempre nos
ha devuelto un cursor. Pero al estar utilizando
menos de 20 registros no hemos tenido
problemas, así que al introducir 100 registros
veremos que nos hará falta el uso de
cursores.

Documentos enbebidos

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Buscar

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


MongoDB Compass es una herramienta de administración de base de
datos que te permitirá utilizar una interfaz para interactuar con bases de
datos de MongoDB. Con esta app podrás visualizar y manipular datos
con facilidad, ya que te facilitará la gestión de estas bases de datos
aunque no tengas experiencia.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Las copias de seguridad y la recuperación de datos implican el proceso de
hacer un respaldo de los datos en caso de pérdida y configurar sistemas
seguros con los que sea posible recuperar los datos como resultado.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


Mongoimport

Se trata de una herramienta nativa de MongoDB. El hecho de que sea nativa


no indica que venga por defecto en la instalación. Para ello, deberemos
instalar mongodb-org-tools, que es un paquete de herramientas entre las
que viene entre otros, mongoimport

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0


UNIDAD 2
PROCESOS ETL.
PROCESO ETL.

FECHA ÚLTIMA REVISIÓN: 13/12/11 CÓDIGO: [Link].260 VERSIÓN: 1.0

También podría gustarte