X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/ca5443c2a4e1dd53ebd46c5727ac5ea90cb6def1..477498420ec91b48e0dac6c0086762c26c4906b8:/doc/informe.lyx
diff --git a/doc/informe.lyx b/doc/informe.lyx
index 7873bc6..dc71eb8 100644
--- a/doc/informe.lyx
+++ b/doc/informe.lyx
@@ -26,6 +26,10 @@
\layout Title
+Organización de Datos (75.06)
+\newline
+Trabajo Práctico
+\newline
E
\begin_inset Formula $\mu$
\end_inset
@@ -33,13 +37,22 @@ E
FS
\layout Author
-Nicolás Dimov
+
+\series bold
+Grupo 11
+\series default
+
\newline
-Alan Kennedy
+Nicolás Dimov (77624)
\newline
-Leandro Lucarella
+Alan Kennedy (78907)
\newline
-Ricardo Markiewicz
+Leandro Lucarella (77891)
+\newline
+Ricardo Markiewicz (78226)
+\layout Date
+
+Primera Entrega, 19 de Abril de 2004
\layout Standard
@@ -98,6 +111,18 @@ A continuaci
Hacia el final de esta presentación, se observaran las pruebas realizadas
con las distintas organizaciones de archivos, y las conclusiones obtenidos
al respecto.
+\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
+\family default
+.
\layout Chapter
Estructura común
@@ -2342,9 +2367,6 @@ Esta implementaci
Ver:
\family typewriter
emufs_tipo1_compactar()
-\layout Section
-
-Detalles de implementación (funciones internas, ver si lo ponemos o no)
\layout Chapter
@@ -3814,8 +3836,2817 @@ idx
se actualizan todos los bloques con el espacio libre que realmente tienen.
\layout Chapter
-Conclusiones
+EMUFS View (interfaz gráfica)
+\layout Section
+
+Introducción
+\layout Standard
+
+La interfaz de visualización de EMUFS permite interactuar con los distintos
+ tipos de archivos para cada conjunto de datos almacenado (ya sean facturas,
+ articulos, o notas de facturas).
+\layout Section
+
+Instalación
+\layout Standard
+
+Para poder correr la interfaz gráfica necesitará previamente compilarla
+ (así como compilar los programas auxiliares), para ello necesitará cumplir
+ con los siguiente requisitos:
+\layout Enumerate
+
+Compilador gcc versión 3.3.x preferentemente.
+ No podemos garantizar la compatibilidad con otras versiones debido a cambios
+ drásticos que sufrieron las versiones anteriores.
+\layout Enumerate
+
+Parser XML libxml2 versión 2.6.x .
+ Versiones 2.5 y anteriores son incompatibles en la API y no funcionarán.
+\layout Enumerate
+
+libncurses version 5 o superior (probado con 5.4).
+\layout Enumerate
+
+GNU Make.
+\layout Subsection
+
+Compilar GUI
+\layout Standard
+
+Para compilar la GUI solo debe ejecutar el comando make dentro del directorio
+ raíz del proyecto.
+ Esto compilará primero una biblioteca estática con los manejadores de los
+ 3 tipos de archivo y luego compilará la GUI.
+\layout LyX-Code
+
+#~/emufs/> make
+\layout Subsection
+
+Preparar el banco de pruebas
+\layout Standard
+
+Antes de comenzar a utilizar la GUI deberá generar los archivo XML desde
+ donde serán leídos los datos para generar los archivos que luego se utilizará.
+ Para ello el proceso de compilación creará 2 ejecutable : generar_fact
+ y generar_art, que se ubicarán en la carpeta generar dentro de emufs_gui.
+\layout Standard
+
+Estos programas generan facturas y artículos respectivamente en forma aleatorio,
+ utilizando diccionarios de datos para llenar los campos.
+ Primero deberá ejecutar generar_art, ya que éste último crea un diccionario
+ de artículos que luego utilizará generar_fact para los items de las facturas.
+\layout Standard
+
+Ambos programas reciben 2 parámetros : el nombre de archivo de salida y
+ la cantidad de entradas a generar.
+\layout Standard
+
+El generador de facturas fue diseñado para cumplir con los porcentajes pedidos
+ por el enunciado en algunos aspectos.
+ La cantidad de facturas por dia del mes es aleatoria.
+\layout Section
+
+Línea de comandos
+\layout Standard
+
+El programa acepta varios parámetros, algunos de ellos opcionales, otros
+ obligatorios dependiendo de las elecciones realizadas.
+\layout Standard
+
+Para obtener una completa descripción de los parámetros el programa acepta
+
+\begin_inset Quotes eld
+\end_inset
+
+-h
+\begin_inset Quotes erd
+\end_inset
+
+ o
+\begin_inset Quotes eld
+\end_inset
+
+--help
+\begin_inset Quotes erd
+\end_inset
+
+ para mostrar una ayuda en línea.
+\layout Standard
+
+Si el programa es ejecutado sin parámetros tratará de recuperar los artículos
+ y las facturas desde archivo previamente creados.
+\layout Standard
+
+Para crear un archivo de artículos a partir de un archivo XML bien formado,
+ se debe ejecutar el programa con la opción
+\begin_inset Quotes eld
+\end_inset
+
+-a
+\begin_inset Quotes erd
+\end_inset
+
+.
+ Dicha opción espera que el siguiente parámetro sea el nombre del archivo
+ a leer, y que éste útimo tenga extensión xml (notar que es solo minúsculas).
+ A continuación espera encontrar el tipo de archivo que se quiere crear,
+ pudiendo ser éste último 1, 2 ó 3.
+ De ser el tipo de archivo con bloques, se le exigirá que ingrese como último
+ parámetro el tamaño del mismo.
+\layout Standard
+
+Para crear el archivo de facturas es el mismo procedimiento, solo que utilizando
+ el parámetro
+\begin_inset Quotes eld
+\end_inset
+
+-f
+\begin_inset Quotes erd
+\end_inset
+
+.
+ Luego de los parámetros de tipo y tamaño de bloque debe especificarse el
+ tipo y tamaño de bloque para el archivo de notas.
+
+\layout Standard
+
+Debe saber que estos parámetros no son mutuamente excluyentes, por lo que
+ podrá utilizarlos al mismo tiempo.
+\layout Section
+
+Características
+\layout Standard
+
+A continuación se da una lista detallada de las operaciones que son posibles
+ hacerse desde esta interfaz :
+\layout Itemize
+
+Alta, baja y modificación de Artículos.
+ Para ello se abrirá una ventana donde se podrá editar comodamente los datos.
+\layout Itemize
+
+Alta, baja y modificación
+\begin_inset Foot
+collapsed true
+
+\layout Standard
+
+En la modificación de una factura no se podrán cambiar ni la cantidad de
+ items y los datos de los mismo!.
+ La nota si podrá ser modificada.
+\end_inset
+
+ de Facturas.
+\layout Itemize
+
+Ver registros.
+ Ver fisicamente los registros de cualquiera de los archivos sin importar
+ el tipo al que pertenezcan.
+ Desde aquí podrá tambien eliminar, agregar o modificar el registro actual.
+\layout Itemize
+
+Ver Bloques.
+ Para aquellos archivos que hallan sido creados con un tipo con bloques,
+ podrá verlos fisicamente, viendo el bloque actual y los anteriores/posteriores.
+\layout Itemize
+
+Ver las estadísticas de cada archivo según su tipo, para realizar comparativas
+\layout Itemize
+
+Cambiar el formato de cualquier tipo o parametros de archivo.
+\layout Itemize
+
+Compactar los archivos.
+\layout Section
+
+Decisiones de Diseño
+\layout Standard
+
+Durante el desarrollo se han tomado ciertas decisiones en el diseño o restriccio
+nes.
+ En este punto nos centraremos en las especificas tomadas por la interfaz
+ de visualización, y no tomaremos en cuenta las que ponen los tipos de archivo
+ por si solos.
+\layout Enumerate
+
+La cantidad de items por factura es igual a 10 para archivos de registro
+ de longitud fija y bloque parametrizado (TIPO 3).
+ Esta decición fue tomada por poner un valor típico de items que puede haber
+ en una factura, evaluando un caso de un comercio chico.
+ Como el tipo de archivo permite cortar un registro y guardarlo en varios
+ bloques consecutivos, la restricción de cantidad solo es un hecho de elección,
+ y así pusieramos 100, 1000, 10000 no habría diferencia, ya que el tipo
+ de archivo lo guardaría sin problemas.
+\layout Enumerate
+
+Si el archivo es de TIPO 3 y se agregan más de 10 items estos son truncados
+ y descartados sin aviso al usuario.
+ Esta fue una desición basada en el tiempo del proyecto.
+ De tener que validar y consultar al usuario se hubiera perdido tiempo de
+ mucho valor para completar objetivos más importantes del TP.
+\layout Enumerate
+
+Los campos son delimitados por el caracter nulo (en caso de los strings)
+ y por la longitud del tipo de dato en caso de los campos numéricos.
+ De esta forma se aprovechan las características de manejo de string en
+ C.
+\layout Section
+
+Vista de Registros
+\layout Standard
+
+Un ejemplo de vista de registros es la que se observa a continuación :
+\layout Standard
+
+
+\begin_inset Graphics
+ filename gui_ver_registros.eps
+ width 14cm
+ keepAspectRatio
+
+\end_inset
+
+
+\layout Standard
+
+Como puede verse el registro actual se ve resaltado respecto de los demás.
+ También se puede observar que en este caso (el bloque es de 2000 bytes)
+ no entra toda la información en pantalla, pero es posible desplazar utilizando
+ las teclas A y Z.
+\layout Standard
+
+Los datos binarios son convertidos a texto para ser mostrados, siendo la
+ representación elegida :
+\layout Itemize
+
+(XXX) : Representa un ID.
+ En el caso de las facturas también aparece en los datos el número de índice
+ de la nota asociada con esta representación.
+\layout Itemize
+
+{XXX} : Representa el tamaño de los datos.
+ Esto siempre y cuando el registro sea de longitud variable (TIPO1 y TIPO2).
+\layout Standard
+
+También es posible ejecutar acciones de edición sobre el registro seleccioado,
+ así como buscar por ID de registro.
+\layout Standard
+
+Cuando se procesa la información en crudo (es decir, el area de datos) algunos
+ bytes son modificados para evitar errores visuales.
+ Un caso es cuando el bytes es compuesto por 8 bits de valor 0 (caracter
+
+\backslash
+0).
+ Lo que se hace es cambiarlo por un caracter que tenga representacion visual
+ (en este caso un *).
+ Lo mismo suscede para los caracteres de control (
+\backslash
+b
+\backslash
+n
+\backslash
+r por ejemplo) y los espacion.
+ Esta política fue tomada ya que estos caracteres modifican la salida en
+ pantalla, y de no evitar su envío a la pantalla, producirían resultados
+ inesperados en la visualización.
+\layout Section
+
+Bugs conocidos
+\layout Standard
+
+A continuación se enumera los errores que sabemos que existen, que no hemos
+ tenido tiempo de corregir, pero que no hacen al TP en sí :
+\layout Enumerate
+
+Si la consola o terminal cambia de tamaño la GUI no sigue el nuevo tamaño,
+ pudiendose producir defectos visuales.
+ Esto es debido a que se debe capturar una señal que envia el SO, pero no
+ pudimos hacer que funciones con todas las terminales bajo X, por lo que
+ se decidio dejarlo para cuando tengamos tiempo.
+\layout Enumerate
+
+Si la GUI fue compilada con -DDEBUG y no se utiliza un PIPE para redirigir
+ la salida de error estandar, es posible que algun componente del programa
+ emita un mensaje de debug o warning y esta cause defectos de visualización
+ o el programa deje directamente de funcionar.
+ Esto es un defecto de la biblioteca NCurses.
+\layout Enumerate
+
+Cuando se cargan datos desde el XML y este contiene caracteres extendidos,
+ estos son mostrados en UTF8 en la pantalla.
+ Si no posee una consola configurada en UTF8 verá los caracteres extendidos
+ en su representación ASCII (2 caracteres por cada caracter extendido).
+ Esto se da a causa de que la LibXml maneja de forma interna todo en UTF8
+ sin importar el encoding declarado en el XML.
+ El encoding solo lo tienen en cuenta para guado se guarde.
+ No nos hemos tomado el trabajo de hacer la conversión solo por cuestiones
+ de tiempo.
+\layout Chapter
+
+Comparación de tipos de archivo (conclusiones)
+\layout Section
+
+Método utilizado para la comparación
+\layout Standard
+
+Para realizar la comparación entre los distintos tipos de archivo, se generaron
+ un XML de artículos con 200 entradas y uno de facturas de 1750 entradas.
+ Los valores fueron arbitrarios y un poco más elevados que los requeridos
+ en el enunciado para poner a prueba el sistema.
+\layout Standard
+
+En la tabla que se dará más adelante, se pueden apreciar los datos característic
+os de cada tipo de archivo.
+ El método de prueba fue el siguiente :
+\layout Enumerate
+
+Para cada tipo de archivo se cargaron los archivos XML de prueba.
+\layout Enumerate
+
+Se anotaron las estadísticas que entrega la GUI.
+\layout Enumerate
+
+Se eliminaron alrededor de 50 artículos y 200 facturas.
+ El valor no es exacto, puesto que al ser pseudo-aleatoria la cantidad borrada
+ puede no ser 50 o 200.
+\layout Enumerate
+
+Se anotaron las estadísticas nuevamente.
+\layout Standard
+
+Ahora, los tamaños de bloque para los archivos con bloques fueron tomados
+ de 512 bytes, por ser una unidad típica de dispositivos de almacenamiento,
+ y nos pareció lógico dada la similitud utilizar esta unidad.
+\layout Section
+
+Artículos
+\layout Standard
+
+
+\begin_inset Float table
+placement H
+wide false
+collapsed true
+
+\layout Caption
+
+Artículos con archivos con tamaño de bloque 512 (cuando aplica)
+\layout Standard
+
+
+\size small
+
+\begin_inset Tabular
+
+
+
+
+
+
+
+
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Artículos
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+T1
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+T2
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+T3
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+T1
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+T2
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+T3
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Tamaño de bloque: 512
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Inicial
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Luego de borrar
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Tamaño Datos
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+10528 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+10528 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+28800 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+7874 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+7278 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+17856 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Tamaño Datos de Control
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+1608 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+1604 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+812 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+1208 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+1108 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+508 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Espacio Libre
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+672 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+0 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+4704 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+3726 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+3746 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+15952 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Media de Espacio Libre
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+26 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+0 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+70 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+149 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+73 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+238 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Máximo de Espacio Libre
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+83 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+0 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+216 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+279 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+480 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+512 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Mínimo de Espacio Libre
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+2 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+0 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+68 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+36 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+ 41 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+ 68 bytes
+\end_inset
+ |
+
+
+
+\end_inset
+
+
+\end_inset
+
+
+\begin_inset Float table
+placement H
+wide false
+collapsed true
+
+\layout Caption
+
+Artículos con archivos con tamaño de bloque 1024 (cuando aplica)
+\layout Standard
+
+
+\size small
+
+\begin_inset Tabular
+
+
+
+
+
+
+
+
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Luego de borrar
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+T1
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+T2
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+T3
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+T1
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+T2
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+T3
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Tamaño de bloque: 1024
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Inicial
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Luego de borrar
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Tamaño Datos
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+10528 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+28800 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+7902 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+20448 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Tamaño Datos de Control
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+1608 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+812 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+1208 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+580 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Espacio Libre
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+1184 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+5216 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+4210 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+13800 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Media de Espacio Libre
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+91 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+153 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+323 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+405 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Máximo de Espacio Libre
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+938 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+728 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+938 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+1024 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Mínimo de Espacio Libre
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+0 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+136 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+7 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+136 bytes
+\end_inset
+ |
+
+
+
+\end_inset
+
+
+\end_inset
+
+
+\layout Standard
+
+Evidentemente para el caso de artículos, una muy mala elección sería utilizar
+ el archivo de tipo3, puesto que al usar registros constantes es posible
+ que se desperdicie mucho espacio si ocurren muchas eliminaciones (como
+ se observa en la tabla).
+ Entre los tipos 1 y 2 no existe mucha diferencia en los números, por lo
+ que la decisión podría ser tomada en base a los tiempos de acceso.
+ Tomando este criterio el T2 sería la mejor forma de almacenar los datos
+ si lo más frecuente son lecturas, ya que al leer se puede obtener el offset
+ desde el principio del registro, mientras que en el tipo1 se debe hacer
+ una búsqueda secuencial sobre el bloque, y de ser éste último muy grande
+ el tiempo de acceso puede ser elevado.
+\layout Standard
+
+Para operaciones que requiera muchas bajas de elementos el tipo 2 no sería
+ la mejor opción, puesto que la liberación es compleja, ya que cuando se
+ da de baja un registro se debe verificar si dicho espacio se solapa con
+ algún espacio libre actual, de manera de mantener espacios libres como
+ lo hacen los sistemas de archivo ext2, manteniendo la lista de los offsets
+ y tamaño de espacios libres, a fin de buscar el que mejor ajuste en caso
+ de una alta.
+\layout Standard
+
+Para el caso de artículos, donde puede haber un continuo cambio en la oferta
+ de nuestro negocio, nos inclinaremos por el tipo de archivo 1, con un tamaño
+ de bloque reducido.
+ Solo recordaremos compactar el archivo periódicamente a fin de minimizar
+ el espacio desperdiciado.
+\layout Section
+
+Facturas
+\layout Standard
+
+
+\begin_inset Float table
+placement H
+wide false
+collapsed true
+
+\layout Caption
+
+Facturas con archivos con tamaño de bloque 512 (cuando aplica)
+\layout Standard
+
+
+\size small
+
+\begin_inset Tabular
+
+
+
+
+
+
+
+
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Facturas
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+T1
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+T2
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+T3
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+T1
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+T2
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+T3
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Tamaño de bloque = 512
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Inicial
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Luego de borrar
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Tamaño Datos
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+268707 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+268707 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+546000 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+207295 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+212465 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+482664 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Tamaño Datos de Control
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+14008 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+14004 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+7012 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+12288 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+12324 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+6200 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Espacio Libre
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+17325 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+0 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+343000 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+80457 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+57922 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+407148 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Media de Espacio Libre
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+29 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+0 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+196 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+137 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+981 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+232 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Máximo de Espacio Libre
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+386 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+0 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+196 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+512 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+10656 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+512 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Mínimo de Espacio Libre
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+1 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+0 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+196 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+1 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+216 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+196 bytes
+\end_inset
+ |
+
+
+
+\end_inset
+
+
+\end_inset
+
+
+\begin_inset Float table
+placement H
+wide false
+collapsed true
+
+\layout Caption
+
+Artículos con archivos con tamaño de bloque 1024 (cuando aplica)
+\layout Standard
+
+
+\size small
+
+\begin_inset Tabular
+
+
+
+
+
+
+
+
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+Facturas
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+T1
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+T2
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+T3
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+T1
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+T2
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+T3
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+\color none
+Tamaño de bloque: 1024
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+\color none
+Inicial
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+\color none
+Luego de borrar
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Tamaño Datos
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+268707 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+546000 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+219731 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+482976 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Tamaño Datos de Control
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+14008 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+7012 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+12440 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+6204 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Espacio Libre
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+10157 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+45016 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+60701 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+108848 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Media de Espacio Libre
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+35 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+77 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+212 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+186 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Máximo de Espacio Libre
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+922 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+708 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+1024 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+1024 bytes
+\end_inset
+ |
+
+
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+Mínimo de Espacio Libre
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+5 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+76 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+5 bytes
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+................
+\end_inset
+ |
+
+\begin_inset Text
+
+\layout Standard
+
+
+\size small
+76 bytes
+\end_inset
+ |
+
+
+
+\end_inset
+
+
+\end_inset
+
+
+\layout Standard
+
+Primero descartaremos al tipo 3 como un buen modo de almacenar las facturas,
+ por el sólo hecho de que la cantidad de ítems que puede tener una factura
+ está limitada al tamaño de registro utilizado.
+ Esto sólo sería razonable en un contexto en donde la variabilidad del registro
+ no sea drástica como es el caso de las facturas.
+ De tomar valores grande de registros, se corre el riesgo de tener mucho
+ espacio desperdiciado en los datos, y tomando valores pequeños de registro
+ se limita el sistema en cuanto a cantidad de ítems a colocar en una factura
+ se refiere.
+ Se puede notar una leve baja en el espacio libre, y aumentar el tamaño
+ del bloque quizás más haga que este valor baje, pero se aumentaría el tiempo
+ de acceso a los registros.
+\layout Standard
+
+Nuevamente tenemos una disputa entre el los tipo 1 y 2.
+\layout Standard
+
+Idealmente, si sólo tuviéramos altas el mejor tipo sería el 2 sin dudarlo,
+ ya que aprovecha el máximo espacio al no tener pérdidas, debido a que los
+ registros van uno a continuación del otro.
+ También tenemos la ventaja de que el acceso es directo.
+ Para un caso teórico donde las facturas no se dan de baja, esto sería ideal.
+ Hasta aquí solo hemos visto comparaciones con la carga inicial.
+\layout Standard
+
+Analizaremos ahora que pasa luego de borrar varios registros en posiciones
+ pseudo-aleatorias.
+ Primeramente se puede observar que el tamaño de datos de control es similar
+ (recordar que se guarda el id del registro para poder realizar tareas de
+ recuperación de datos en caso de que el índice se dañe).
+ El máximo espacio libre no nos da mucha información, ya que en el caso
+ del tipo 1 podríamos tener n bloques consecutivos libres y tener posiciones
+ para almacenar registros grandes en ambos casos (recordar que tipo1 tiene
+ recuperación de espacio libre para n bloques consecutivos, no siempre se
+ agrega al final).
+ De todos determinar un espacio libre para un archivo de tipo 2 es mucho
+ más rápido que para tipo1 si el tamaño del registro es grande, ya que el
+ archivo de tipo1 debe hacer una búsqueda sobre n bloques, mientras que
+ el tipo 2 encuentra un gap de tamaño suficiente más rápido.
+\layout Standard
+
+Pero no todo es color de rosa en el mundo de archivos de tipo2.
+ Como se dijo anteriormente las bajas de registros requieren de un proceso
+ grande al actualizar el índice de espacio libre, para asegurarse de tomar
+ espacios libres consecutivos como un solo espacio libre, y en el caso de
+ que las bajas y las altas comunes, esto es una pérdida de performance del
+ sistema.
\layout Standard
-Las comparaciones, pruebas, etc...
+En este caso como se trata de facturas, y suponemos que como usuarios de
+ sistema queremos cancelar pocas facturas (ya que cancelar una factura significa
+ que se cayó una venta) optamos por que el mejor tipo de archivo para almacenar
+ las facturas sera el tipo2.
\the_end