From: Leandro Lucarella Date: Mon, 31 May 2004 05:13:20 +0000 (+0000) Subject: Introducción del informe de la segunda entrega. X-Git-Tag: svn_import_r684~30 X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/commitdiff_plain/f6428825a4bea608f280ea0bf825961d19cd984a?ds=sidebyside Introducción del informe de la segunda entrega. --- diff --git a/doc/informe_2da_entrega.lyx b/doc/informe_2da_entrega.lyx new file mode 100644 index 0000000..b79ce89 --- /dev/null +++ b/doc/informe_2da_entrega.lyx @@ -0,0 +1,316 @@ +#LyX 1.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 221 +\textclass book +\language spanish +\inputencoding auto +\fontscheme palatino +\graphics default +\paperfontsize default +\spacing single +\papersize a4paper +\paperpackage widemarginsa4 +\use_geometry 0 +\use_amsmath 0 +\use_natbib 0 +\use_numerical_citations 0 +\paperorientation portrait +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\defskip medskip +\quotes_language english +\quotes_times 2 +\papercolumns 1 +\papersides 1 +\paperpagestyle default + +\layout Title + +Organización de Datos (75.06) +\newline +Trabajo Práctico +\newline +E +\begin_inset Formula $\mu$ +\end_inset + +FS +\layout Author + + +\series bold +Grupo 11 +\series default + +\newline +Nicolás Dimov (77624) +\newline +Alan Kennedy (78907) +\newline +Leandro Lucarella (77891) +\newline +Ricardo Markiewicz (78226) +\layout Date + +Segunda Entrega, 31 de Mayo de 2004 +\layout Standard + + +\begin_inset LatexCommand \tableofcontents{} + +\end_inset + + +\layout Chapter + +Introducción +\layout Standard + +En esta entrega el trabajo estuvo concentrado en el manejo de índices para + los tipos de archivos implementados en la primer entrega. + Los índices se implementaron con: +\layout Enumerate + +Árbol B +\layout Enumerate + +Árbol B* +\layout Enumerate + +Árbol B+ +\layout Standard + +Además de esto, se pide 3 funciones distintas para estos índices: +\layout Enumerate + +Principal +\layout Enumerate + +Selectivo +\layout Enumerate + +Exhaustivo +\layout Standard + +Con la autorización de los ayudantes de la cátedra decidimos que el árbol + B+ sólo pueda ser utilizado para índices principal ya que de otra manera + no tiene sentido el set secuencial. +\layout Standard + +Finalmente, para obtener listados basados en campos de los cuales no se + tiene un índice, se implementó un ordenamiento externo. +\layout Standard + +A continuación se presenta una descripción un poco más detallada sobre todas + herramientas utilizadas para resolver el trabajo práctico. +\layout Section + +Documentación de la API +\layout Standard + +Para obtener una documentación de la API más completa, se incluye en formato + HTML en el CD-ROM la documentación generado con Doxygen. + Esta documentación se encuentra en el directorio +\family typewriter +doc/api/html/index.html +\family default +. +\layout Chapter + +Estructura común +\layout Section + +Tipos +\layout Standard + +Se detallan a continuación los tipos de datos definidos y utilizados en + las distintas implementaciones que conforman nuestro sistema, siendo el + más importante de ellos en esta entrega, la estructura +\family typewriter +INDICE +\family default + que actúa como interfaz común para el manejo de cualquier tipo de índice + (no importa que tipo de organización física ni de que forma esté implementado, + esta estructura proveerá una interfaz abstracta para su manejo). +\layout Subsection + +Tipos Comunes +\layout Standard + +Se agregaron varios tipos comunes nuevos en esta entrega, en su mayoría + relacionados a los índices. + Estos tipos son brevemente descriptos a continuación y pueden ser hallados + en el archivo +\family typewriter +indices.h +\family default +: +\layout Itemize + + +\family typewriter +INDICE_DATO +\family default +: usado para representar el conjunto de un ID más su dato. +\layout Itemize + + +\family typewriter +INDICE_TIPO +\family default +: indica el tipo de índice (B, B* o B+). +\layout Itemize + + +\family typewriter +INDICE_FUNCION +\family default +: indica la función que cumple el índice (principal, selectivo o exhaustivo). +\layout Itemize + + +\family typewriter +INDICE_TIPO_DATO +\family default +: indica el tipo de dato que se usa como clave. +\layout Itemize + + +\family typewriter +CLAVE +\family default +: representa una clave de un índice. +\layout Subsection + +INDICE +\layout Standard + + +\family typewriter +INDICE +\family default +\emph on + +\emph default +es la estructura principal que encapsula todas las funciones para el manejo + de un índice. + Posee punteros a funciones que permite utilizar la misma interface para + distintas implementaciones de árboles. + +\layout Standard + +Su declaración puede ser observada en el archivo +\family typewriter +indices.h +\family default +\series bold + +\series default +y cuenta con la siguiente información: +\layout Itemize + +Tipo de índice. +\layout Itemize + +Tipo de dato que maneja. +\layout Itemize + +Función del índice. +\layout Itemize + +Información sobre el desplazamiento para ubicar el dato dentro de la estructura + a indexar (para poder tener una implementación genérica que sirva para + cualquier estructura). +\layout Itemize + +Información sobre archivos auxiliares para almacenar cadenas de texto y + otras estructuras que eventualmente requiera un índice. +\layout Itemize + +Punteros a funciones para: +\begin_deeper +\layout Itemize + +Agregar entrada. +\layout Itemize + +Borrar entrada. +\layout Itemize + +Verificar la existencia de una entrada. +\layout Itemize + +Buscar entradas. +\layout Itemize + +Obtener clave menor o mayor del índice. +\layout Itemize + +Obtener siguiente clave (para recorrido secuencial). +\end_deeper +\layout Standard + +Esta estructura define los valores de sus punteros según el tipo de implementaci +ón que se desee manejar y esto se realiza a través de la API +\family typewriter +emufs_indice +\family default +, implementada en +\family typewriter +indices.h +\family default +. + Esta API posee funciones para crear y destruir índices, agregarlos y quitarlos + de una estructura +\family typewriter +EMUFS +\family default +, comparar claves y otras, necesarias para la correcta y completa utilización + de los índices a través de la interfaz de +\family typewriter +EMUFS +\family default + descripta en la entrega anterior. +\layout Subsubsection + +Integración con +\family typewriter +EMUFS +\family default +. +\layout Standard + +Para integrar la utilización de índices a +\family typewriter +EMUFS +\family default + fueron necesarios los siguientes cambios: +\layout Paragraph + +Nuevos tipos de archivo. +\layout Standard + +Se incluyen dos tipos de archivo nuevos T4 y T5, que representan, respectivament +e, un archivo T1 (registros variables, bloques fijos) y un archivo T3 (registros + y bloques fijos), ambos organizados como un set secuencial indexado. + De esta manera se conserva la interfaz de +\family typewriter +EMUFS +\family default + (los punteros a funciones) incluso cuando se debe insertar de forma ordenada, + ya que al saber que es T4 o T5 siempre se inserta de forma ordenada. +\layout Paragraph + +Puntero a un arreglo de índices. +\layout Standard + +Se agrega a la estructura +\family typewriter +EMUFS +\family default + un puntero a un arreglo de +\family typewriter +INDICE +\family default +, donde el primero es siempre el índice principal. +\the_end