1 #LyX 1.3 created this file. For more info see http://www.lyx.org/
11 \paperpackage widemarginsa4
15 \use_numerical_citations 0
16 \paperorientation portrait
19 \paragraph_separation indent
21 \quotes_language english
25 \paperpagestyle default
29 Organización de Datos (75.06)
34 \begin_inset Formula $\mu$
50 Leandro Lucarella (77891)
52 Ricardo Markiewicz (78226)
55 Segunda Entrega, 31 de Mayo de 2004
59 \begin_inset LatexCommand \tableofcontents{}
69 En esta entrega el trabajo estuvo concentrado en el manejo de índices para
70 los tipos de archivos implementados en la primer entrega.
71 Los índices se implementaron con:
83 Además de esto, se pide 3 funciones distintas para estos índices:
95 Con la autorización de los ayudantes de la cátedra decidimos que el árbol
96 B+ sólo pueda ser utilizado para índices principal ya que de otra manera
97 no tiene sentido el set secuencial (para una justificación más detallada
98 ver FIXME: REFERENCIA A EXPLICACION DE B+)3.
101 Finalmente, para obtener listados basados en campos de los cuales no se
102 tiene un índice, se implementó un ordenamiento externo.
105 A continuación se presenta una descripción un poco más detallada sobre todas
106 herramientas utilizadas para resolver el trabajo práctico.
109 Documentación de la API
112 Para obtener una documentación de la API más completa, se incluye en formato
113 HTML en el CD-ROM la documentación generado con Doxygen.
114 Esta documentación se encuentra en el directorio
116 doc/api/html/index.html
127 Se detallan a continuación los tipos de datos definidos y utilizados en
128 las distintas implementaciones que conforman nuestro sistema, siendo el
129 más importante de ellos en esta entrega, la estructura
133 que actúa como interfaz común para el manejo de cualquier tipo de índice
134 (no importa que tipo de organización física ni de que forma esté implementado,
135 esta estructura proveerá una interfaz abstracta para su manejo).
141 Se agregaron varios tipos comunes nuevos en esta entrega, en su mayoría
142 relacionados a los índices.
143 Estos tipos son brevemente descriptos a continuación y pueden ser hallados
155 : usado para representar el conjunto de un ID más la ubicación del dato
163 : indica el tipo de índice (B, B* o B+).
170 : indica la función que cumple el índice (principal, selectivo o exhaustivo).
177 : indica el tipo de dato que se usa como clave.
184 : representa una clave de un índice.
197 es la estructura principal que encapsula todas las funciones para el manejo
199 Posee punteros a funciones que permite utilizar la misma interface para
200 distintas implementaciones de árboles.
204 Su declaración puede ser observada en el archivo
211 y cuenta con la siguiente información:
217 Tipo de dato que maneja.
223 Información sobre el desplazamiento para ubicar el dato dentro de la estructura
224 a indexar (para poder tener una implementación genérica que sirva para
225 cualquier estructura).
228 Información sobre archivos auxiliares para almacenar cadenas de texto y
229 otras estructuras que eventualmente requiera un índice.
232 Punteros a funciones para:
242 Verificar la existencia de una entrada.
248 Obtener clave menor o mayor del índice.
251 Obtener siguiente clave (para recorrido secuencial).
255 Esta estructura define los valores de sus punteros según el tipo de implementaci
256 ón que se desee manejar y esto se realiza a través de la API
265 Esta API posee funciones para crear y destruir índices, agregarlos y quitarlos
270 , comparar claves y otras, necesarias para la correcta y completa utilización
271 de los índices a través de la interfaz de
275 descripta en la entrega anterior.
276 \layout Subsubsection
283 Para integrar la utilización de índices a
287 fueron necesarios los siguientes cambios:
290 Nuevos tipos de archivo
293 Se incluyen dos tipos de archivo nuevos T4 y T5, que representan, respectivament
294 e, un archivo T1 (registros variables, bloques fijos) y un archivo T3 (registros
295 y bloques fijos), ambos organizados como un set secuencial indexado.
296 De esta manera se conserva la interfaz de
300 (los punteros a funciones) incluso cuando se debe insertar de forma ordenada,
301 ya que al saber que es T4 o T5 siempre se inserta de forma ordenada.
304 Puntero a un arreglo de índices
307 Se agrega a la estructura
311 un puntero a un arreglo de
315 , donde el primero es siempre el índice principal.