epelpad

El post que buscas se encuentra eliminado, pero este también te puede interesar

Cual es la razón de ser de una Base de Datos?

Antes de contestar eso, sería conveniente saber porque nuestro sistema requiere de una Base de Datos y no es capaz de prescindir de una base de datos en ciertas situaciones. La gran mayoría de la información en un sistema de computo se encuentra basada en un tipo de "File System" en archivos denominados "Flat Files". El tipo de "File System" generalmente depende del sistema operativo y la funcionalidad que se requiera de la información, Windows utiliza VFAT o NTFS , Sun utiliza NFS , Linux usa ext2. A pesar que los detalles de un "File System" son complejos, para el usuario final el accesar los archivos ( "Flat Files" ) y subdividirlos por directorio es una operación transparente, el sabe que genero un archivo presentación.ppt o clases.doc pero esta insulado de saber que es o como funciona un "File System".

NOTA: Aunque en el sentido más estricto de la palabra estos "Flat Files" puedan ser considerados "Bases de Datos", la Industria casi ha reservado el termino "Base de Datos" a productos o implementaciones que utilicen control de transacciones avanzadas, que cumplan con el "ACID test" mencionado a continuación.

Que sucede cuando ocurre una actualización o búsqueda en un "Flat File"?. Tomemos el caso de una aplicación de servidor que realiza una búsqueda o actualización de usuarios en un "Flat File".

El archivo usuarios.txt contiene varios datos de los usuarios y la información se encuentra separada por espacios. El primer problema es realizar una búsqueda en este archivo "usuarios.txt": Una vez escrito un programa que realice la búsqueda este programa deberá leer TODO el archivo para localizar la información, si el archivo (usuarios.txt) contiene 1000 o 2000 usuarios cada vez que se requiera información es necesario leer TODO el archivo de nuevo y en una aplicación que realice varias búsquedas por segundo esto puede resultar ineficiente.

1. Los dos usuarios son agregados al archivo "usuarios.txt" exitosamente.
2. La información de uno de los usuarios se pierde.
3. La información de ambos usuarios se combina y el archivo "usuarios.txt" se actualiza con basura .

El problema se agrava aún más cuando estas transacciones contienen información critica como una transacción financiera, donde se debe garantizar que un "deposito a cuenta" de un cliente genere una "deducción de cuenta" a otro. Que ocurre si se depositan $10,000 al "usuario X", pero a la mitad de la transacción el equipo de computo falla, y al "usuario Y" no se le deducen los $10,000 ?. Esta es la razón de ser de una Base de Datos.

Nótese que para sitios de Internet que no requieran de alta complejidad o control de transacciones , un "flat file" es una solución viable (Vea Lectura y Escritura de Datos en Perl)


ACID

Se dice que toda "Base de Datos" debe cumplir con la prueba del acido, denominada "ACID" (Atomicity, Consistency, Isolation, Durability).

* Atomocity : La atomicidad de una transacción garantiza que todas sus acciones sean realizadas o ninguna sea ejecutada , en el caso de la transacción bancaria o se ejecuta tanto el "deposito-deducción" o ninguna acción será realizada.
* Consistency : Muy similar a la "Atomicidad", la consistencia garantiza que las reglas que hayan sido declaradas para una transacción sean cumplidas, regresando a la transacción bancaria, supongamos que cada vez que se realice una transferencia inter-bancaria de $100,000 sea necesario notificar a la sucursal del tarjeta-habiente, si no es posible comunicarse y actualizar la información en la sucursal del cliente, toda la transacción será abortada.
* Isolation : Esto garantiza que las transacciones que se estén realizando en el sistema sean invisibles a todos los usuarios hasta que estas hayan sido declaradas finales, en la transacción bancaria es posible que el sistema este programado para intentar en 5 o 10 ocasiones más antes de abortar una transacción por completo, a pesar que este ultimo paso no ha sido finalizado ya existen otras modificaciones en el sistema, este aislamiento "Isolation" garantiza que los usuarios del sistema no observen estos cambios intermedios hasta que sea finalizada la ultima acción de actualización.
* Durability : La durabilidad de una transacción garantiza que al instante en el que se finaliza la transacción esta perdure a pesar de otras consecuencias, esto es, si el disco duro falla, el sistema aún será capaz de recordar todas la transacciones que han sido realizadas en el sistema.


Indexar

La prueba del Acido garantiza que nuestra información mantenga una forma consistente, pero aún falta otro tema importante que ataca una Base de Datos que un "Flat File" no puede proporcionar.


El acceso eficiente y rápido a la información.

Es posible Indexar un archivo como el mencionado anteriormente (usuarios.txt) y cargarlo en memoria, pero recordemos que este archivo puede llegar a contener miles de lineas de información y en cada ocasión que se realice una búsqueda el programa tendrá que tener preparado un índice para eficientizar la búsqueda, a pesar que existe la posibilidad de indexar un "flat file", cada vez que se realice una actualización al "flat file" será necesario leer TODO el archivo de nuevo para mantener la información vigente (DOM en XML soluciona algunos de estos aspectos), aunado a esto existe el problema del uso del lenguaje secuencial que debe ser utilizado para actualizar el índice.

Como solución al uso del lenguaje secuencial surgió el modelo relacional ( es por esto que muchos productos de Bases de Datos son denominados "RDBMS" "Relational Database Management Systems" ), la mayor ventaja que presenta este modelo relacional es la utilización del lenguaje SQL ( "Structured Query Language" ) que es un lenguaje declarativo ( "declarative" ).Una gran parte de los lenguajes son de carácter secuencial "procedural" ), un programador debe indicar paso a paso que debe ejecutarse por medio de un procedimiento, los ejemplos clásicos son C, Fortran, Pascal....; en SQL el programador es capaz de declarar un funcionamiento: "deseo cumplir los siguientes requisitos".

Lo anterior presenta dos ventajas a un lenguaje secuencial, la primera es que las búsquedas no dependen de la representación de los datos, la base de datos es libre de guardar la información como a esta le convenga y la otra ventaja es la facilidad con la que se puede ejecutar una búsqueda o actualización sin la necesidad de escribir código fuente complejo.

Para realizar esta tarea cada base de datos contiene una parte denominada "optimizador" o "ejecución de búsqueda" que es el encargado de determinar: donde,como y que deberá ser ejecutado para realizar una actualización o búsqueda en la Base de datos.


Vendedores de Bases de Datos

Existen varios vendedores de Bases de Datos,pero quizás la marca que tiene mayor mercado es Oracle y en orden de uso posiblemente le sigan: Sybase, Solid, Postgres ,MySql y DB2; todas ofrecen las funcionalidades antes mencionadas y utilizan el lenguaje SQL, sin embargo, debido a la misma complejidad de las operaciones que se llevan acabo, cada vendedor utiliza diferentes algoritmos y diseños por lo que el migrar y aprender a utilizar un producto de cierta compañía requiere de un esfuerzo e inversión substancial.

Oracle es una de las Bases de Datos que ofrece mayor funcionalidad en muchas áreas ya que ofrece paquetes con operaciones lógicas por industria (orientaciones hacia SCM "Supply Chain Management", servidor-páginas ( "Web-Server" ), CRM's , entre otras, sin embargo su costo es de los más altos en la Industria oscilando desde $10,000 Dlls U.S hasta $750,000-$1,000,000 Dlls U.S dependiendo de las funcionalidades utilizadas y esto solo es el software básico, sin incluir administración o desarrollo de aplicaciones.

Ahora, dentro del ramo Open-Source existen varias alternativas que por su costo/beneficio quizás sobrepasen a Oracle, una de estas implementaciones es Postgres, aunque cabe mencionar también existen otras Bases de Datos Open-Source como: MySql o Interbase.


Links:

* Desarrollo y Configuración Oracle (En Inglés) : Documentos sobre Desarrollo y Configuración para Oracle
* Desarrollo y Configuración Postgres (En Inglés) : Documentos de Configuración y Desarrollo para Postgres.
* Manipular Archivos en Perl : Descripción sobre escritura a "flat files", una alternativa para una base de datos.




0 comentarios - Cual es la razón de ser de una Base de Datos?