Esta monografía realiza un estudio comparativo de base de datos libres como Mysql versus bases de datos propietarias como Oracle, la comparación se da en la versión 5.0.18 de Mysql y la versión 10g de Oracle.
Se analizan varios puntos de comparación como soporte, rendimiento, funcionalidad, sistemas operativos soportados, interfaz de desarrollo, conectores, características de acceso a datos, tipos de datos, seguridades, tipos de almacenamiento.
Con este estudio los gerentes y desarrolladores pueden decidir según su proyecto que motor de base de datos usar de acuerdo a sus necesidades, presupuesto o afinidad.
Este estudio se realiza entre las dos bases de datos descritas, pero puede ser utilizado para comparar otras bases de datos existentes.
Es necesario en los estudios de evaluación de software tomar en cuenta las herramientas open source para que el usuario final, desarrolladores y gerentes puedan ver las ventajas y desventajas entre los productos propietarios y libres.
Antes de las bases de datos se utilizaban archivos secuenciales como almacenes de datos. Estos daban un acceso muy rápido pero sólo de forma secuencial (para acceder a una posición, se debía recorrer el archivo entero). Más tarde aparecieron los archivos indexados, donde el acceso ya podía ser aleatorio (acceder de una vez a la posición deseada del archivo).
El sistema de archivos era el sistema más común de almacenamiento de datos. Para compartir los datos entre varias máquinas surgió el NFS, y más tarde para evitar fallos en los sistemas de archivo aparecieron los sistemas RAID (mirror).
Pero los programas y datos cada vez eran más complejos y grandes. Se requería de un almacenamiento que garantizara un cierto número de condiciones y que permitiera operaciones complejas sin que se violaran estas restricciones. Además cada usuario que accediera a los datos debía tener su trabajo protegido de las operaciones que hicieran el resto de usuarios.
Respondiendo a estas necesidades, surgieron las bases de datos jerárquicas donde los datos se situaban siguiendo una jerarquía.
Las bases de datos jerárquicas tenían el problema que los accesos a los datos eran unidireccionales, y era más complicado hacer el camino inverso (pero posible, aunque el tiempo de cálculo era mayor). Por ejemplo, era fácil saber que cuentas tenía un cliente, pero no tanto saber de que cliente era una cierta cuenta.
Para dar absoluta libertad a las relaciones entre tablas surgieron las bases de datos relacionales (RDBMS).
Las RDBMS trajeron dos cosas muy importantes: las propiedades ACID y un lenguaje común de acceso a los datos: SQL.
Las propiedades ACID son:
Debido a que las RDBMS tienen que soportar todas estas propiedades, nunca serán tan rápidas como trabajar directamente sobre archivos, aunque internamente trabajen sobre ellos. La mayoría de desarrolladores prefieren hoy en día sacrificar la velocidad por las funcionalidades.
Según Henry F. Korth autor del libro "Fundamentos de Bases de Datos" se define una base de datos como una serie de datos organizados y relacionados entre sí, y un conjunto de programas que permitan a los usuarios acceder y modificar esos datos.
Las bases de datos proporcionan la infraestructura requerida para los sistemas de apoyo a la toma de decisiones y para los sistemas de información estratégicos, ya que estos sistemas explotan la información contenida en las bases de datos de la organización para apoyar el proceso de toma de decisiones o para lograr ventajas competitivas. Por este motivo es importante conocer la forma en que están estructuradas las bases de datos y su manejo.
Uno de los propósitos principales de un sistema de base de datos es proporcionar a los usuarios una visión abstracta de los datos. Es decir, el sistema esconde ciertos detalles de cómo se almacenan y mantienen los datos.
Los sistemas tradicionales se denominaban sistemas orientados hacia procesos, debido a que, en ellos, se ponía el énfasis en los tratamientos que reciben los datos, los cuales se almacenan en archivos que son diseñados para una determinada aplicación.
Este planteamiento produce además de una ocupación inútil de memoria, un aumento de los tiempos de procesos, al repetirse los mismos controles y operaciones en los distintos archivos. Pero mas graves todavía son las inconsistencias que a menudo se presentan en estos sistemas, debido a que la actualización de los mismos datos, cuando estos se encuentran es más de un archivo, no se puede realizar de forma simultánea en todos ellos.
Con el fin de resolver estos problemas y de lograr una gestión mas racional del conjunto de datos, surge un nuevo enfoque que se apoya sobre una "base de datos" en la cual los datos son recogidos y almacenados, al menos lógicamente, una sola vez, con independencia de los tratamientos.
Gráfico # 1: Diagrama del flujo de la información al utilizar una base de datos

Fuente: Análisis y diseño detallado de aplicaciones informáticas de gestión
Autor: Diego Burbano
Según este enfoque se logran los siguientes cambios:
Además al momento de tomar una decisión hay que tomar en cuenta posibles inconvenientes que es necesario valorar antes de tomar una decisión relativa a un cambio en la orientación de sistema de información.
El hardware se refiere a los dispositivos de almacenamiento en donde reside la base de datos, así como a los dispositivos periféricos (unidad de control, canales de comunicación, etc.) necesarios para su uso.
Está constituido por un conjunto de programas que se conoce como Sistema Manejador de Base de Datos (DMBS: Data Base Management System). Este sistema maneja todas las solicitudes formuladas por los usuarios a la base de datos.
Existen tres clases de usuarios relacionados con una Base de Datos:
Según Korth estas son las principales ventajas del uso de las bases de datos:
Permite a los diferentes usuarios considerar la información como un recurso corporativo que carece de dueños específicos.
Información Duplicada que puede generar inconsistencias en la base de datos.
Si el sistema esta desarrollado a través de archivos convencionales, una cancelación de compra por ejemplo deberá operarse tanto en el archivo de facturas del Sistema de Control de Cobranza como en el archivo de facturas del Sistema de Comisiones.
Varios sistemas o usuarios pueden utilizar una misma entidad.
Solo se almacena la información correcta.
La independencia de datos implica un divorcio entre programas y datos; es decir, se pueden hacer cambios a la información que contiene la base de datos o tener acceso a la base de datos de diferente manera, sin hacer cambios en las aplicaciones o en los programas. Lo que implica menor costo de mantenimiento.
En lo que tiene que ver con el acceso de usuarios a los datos y operaciones sobre los datos.
El DBMS es un conjunto de programas que se encargan de manejar la creación y todos los accesos a las bases de datos.
El objetivo principal del sistema gestor de base de datos es proporcionar una forma de almacenar y recuperar la información de una base de datos de manera que sea tanto práctica como eficiente.
Se compone de un lenguaje de definición de datos (DDL: Data Definition Language), de un lenguaje de manipulación de datos (DML: Data Manipulation Language) y de un lenguaje de consulta (SQL : Structured Query Language).
Es utilizado para describir todas las estructuras de información y los programas que se usan para construir, actualizar e introducir la información que contiene una base de datos. El DDL permite al administrador de la base especificar los elementos de datos que la integran , su estructura y las relaciones que existen entre ellos, las reglas de integridad, los controles a efectuar antes de autorizar el acceso a la base.
Por ejemplo la siguiente instrucción de lenguaje sql define la tabla cuenta:
Create table cuenta
(
numero_cuenta char(10),
saldo integer
)
La ejecución de la instrucción DDL anterior crea la tabla cuenta. Además, actualiza un conjunto especial de tablas denominado diccionario de datos.
Un diccionario de datos contiene metadados, es decir, datos acerca de los datos.
Los valores de los datos almacenados en la base de datos deben satisfacer ciertas restricciones de consistencia de la información. Por ejemplo, supóngase que el saldo contable de una cuenta no puede ser mayor a 5.000,00 usd. El DDL proporciona facilidades para especificar tales restricciones. Los sistemas de base de datos comprueban estas restricciones cada vez que se actualiza la base de datos.
Es utilizado para escribir programas que crean, actualizan y extraen información de las bases de datos. Siempre de acuerdo con las especificaciones y las normas de seguridad dictadas por al administrador.
Un lenguaje de manipulación de datos es un lenguaje que permite a los usuarios acceder o manipular los datos organizados mediante el modelo de datos apropiado. Hay dos tipos básicamente:
Una consulta es una instrucción de solicitud para recuperar información. La parte de un DML se llama lenguaje de consultas.
Ejm:
Select nombre, dirección
from cliente
where id_cliente = 2
La secuencia conceptual de operaciones que ocurren para acceder cierta información que contiene una base de datos es la siguiente:
El DBA es la persona encargada de definir y controlar las bases de datos corporativas, además proporciona asesoría a los usuarios y ejecutivos que la requieran.
Las principales funciones del administrador son:
Para que el DBA pueda cumplir con todas estas funciones deberá interactuar con todo el personal de la organización como se explica en la figura:
Gráfico # 2 : Diagrama de interacción del Dba con los usuarios

Fuente : Análisis y diseño detallado de aplicaciones informáticas de gestión
Autor: Diego Burbano
Además de la clasificación por la función de las bases de datos, éstas también se pueden clasificar de acuerdo a su modelo de administración de datos.
Un modelo de datos es básicamente una "descripción" de algo conocido como contenedor de datos (algo en donde se guarda la información), así como de los métodos para almacenar y recuperar información de esos contenedores. Los modelos de datos no son cosas físicas; son abstracciones que permiten la implementación de un sistema eficiente de base de datos, por lo general se refieren a algoritmos, y conceptos matemáticos.
Algunos modelos con frecuencia utilizados en las bases de datos:
Estas son bases de datos que, como su nombre indica, almacenan su información en una estructura jerárquica. En este modelo los datos se organizan en una forma similar a un árbol (visto al revés), en donde un nodo padre de información puede tener varios hijos. El nodo que no tiene padres se le conoce como raíz, y a los nodos que no tienen hijos se les conoce como hojas.
Una de las principales limitaciones de este modelo, es su incapacidad de representar eficientemente la redundancia de datos.
Este es un modelo ligeramente distinto del jerárquico, en donde su diferencia fundamental es la modificación del concepto de un nodo, permitiendo que un mismo nodo tenga varios padres (algo no permitido en el modelo jerárquico).
Fue una gran mejora con respecto al modelo jerárquico, ya que ofrecía una solución eficiente al problema de redundancia de datos, pero aun así, la dificultad que significa administrar la información en una base de datos de red, ha significado que sea un modelo utilizado en su mayoría por programadores más que por usuarios finales.
Este es el modelo más utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente. Tras ser postuladas sus bases en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José California, no tardó en consolidarse como un nuevo paradigma en los modelos de base de datos. Su idea fundamental es el uso de "relaciones". Estas relaciones podrían considerarse en forma lógica como conjuntos de datos llamados "tuplas". Pese a que esta es la teoría de las bases de datos relacionales creadas por Edgar Frank Codd, la mayoría de las veces se conceptualiza de una manera más fácil de imaginar. Esto es pensando en cada relación como si fuese una tabla que está compuesta por registros (las filas de una tabla), que representarían las tuplas, y campos (las columnas de una tabla).
En este modelo, el lugar y la forma en que se almacenen los datos no tienen relevancia (a diferencia de otros modelos como el jerárquico y el de red). Esto tiene la considerable ventaja de que es más fácil de entender y de utilizar para un usuario casual de la base de datos. La información puede ser recuperada o almacenada por medio de "consultas" que ofrecen una amplia flexibilidad y poder para administrar la información.
El lenguaje más común para construir las consultas a bases de datos relacionales es SQL, Structured Query Language o Lenguaje Estructurado de Consultas, un estándar implementado por los principales motores o sistemas de gestión de bases de datos relacionales.
Las bases de datos relacionales pasan por un proceso al que se le conoce como Normalización de una base de datos.
En el modelo relacional se usan un grupo de tablas para representar los datos y las relaciones entre ellos. Cada tabla esta compuesta por varias columnas, y cada columna tiene un nombre único.
Tabla # 1 : Tabla de una base de datos relacional
|
Id_cliente |
nombre_cliente |
dirección_cliente |
telefono_cliente |
|
1 |
Diego Burbano |
Av. 6 de Diciembre |
2266171 |
|
2 |
Liliana Cisneros |
Rio Coca |
2439481 |
|
3 |
Pablo Monsserrath |
Av.De los Granados |
2546789 |
|
4 |
Javier Moncayo |
12 de Octubre |
2435987 |
|
numero_cuenta |
estado_cuenta |
saldo_contable |
saldo_disponible |
|
12005190253 |
Activa |
5.689,15 |
5.000,15 |
|
12556456054 |
Cerrada |
389,15 |
389,15 |
|
12489794549 |
Activa |
89,15 |
89,15 |
|
12454894984 |
Activa |
10,15 |
10,15 |
|
id_cliente |
numero_cuenta |
|
1 |
12005190253 |
|
1 |
12556456054 |
|
3 |
12489794549 |
|
4 |
12454894984 |
Autor : Diego Burbano
La Tabla # 1 presenta un ejemplo de base de datos relacional consistente en tres tablas, la primera muestra los clientes de un banco, la segunda las cuentas y la tercera las cuentas que pertenecen a cada cliente.
El modelo relacional es un ejemplo de un modelo basado en registros. Los modelos basados en registros se denominan así porque la base de datos se estructura en registros de formato fijo de varios tipos. Cada tabla contiene registros de un tipo particular. Cada tipo de registro define un número fijo de campos, o atributos.
El modelo de datos relacional se encuentra a un nivel de abstracción inferior al modelo de datos E-R. Los diseños de bases de datos a menudo se realizan en el modelo E-R y después se traducen al modelo relacional.
Este modelo está basado en una percepción del mundo real, que consta de una colección de objetos básicos, llamados entidades, y de relaciones entre estos objetos. Una entidad es todo aquello que exhibe autonomía, diferenciación y existencia en el mundo real que es distinguible de otros objetos. Por ejemplo cada persona es una entidad y las cuentas bancarias pueden ser consideradas entidades.
Las entidades se describen en la base de datos mediante atributos. Por ejemplo los atributos nombre_cliente, dirección_cliente pueden describir una entidad cliente.
Adicionalmente id_cliente, se usa para identificar unívocamente a los clientes (dado que puede existir en el mundo real un cliente con el mismo nombre, dirección), de esta manera de asigna un identificador único para cada cliente. Una relación es una asociación entre varias entidades, Por ejemplo una relación puede asociar un cliente con cada cuenta que tiene.
El conjunto de todas las entidades del mismo tipo, y el conjunto de todas las relaciones del mismo tipo, se denominan respectivamente conjunto de entidades y conjunto de relaciones.
La estructura lógica general de una base de datos se puede expresar gráficamente mediante un diagrama E-R, q consta de los siguientes componentes:
Cada componente se etiqueta con la entidad o relación que representa.
Este modelo, bastante reciente, y propio de los modelos informáticos orientados a objetos, trata de almacenar en la base de datos los objetos completos (estado y comportamiento).
Las limitaciones impuestas por el modelo relacional han surgido como obstáculos. En consecuencia, los investigadores de bases de datos inventaron nuevos modelos de datos que resuelven las limitaciones del modelo de datos relacional.
Las aplicaciones de bases de datos tradicionales consisten en tareas de procesamiento de datos, tales como la banca, seguros, ventas, gestión de recursos humanos. Dichas aplicaciones presentan conceptualmente tipos de datos simples. Los elementos de datos básicos son registros bastante pequeños y cuyos campos son atómicos, es decir, no contienen estructuras adicionales y en los que se cumple la primera forma normal.
En los últimos años, la demanda ha incrementado la forma de abordar los tipos de datos más complejos. Por ejemplo, un conjunto de direcciones. Mientras una dirección completa puede ser vista como un elemento de datos atómico de tipo cadena de caracteres, esta forma de verlo escondería detalles como la calle, barrio, sector, provincia que pueden ser interesantes para una consulta. Por otra parte si una dirección se la presenta dividiéndole en varias componentes (calle, barrio, sector, provincia) las consultas escritas serían más complicadas, pues tendría que mencionar cada campo. Una alternativa mejor es permitir tipos de datos estructurados, que admiten un tipo dirección con subpartes calle, barrio, sector.
Las bases de datos orientadas a objetos (BDOO) almacenan y manipulan información que puede ser digitalizada por objetos, proporcionan una estructura flexible con acceso ágil, rápido, con gran capacidad de modificación.
Además combina las mejores cualidades de los archivos planos, las bases jerárquicas y relacionales. La BDOO representan el siguiente paso en la evolución de las bases de datos para soportar análisis, diseño y programación orientada a objetos.
Las BDOO permiten el desarrollo y mantenimiento de aplicaciones complejas ya que se puede utilizar un mismo modelo conceptual y así aplicado al análisis, diseño y programación, esto reduce el problema entre los diferentes modelos a través de todo el ciclo de vida, con un costo significativamente menor.
Las BDOO ofrecen un mejor rendimiento de la máquina que las bases de datos relacionales, para aplicaciones ó clases con estructuras complejas de datos. Sin embargo, las BDOO coexistirán con las bases de datos relacionales como una forma de estructura de datos dentro de una BDOO.
Una base de datos orientada ha objetos es una base de datos que incorpora todos los conceptos importantes de la programación orientada ha objetos:
Se esta trabajando en SQL3, que es el estándar de SQL92 extendido que soportaría los nuevos conceptos orientados a objetos y tendría compatibilidad con SQL92.
Es cualquier cosa real ó abstracta acerca de la cual almacenamos datos y los métodos que controlan dichos datos. Por ejm. En una empresa EMPLEADO se aplica a los objetos que son personas empleadas por alguna organización alguna INSTANCIA podría ser Juan Pérez, Javier Proaño.
Es una categoría de objeto Ejm: EMPLEADO. Un objeto es una instancia de un tipo de objeto. PERSONA (Juan Perez).
Es el resultado (o acto) de ocultar los detalles de implantación de un objeto respecto de su usuario.
Invoca una operación específica, con uno o más objetos como parámetros. Es decir, es para que se lleve acabo la operación indicada y que se produzca el resultado. En consecuencia las implantaciones se refieren a los objetos como solicitudes.
Es una implantación de un tipo de objeto. Especifica una estructura de datos y los métodos operativos permisibles que se aplican a cada uno de sus objetos.
Una clase implanta el tipo de objeto. Una subclase hereda propiedades de su clase padre, una subclase puede heredar la estructura y los métodos o algunos de los métodos.
En las BDOO los datos están encapsulados y se dice que estos son activos más que pasivos; debido a que por ejemplo: La clase mayor detecta si tiene un hijo (objeto) más o uno menos, es por esto que se dice que están activos ya que cuentan los hijos u objetos que tiene.
Denota las características esenciales de un objeto que lo distinguen de todos los demás tipos objeto, y proporciona así fronteras conceptuales nítidamente definidas respecto a la perspectiva del observador. Una abstracción se centra en la visión extrema de un objeto, y, por lo tanto sirve para separar el comportamiento esencial de un objeto de su implantación.
Se basa en el concepto de fragmentación de los programas en componentes individuales para reducir su complejidad en algún grado, y para crear además una serie de fronteras bien definidas y documentadas dentro del programa, donde estas fronteras o interfaces tienen un incalculable valor cara a la comprensión del programa.
Una clasificación u ordenación de abstracciones.
Es un conjunto de objetos que tienen un mismo comportamiento (comparten una misma funcionalidad) que se puede observar desde afuera.
Permite construir clases genéricas para otras clases.
Están construidos mediante algunos más simples ó mediante la aplicación de constructores a ellos. Los objetos más simples son objetos como: Integer, Carácter, String de bytes de cualquier longitud, booléanos, punto flotante y algunos pueden ser de tipo atómico.
En la Orientación a objetos, el conocimiento se descentraliza en todos los objetos que lo componen, cada objeto sabe hacer lo suyo y no le interesa saber cómo el vecino hace su trabajo, pero sabe que lo hace y qué es lo que puede hacer.
" La orientación a objetos proporciona una solución que conduce a un universo de objetos ‘bien educados’ que se piden de manera cortés, concederse mutuamente sus deseos." Dan Ingalls de Smalltalk.
La meta es dejar la etapa en la que la construcción del software es una labor de artesanos, y pensar en la etapa en la que se pueda tener fábricas de software, con gran capacidad de reutilización de código y con metodologías eficientes y efectivas que se apliquen al proceso de producción.
A finales de los 80’s aparecieron las primeras BDOO, es una base de datos inteligente. Soporta el paradigma orientado a objetos almacenando datos y métodos, y no sólo datos. Está diseñada para ser eficaz, desde el punto de vista físico, para almacenar objetos complejos. Evita el acceso a los datos; esto es mediante los métodos almacenados en ella. Es más segura ya que no permite tener acceso a los datos (objetos); esto debido a que para poder entrar se tiene que hacer por los métodos que haya utilizado el programador.
Tabla # 2: Tabla de algunas BDOO existentes y sus proveedores
|
Producto |
Proveedor |
|
Gemstone |
Servio Corporation, Alameda,CA |
|
Itasca |
Itasca Systems,Inc.,Minneapolis,MN |
|
Objectivity |
Objectivity,Menlo Park,Ca |
|
Object Store |
Object Design,Inc.,Burlington,MA |
|
Ontos |
Ontos Inc.,Bellerica,MA |
|
Versant |
Versant Object Technology,Menlo Park,CA |
Fuente: http://www.elrinconcito.com/articulos/BaseDatos/BasesDatos.htm
Autor : Diego Burbano
Los primeros se diseñaron como una extensión de los lenguajes de programación Smalltalk ó C++. El DML (lenguaje para la manipulación de datos; también conocido como DML) y el DDL construían un lenguaje OO común.
Algunas características son independientes de la arquitectura fundamental de una BDOO pero son comunes a la mayoría de ellas:
En las BDOO, la organización "Gestión Manejadora de Datos Objeto (ODMG)" representa el 100% de las BDOO industriales y ha establecido un estándar de definición (ODL - Lenguaje de Definición de datos) y manipulación (OQL - Lenguaje de consulta) de bases de datos equivalente a SQL.
Respecto a las relacionales, todas (Oracle, Informix, etc.) están añadiendo en mayor o menor grado algunos aspectos de la orientación a objetos. ANSI(Instituto Nacional Estadounidense de Estándar), por su parte, está definiendo un SQL-3 que incorpora muchos aspectos de la orientación a objetos. El futuro del SQL-3 es sin embargo incierto, ya que ODMG ha ofrecido a ANSI su estándar para que sirva de base para un nuevo SQL, con lo que solo habría un único estándar de base de datos.
El grupo ODMG (Grupo Manejador de Datos Objeto) nació de un grupo más grande, llamado "Grupo Manejador de Objetos (OMG)", donde están representados todas las cosas con alguna influencia en el sector. Este grupo esta definiendo un estándar universal por objetos. Este estándar permitirá que un objeto sea programado en cualquier lenguaje y sistema operativo. Esto facilitará enormemente el desarrollo de sistemas abiertos cliente-servidor.
Está su flexibilidad, y soporte para el manejo de tipos de datos complejos. Por ejemplo, en una base de datos convencional, si una empresa adquiere varios clientes por referencia de clientes servicio, pero la base de datos existente, que mantiene la información de clientes y sus compras, no tiene un campo para registrar quién proporcionó la referencia, de qué manera fue dicho contacto, o si debe compensarse con una comisión, sería necesario reestructurar la base de datos para añadir este tipo de modificaciones. Por el contrario, en una BDOO, el usuario puede añadir una "subclase" de la clase de clientes para manejar las modificaciones que representan los clientes por referencia.
La subclase heredará todos los atributos, características de la definición original, además se especializará en especificar los nuevos campos que se requieren así como los métodos para manipular solamente estos campos. Naturalmente se generan los espacios para almacenar la información adicional de los nuevos campos. Esto presenta la ventaja adicional que una BDOO puede ajustarse a usar siempre el espacio de los campos que son necesarios, eliminando espacio desperdiciado en registros con campos que nunca usan.
La segunda ventaja de una BDOO, es que manipula datos complejos en forma rápida y ágilmente. La estructura de la base de datos está dada por referencias (o apuntadores lógicos) entre objetos.
Al considerar la adopción de la tecnología orientada a objetos, la inmadurez del mercado de BDOO constituye una posible fuente de problemas por lo que debe analizarse con detalle la presencia en el mercado del proveedor para adoptar su producto en una línea de producción sustantiva.
El segundo problema es la falta de estándares en la industria orientada a objetos. Sin embargo, el "Grupo Manejador de Objetos" (OMG), es una organización Internacional de proveedores de sistemas de información y usuarios dedicada a promover estándares para el desarrollo de aplicaciones y sistemas orientados a objetos en ambientes de cómputo en red.
La implantación de una nueva tecnología requiere que los usuarios iniciales acepten cierto riesgo. Aquellos que esperan resultados a corto plazo y con un costo reducido quedarán desilusionados. Sin embargo, para aquellos usuarios que planean a un futuro intermedio con una visión tecnológica avanzada, el uso de tecnología orientada a objetos, paulatinamente compensará todos los riesgos.
Las BDOO permiten que los objetos hagan referencia directamente a otro mediante apuntadores suaves. Esto hace que las BDOO pasen más rápido del objeto A al objeto B que las BDR, las cuales deben utilizar comandos JOIN para lograr esto. Incluso el JOIN optimizado es más lento que un recorrido de los objetos. Así, incluso sin alguna afinación especial, una BDOO es en general más rápida en esta mecánica de caza-apuntadores.
Las BDOO hacen que el agrupamiento sea más eficiente. La mayoría de los sistemas de bases de datos permiten que el operador coloque cerca las estructuras relacionadas entre sí, en el espacio de almacenamiento en disco. Esto reduce en forma radical el tiempo de recuperación de los datos relacionados, puesto que todos los datos se leen con una lectura de disco en vez de varias. Sin embargo, en una BDR, los objetos de la implantación se traducen en representaciones tabulares que generalmente se dispersan en varias tablas. Así, en una BDR, estos renglones relacionados deben quedar agrupados, de modo que todo el objeto se pueda recuperar mediante una única lectura del disco. Esto es automático en una BDOO. Además, el agrupamiento de los datos relacionados, como todas las subpartes de un ensamble, puede afectar radicalmente el rendimiento general de una aplicación. Esto es relativamente directo en una BDOO, puesto que representa el primer nivel de agrupamiento. Por el contrario, el agrupamiento físico es imposible en una BDR, puesto que esto requiere un segundo nivel de agrupamiento: un nivel para agrupar las hileras que representan a los objetos individuales y un segundo para los grupos de hileras que representan a los objetos relacionados.
Un sistema de BDOO debe satisfacer dos criterios:
Por ejemplo: para la extensión posible este debe ser consistente en los actuales cortes de lenguajes de programación OO.
El primer criterio se traduce en 5 características como son:
Persistencia, Manejador de almacenamiento secundario, Concurrencia, Recuperación, y Facilidad de Query.
La Segunda se traduce en 8 características: Objetos Complejos, Identidad del objeto, Encapsulación, Tipos ó Clases, Sobre paso con combinación retrasada, Extensibilidad y Completación Computacional.
Una base de datos distribuida (BDD) es la unión de las bases de datos con Redes distribuidas geográficamente.
La base de datos está almacenada en varias computadoras conectadas en red, (ya sea en el mismo lugar físicamente o distribuidas a lo largo de la red) lo que permite al acceso de datos desde diferentes máquinas. Está manejada por el Sistema de Administración de Datos Distribuida SABDD o Sistema de Gestión de Base de datos distribuida. Son la evolución de los Cliente-Sevidor.
La razón principal detrás de las BDD son los organismos descentralizados. Esto les da la capacidad de unir las bases de datos de cada localidad y acceder así a la información, sin tener todo centralizado en un solo punto. Ejemplo: bancos, cadenas de hoteles, campus de distintas universidades, sucursales de tiendas departamentales, etc.
Los principales problemas que se generan por el uso de la tecnología de bases de datos distribuidas son en lo referente a duplicidad de datos y a su integridad al momento de realizar actualizaciones a los mismos. Además, el control de la información puede constituir una desventaja, debido a que se encuentra diseminada en diferentes localidades geográficas.
Los usuarios de la base de datos no están situados actualmente junto al sistema de bases de datos, sino que se conectan a él a través de la red. Se puede diferenciar entonces las máquinas cliente, en donde trabajan los usuarios remotos de la base de datos, y las máquinas servidor en las que se ejecuta el sistema de base de datos.
Gráfico # 3: Diagrama de Arquitecturas

Autor : Diego Burbano
En una Arquitectura de dos capas la aplicación se divide en un componente que reside en la máquina cliente, que llama a la funcionalidad del sistema de base de datos en la máquina servidor mediante instrucciones del lenguaje de consultas. Los estándares de interfaces de programas de aplicación como ODBC y JDBC se usan para la interacción entre el cliente y el servidor.
En cambio en una arquitectura de tres capas, la máquina cliente actúa simplemente como frontal y no contiene ninguna llamada directa a la base de datos. En su lugar, el cliente se comunica con un servidor de aplicaciones, usualmente mediante una interfaz de formularios. El servidor de aplicaciones, a su vez, se comunica con el sistema de base de datos para acceder a ellos.
La lógica del negocio de la aplicación, que establece las acciones a realizar bajo determinadas condiciones, se incorpora en el servidor de aplicaciones, en lugar de ser distribuida a múltiples clientes.
El diseño de una base de datos ha de estar redactado con la suficiente claridad para que pueda ser entendido rápidamente. El lenguaje utilizado debe ser lo suficientemente claro, conciso y detallado para que explique con total claridad el diseño del modelo, sus objetivos, sus restricciones, en general todo aquello que afecte al sistema de forma directa o indirecta.
Se trata de realizar un sistema de bases de datos lo suficientemente robusto para que sea capaz de recuperarse frente a errores o usos inadecuados. Se deben utilizar gestores con las herramientas necesarias para la reparación de los posibles errores que las bases de datos pueden sufrir, por ejemplo tras un corte inesperado de luz.
El diseño deber permitir la implementación del modelo físico en diferentes gestores de bases de datos.
Ningún sistema informático es estático, las necesidades de los usuarios varían con el tiempo y por lo tanto las bases de datos se deben adaptar a las nuevas necesidades, por lo que se precisa que un buen diseño facilite el mantenimiento, esto es, las modificaciones y actualizaciones necesarias para adaptarlo a una nueva situación.
Se deben aprovechar al máximo los recursos de la computadora, minimizando la memoria utilizada y el tiempo de proceso o ejecución, siempre que no sea a costa de los requisitos anteriores. En este punto se debe tener en cuenta los gestores cliente / servidor de bases de datos. En muchas ocasiones es más rentable cargar de trabajo al servidor y liberar recursos de los clientes.
La explotación efectiva de la información dará ventaja competitiva a las organizaciones.
Las bases de datos orientadas a objetos empleadas para diseño y manufactura asistida por computadora CAD/CAM serán utilizados a un mismo nivel que las Bases se Datos relacionales de la actualidad.
Los lenguajes de consulta (SQL) permitirán el uso del lenguaje natural para solicitar información de la Base de Datos, haciendo más rápido y fácil su manejo.
El uso de las bases de datos distribuidas se incrementará de manera considerable en la medida en que la tecnología de comunicación de datos brinde más facilidades para ello. El uso de bases de datos facilitará y soportará en gran medida a los Sistemas de Información para la Toma de Decisiones
La arquitectura de un sistema de base de datos está influenciada por el sistema informático que soporta la instalación del SGBD, lo que reflejará muchas de las características propias del sistema subyacente en el SGBD.
Las redes de computadores permiten separar tareas en un esquema de clientes y servidores, el procesamiento paralelo dentro del computador permite acelerar algunas de las tareas de la base de datos así como la posibilidad de ejecutar más transacciones por segundo. Las consultas se pueden paralelizar permitiendo así que una consulta se pueda ejecutar por más de un procesador al mismo tiempo, esta característica ha llevado al estudio de las bases de datos paralelas.
La distribución de datos a través de distintos departamentos de una organización permite que ellos residan donde han sido generados (y donde se entiende que son más requeridos); la idea de mantener una copia de estos datos en otros lugares permite que puedan seguir las operaciones sobre los datos aún si alguno de estos sitios sufre algún desastre. El estudio de este tipo de descentralización de los datos lleva al desarrollo de los sistemas de base de datos distribuidos.
Un sistema de base de datos centralizado es aquel que se ejecuta en un único sistema computacional sin tener, para tal efecto, que interactuar con otros computadores. El rango de estos sistemas comprende desde los sistemas de bases de datos monousuario ejecutándose en computadores personales hasta los sistemas de bases de datos ejecutándose en sistemas de alto rendimiento.
Normalmente los sistemas de base de datos monousuarios no suelen proporcionar muchas de las facilidades que ofrecen los sistemas multiusuario, en particular no tienen control de concurrencia y tienen precarios o inexistentes sistemas de recuperación.
Dado que las máquinas en las cuales se utilizan los sistemas monousuarios son comúnmente computadores de propósito general, la arquitectura de estas máquinas es siempre parecida (de 1 a 2 procesadores que comparten la memoria principal) por tanto los sistemas de base de datos que se ejecutan sobre estas maáquinas no intentan dividir una consulta simple entre los distintos procesadores, sino que ejecutan cada consulta en un único procesador posibilitando así la concurrencia de varias consultas. Este tipo de sistemas dan la sensación de una mayor productividad (puesto que pueden ejecutar un mayor número de transacciones por segundo) a pesar de que cada transacción individualmente no se ejecute más rápido. Por el contrario las máquinas paralelas tienen un gran número de procesadores y los sistemas de base de datos que ahí se ejecutan siempre tenderán a paralelizar las tareas simples (consultas) que solicitan los usuarios.
Esta arquitectura consta de un cliente inteligente que puede solicitar servicios de un servidor en red. En el lado del cliente de esta arquitectura se tiene una aplicación frontal bastante sencilla ejecutándose en un ordenador personal. A una aplicación cliente / servidor se le puede pedir que realice validaciones o que muestre listas de opciones válidas, pero la mayor parte de las reglas de integridad de los datos y de negocio se imponen en la propia base de datos: relaciones, índices, valores predeterminados, rangos, disparadores, procedimientos almacenados, etc. En el lado del servidor se encuentra un motor de servidor de bases de datos inteligentes. El servidor está diseñado para aceptar consultas SQL desde la aplicación frontal, generalmente en forma de llamadas a procedimientos almacenados que devuelven conjunto de resultados claramente definidos y de ámbito limitado.
Generalmente, la aplicación cliente es responsable, al menos, de la administración de la conexión, la captura de los datos, la presentación de datos y la administración de los errores.
El servidor es el responsable de la administración inteligente de los recursos, la administración de la seguridad, la administración de los datos, de las consultas y sobre todo de la integridad de los datos.
Con el crecimiento de los computadores personales (PC) y de las redes de área local (LAN), se han ido desplazando hacia el lado del cliente la funcionalidad de la parte visible al usuario de la base de datos (interfaces de formularios, gestión de informes, etc.) de modo que los sistemas servidores provean la parte subyacente que tiene que ver con el acceso a las estructuras de datos, evaluación y procesamiento de consultas, control de concurrencia y recuperación. Los sistemas servidores pueden dividirse en 2 tipos: los servidores transaccionales (que sirven para agrupar la lógica del negocio en un servicio aparte, proveen una interfaz a través de la cual los clientes pueden enviar peticiones como lo son los ODBC ) y los servidores de datos(los cuales envían datos a más bajo nivel y que descansan en la capacidad de procesamiento de datos de las maquinas clientes).
Existen 2 arquitecturas dominantes en la construcción de motores de base de datos cliente-servidor: los motores multiprocesos y los motores multihilos.
Algunos motores de base de datos confían en múltiples aplicaciones para realizar su trabajo. En este tipo de arquitectura, cada vez que un usuario se conecta a la base de datos, ésta inicia una nueva instancia de la aplicación de base de datos. Con el fin de coordinar a muchos usuarios que accesan los mismos conjuntos de datos estos ejecutables trabajan con un coordinador global de tareas que planifica operaciones para todos los usuarios.
El ejemplo más popular de motores de base de datos multiprocesos es el Oracle Server (Oracle corporation) el cual carga 16 tipos de ejecutables distintos que realizan distintas tareas. El sistema ejecuta sus aplicaciones que sirven para administrar el acceso de múltiples usuarios a las tablas, el registro y control de versiones de una transacción y otras características como la replicación de datos, transacciones distribuidas. Por otro lado, cuando una conexión a la base de datos se establece, el sistema carga los ejecutables relacionados a tareas de usuario.
Cada vez que un usuario se conecta a una base de datos Oracle, esta carga un ejecutable con una nueva instancia de la base de datos, las consultas de usuario son transmitidas a este ejecutable, el cual trabaja en conjunto con otros ejecutables en el servidor que retornan conjuntos de datos, manejan los bloqueos y ejecutan todas las funciones necesarias para el acceso de datos.
La mayoría de los motores de base de datos multiprocesos fueron desarrollados antes de que los sistemas operativos soportaran características tales como hilos o planificación de tareas (scheduling). Como resultado de esto, el hecho de descomponer una operación significaba escribir un ejecutable distinto para manejar esta operación. Esta característica proporciona el beneficio de la fácil escalabilidad a través de la adición de más CPUs.
En un ambiente de multitarea el sistema operativo divide el tiempo de procesamiento entre múltiples aplicaciones asignándoles una porción de tiempo de CPU ("slice") a cada una. De esta manera siempre hay una sola tarea ejecutándose a la vez, sin embargo el resultado es que múltiples aplicaciones aparenten estar corriendo simultáneamente en una sola CPU. La ventaja real, sin embargo, viene cuando el sistema operativo cuenta con múltiples CPUs.
Los motores de base de datos multihilos abordan el problema del acceso multiusuario de una manera distinta, pero con principios similares. En lugar de confiar en que el sistema operativo comparta los recursos de procesamiento, el motor toma la responsabilidad por sí mismo, lo que en la práctica se asocia a una mejor portabilidad del sistema. Motores de base de datos comerciales como Sybase Adaptive Server o Microsoft Sql Server son ejemplos de este enfoque.
Las ventajas de este tipo de motores radican en una mayor eficiencia en el uso de recursos para determinadas plataformas. Mientas un sistema multiprocesos consume entre 500 Kb y 1 Mb por conexión, un motor multihilos consume entre 50 y 100 Kb de RAM diferencia que puede ser utilizada en caché de datos y procedimientos. Otra ventaja es que no hay necesidad de un mecanismo de comunicación de interprocesos.
De esta manera, la base de datos utiliza un elemento finito de trabajo, (el hilo) para una variedad de operaciones (instrucciones de usuarios, bloqueos de datos, E/S de disco, administración del caché, etc.) en vez de utilizar aplicaciones especializadas para cada tarea.
Las desventajas más reconocidas son dos: escalabilidad y portabilidad. La escalabilidad se centra en la habilidad que tengan los distintos motores de base de datos multihilos de descomponer una operación de manera que múltiples tareas puedan ejecutar esta operación.
Los problemas de portabilidad guardan relación con el SMP (multiprocesamiento simétrico) y se originan en el hecho de que dado que diferentes fabricantes de hardware dan soporte a SMP de diferentes maneras, estos motores de base de datos han tenido que implementar técnicas neutras que buscan funcionar bien en cualquier implementación física, lo que conlleva una sobrecarga en el motor y una limitación en la habilidad de escalar a un gran número de procesadores.
Los sistemas paralelos de base de datos constan de varios procesadores y varios discos conectados a través de una red de interconexión de alta velocidad. Para medir el rendimiento de los sistemas de base de datos existen 2 medidas principales: la primera es la productividad (throughput) que se entiende como el número de tareas que pueden completarse en un intervalo de tiempo determinado. La segunda es el tiempo de respuesta (response time) que es la cantidad de tiempo que necesita para completar una única tarea a partir del momento en que se envíe. Un sistema que procese un gran número de pequeñas transacciones puede mejorar su productividad realizando muchas transacciones en paralelo. Un sistema que procese transacciones más largas puede mejorar tanto su productividad como sus tiempos de respuesta realizando en paralelo cada una de las subtareas de cada transacción.
Las ganancias en este tipo de SGBD se pueden dar en términos de velocidad (menor tiempo de ejecución para una tarea dada) y ampliabilidad (capacidad de procesar tareas más largas en el mismo tiempo).
Existen varios modelos de arquitecturas para máquinas paralelas, los más mencionados son:
En un SGBD distribuido, la base de datos se almacena en varios computadores que se pueden comunicar a su vez por distintos medios de comunicación (desde redes de alta velocidad a líneas telefónicas). No comparten memoria ni discos y sus tamaños pueden variar tanto como sus funciones pudiendo abarcar desde PC hasta grandes sistemas. Se denomina con el término de emplazamientos o nodos a todos aquellos computadores que pertenecen a un sistema distribuido.
Las principales diferencias entre las bases de datos paralelas y las bases
de datos distribuidas son las siguientes: las bases de datos distribuidas se
encuentran normalmente en varios lugares geográficos distintos, se administran
de forma separada y poseen una interconexión más lenta. Otra
diferencia es que en un sistema distribuido se dan dos tipos de transacciones,
las locales y las globales. Una transacción local es aquella que accede
a los datos del único emplazamiento en el cual se inició la transacción.
Por otra parte una transacción global es aquella que o bien accede a
los datos situados en un emplazamiento diferente de aquel en el que se inició la
transacción, o bien accede a datos de varios emplazamientos distintos.
Un sistema de base de datos distribuido se conoce por:
Richard Mathew Stallman fue el precursor del movimiento de software libre (FSF), a la edad de 18 años ingresó en el laboratorio de inteligencia artificial del MIT, el estaba acostumbrado a trabajar en un entorno de software libre, donde todos compartían todo. El momento en que su comunidad empezó a desaparecer ya que una compañía contrató a casi todos los hackers de laboratorio de IA, además el laboratorio en el que trabajaba adquirió un PDP-10, sus administradores decidieron utilizar el sistema no libre en lugar del ITS que había sido diseñado en el MIT y que era libre.
Al desaparecer su comunidad, Stallman se vio obligado a tomar una elección, unirse al mundo de software propietario, firmar los acuerdos de no revelar, y prometer que no iría en ayuda de sus amigo hacker. El podía haber hecho dinero de esa forma, pero sabía que al final de su carrera, al regresar a ver atrás, sentiría que utilizó su vida para empeorar al mundo. La otra opción era dejar el campo de la computación.
Lo primero que hizo fue un sistema operativo. Le pudo el nombre GNU, este nombre se eligió siguiendo una tradición hacker, como acrónimo recursivo para GNU´s not UNIX.
Desde ese momento Stallman no paró, realizo muchos cambios programando software libre para todos con la posibilidad de modificar sus fuentes a su conveniencia y sin estar atados a una empresa que es dueña de los códigos fuente.
El Software de Open Source exige la distribución libre y gratuita acompañada del código fuente. Código abierto (open source en inglés) es el término por el que se le conoce a software distribuido y desarrollado en una determinada forma. Este término empezó a utilizarse en 1998 por usuarios de la comunidad del software libre, tratando de usarlo como reemplazo al ambiguo nombre original del software libre (free software).
En inglés, "free software" puede significar diferentes cosas. Por un lado, permite pensar en "software por el que no hay que pagar", y se adapta al término de forma igualmente válida que el significado que se pretende (software que posee ciertas libertades).
Lamentablemente, el término no resultó apropiado como reemplazo para el ya tradicional free software, y en la actualidad es utilizado para definir un movimiento nuevo de software, diferente al movimiento del software libre, aunque no completamente incompatible con este, de modo que es posible (como de hecho ocurre) que ambos movimientos trabajen juntos en el desarrollo práctico de proyectos.
El significado obvio del término "código abierto" es "se puede mirar el código fuente", lo cual es un criterio más débil y flexible que el del software libre; un programa de código abierto puede ser software libre, pero también puede serlo un programa semi-libre o incluso uno completamente propietario.
El software de código abierto (OSS por sus siglas en inglés) es software para el que su código fuente está disponible públicamente, aunque los términos de licenciamiento específicos varían respecto a lo que se puede hacer con ese código fuente.
La obvia ventaja monetaria es que no existen costos de licencia para el producto en sí mismo. El mayor diferenciador de todos modos es el que el usuario puede, además obtener el código fuente. Esto le brinda independencia del proveedor ("contribuyente original" en el lenguaje de Código Abierto). De este modo el usuario no depende de su existencia y prioridades.
Toda la información (estado, errores (bugs), etc.) es abierta también, no existe política de ocultamiento corporativa ni censura. Si algo no funciona, no tendrá inconveniente en averiguarlo rápidamente. Como consecuencia, los proyectos de Código Abierto son muy rápidos para reaccionar, si surgen problemas. Un desafío de todos modos es el que Usted necesita decidir la importancia de los inconvenientes que pudiesen surgir y el impacto en su propio proyecto.
La comunidad de usuarios (y desarrolladores) hacen una notable diferencia. Debido a la diversidad de usuarios, los productos están usualmente muy bien probados y Usted puede obtener ayuda y consejo rápidamente.
Los proyectos de Código Abierto funcionan bien cuando el alcance es el de herramientas básicas y dónde los requerimientos están claramente definidos. Especialmente, los proyectos de aplicaciones de negocio tienden a no llegar a nada debido a grandes "diseños por comité", discusiones y desacuerdos respecto de prioridades.
La prueba de funciones y rendimiento, requiere de un enfoque muy estructurado y recursos, usualmente limitados en los proyectos de Código Abierto. Lo mismo sucede con el empaquetado (packaging), actualizaciones y mejoras. Otro inconveniente puede darse por el requerimiento de licencias de terceros.
En una compañía típica de software de aplicación, cerca del 50-70% del costo final total está relacionado con el costo de pre-venta: Representantes de Venta, gastos de Marketing e Ingenieros de Pre-venta realizando demos y presentaciones.
Todo apunta que las tecnologías Open Source cambiarán radicalmente la industria del software en 2 o 3 años. Las bases de datos son parte de esta transformación. Poco a poco, pero sin descanso, el software OpenSource está adquiriendo una robustez y una potencia suficiente como para plantar cara al software comercial. La liberalización de Interbase y Mysql es sólo el principio. ¿Quién usa bases de datos OpenSource? Pues desarrolladores de Web y software, y pequeñas y medianas empresas. La mayoría de usuarios también lo integran con otras aplicaciones OpenSource. Es decir, normalmente, se tiende a radicalizar: o todo OpenSource, o todo comercial. Aunque el panorama irá cambiando.
Muchas felicidadesOrbelina | 2007-08-15 18:51:04
Hola Diego Javier, muchas gracias por tan importante material que has enviado. Para mi ha sido de mucha ayuda para resolver las tareas de la Universidad. Soy una estudiante de Lic. En computacion y como tal recurro a monografias.com Por favor sigue enviando este tipo de informacion y ayudando a muchos como yo. Exitos sigue adelante y que "DIOS" te bendiga.
Buenoalmiux | 2008-08-05 15:34:12
Bueno... : )
Trabajos relacionados
Ver mas trabajos de Computacion |
|
Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.