1 00:00:00,000 --> 00:00:09,560 El bloque se recorrería de manera secundaria hasta lograr el que nosotros deseamos buscar. 2 00:00:11,039 --> 00:00:14,800 En el sentido de registros, registros nuevos se almacenan en el área de Overflow. 3 00:00:15,199 --> 00:00:17,839 Se enlazan con el bloque correspondiente del área primaria. 4 00:00:18,320 --> 00:00:20,460 Ventaja, no es necesario reordenar inmediatamente. 5 00:00:21,100 --> 00:00:26,460 Y el inconveniente es que vamos a tener demasiados registros en Overflow que pueden degradar el rendimiento. 6 00:00:26,460 --> 00:00:47,039 El problema es que, como el borrado va a seguir siendo lógico, vamos a tener huecos y luego la propia desorganización de un exceso de registros en el overflow. Entonces, ¿eso qué va a requerir? Va a requerir una reorganización periódica. Habrá que reubicar registros de overflow en la hora primaria, compactar huecos y reconstruir el índice. 7 00:00:47,039 --> 00:00:59,399 Aquí tenemos un ejemplo de secuencial indexada en el que vamos ahora, si veis, tenemos la tabla de índices con las parejas en el que tenemos a la izquierda el campo clave límite superior 8 00:00:59,399 --> 00:01:12,859 y a la derecha tenemos su dirección de acceso al bloque asociada. En el área primaria, que sería esta de aquí, tendríamos dos campos, que sería la clave, el dato y luego aquí nos aparecen las direcciones físicas que tiene asociada. 9 00:01:12,859 --> 00:01:34,260 A continuación, el tercer bloque sería el del overflow. Imaginemos que queremos buscar la clave 204, entonces lo primero que buscaríamos es en la tabla de índices encontrar la clave que sea mayor o igual que la clave a buscar, como esa sería la 205, y llegamos hasta la 205. 10 00:01:34,260 --> 00:01:47,140 205 tiene asociado una dirección de bloque que sería la 6, que nos llevaría a la posición 6, que se corresponde con la clave 198, con un dato que tiene contenido que sería la g. 11 00:01:48,120 --> 00:01:58,099 Entonces, una vez que ya entramos desde la tabla de índices, entramos en el área primaria del fichero, aquí el recorrido sería secuencial. 12 00:01:58,099 --> 00:02:08,840 Entonces, pasaríamos al siguiente registro. Y el siguiente registro, a la casualidad, es el que buscábamos y que sería el 204. Ahí habríamos encontrado la clave a buscar. 13 00:02:09,620 --> 00:02:26,580 Por tanto, hemos visto la secuencial encadenada, hemos visto la secuencial indexada y ahora vamos a ver la secuencial indexada encadenada. ¿Qué va a aprovechar? Esto va a aprovechar tanto la secuencial encadenada, los punteros, como la indexada, el índice. 14 00:02:26,580 --> 00:02:29,960 Ahora vamos a tener los dos elementos, índices y punteros. 15 00:02:30,219 --> 00:02:34,240 Esto va a generar una gran rapidez, pero también va a ser mayor el espacio ocupado. 16 00:02:37,650 --> 00:02:38,689 ¿Cómo va a ser la estructura? 17 00:02:38,849 --> 00:02:41,349 Pues está basada en una organización indexada. 18 00:02:41,509 --> 00:02:46,050 Vamos a tener ahora en el área primaria añadido un campo más, que sería el puntero. 19 00:02:46,490 --> 00:02:48,509 Tendremos también la zona primaria y la zona de overflow. 20 00:02:48,509 --> 00:02:53,590 La ventaja frente a la indexada es que es más eficiente en búsquedas en el overflow 21 00:02:53,590 --> 00:02:55,909 y mantiene el orden lógico de los registros. 22 00:02:58,150 --> 00:02:59,449 ¿Cómo será la inserción? 23 00:02:59,449 --> 00:03:17,550 La inserción siempre será en la zona de overflow. Los registros se enlazan mediante punteros y mantienen el orden lógico. La eliminación no es física y será igual que en las anteriores. Se marcarán los registros como eliminados, o sea que sería un borrado lógico. No físico. 24 00:03:17,550 --> 00:03:20,789 en cuanto a la necesidad de regularización 25 00:03:20,789 --> 00:03:22,629 hay un problema, el overflow pues crece 26 00:03:22,629 --> 00:03:24,110 con inserciones y eliminaciones lógicas 27 00:03:24,110 --> 00:03:25,409 y eso te va a conllevar 28 00:03:25,409 --> 00:03:29,050 que se comporte como un fichero secuencial 29 00:03:29,050 --> 00:03:31,169 y va a ser bastante más lento 30 00:03:31,169 --> 00:03:32,490 entonces, ¿cómo 31 00:03:32,490 --> 00:03:34,629 solucionamos esto? se soluciona pues 32 00:03:34,629 --> 00:03:36,550 compactando y limpiando, o sea, haciendo una 33 00:03:36,550 --> 00:03:37,810 reorganización frecuente 34 00:03:37,810 --> 00:03:40,949 en cuanto al acceso a un registro 35 00:03:40,949 --> 00:03:42,789 ¿cómo se va a realizar? el primer paso será 36 00:03:42,789 --> 00:03:44,310 buscar en el área de índices 37 00:03:44,310 --> 00:03:47,110 como ocurría en la secuencial indexada 38 00:03:47,110 --> 00:04:08,409 Una vez que buscabas en la área de índice, obtenías por la primera dirección del bloque y nos llevaba a la zona primaria o área primaria donde entrábamos a través de esa dirección de bloque y a partir de esa dirección de bloque ya no lo recorremos de manera secuencial como en la secuencial indexada, sino que lo vamos a recorrer a través de punteros. 39 00:04:09,169 --> 00:04:19,670 Si no se encuentra, pues se sigue el puntero al bloque del overflow, se recorren los registros ahora sí secuencialmente dentro del overflow, y si tampoco están en el overflow, pues se termina la búsqueda. 40 00:04:23,100 --> 00:04:29,579 Hay que decir que para leer todo el fichero, el último registro de cada bloque de overflow apunta al primer registro del siguiente bloque. 41 00:04:30,279 --> 00:04:32,220 Se repite hasta llegar al final. 42 00:04:33,360 --> 00:04:35,680 Eso que permite recorrer el fichero completo en orden lógico. 43 00:04:35,680 --> 00:04:46,199 Entonces, ventajas de la indexada encadenada serían rápidas búsquedas gracias al índice y punteros que mantienen un orden lógico incluso con overflow. 44 00:04:46,839 --> 00:04:56,300 Pero tiene la ventaja de que hay un mayor uso de espacio, tenemos dos elementos más, los índices y los punteros, y la necesidad de una reorganización frecuente. 45 00:04:56,300 --> 00:05:01,199 aquí tenemos un ejemplo de ahora de la secuencial indexada encadenada 46 00:05:01,199 --> 00:05:04,079 y tenemos primero la tabla de índices a la izquierda 47 00:05:04,079 --> 00:05:09,500 en el que tenemos con sus pares clave límite superior y dirección de acceso a bloque asociado 48 00:05:09,500 --> 00:05:13,740 luego tenemos la área primaria en el que ahora tenemos tres campos 49 00:05:13,740 --> 00:05:18,160 incluimos un nuevo elemento que sería el puntero, si os acordáis, con respecto al anterior 50 00:05:18,160 --> 00:05:20,139 y la dirección asociada 51 00:05:20,139 --> 00:05:21,680 y aquí tendríamos el área de overflow 52 00:05:21,680 --> 00:05:33,439 Pero imaginemos que queremos buscar la clave 205. 53 00:05:33,819 --> 00:05:39,279 Entonces, para encontrar la clave 205, primero iríamos a la tabla de índices, como habíamos hecho anteriormente. 54 00:05:39,699 --> 00:05:46,459 En la tabla de índices buscaríamos la clave y metro superior mayor o igual que la clave a buscar 55 00:05:46,459 --> 00:05:49,079 y encontraríamos que sería la 205. 56 00:05:49,079 --> 00:05:59,839 Este tiene asociado la dirección de memoria 6. Esto nos llevaría a la área primaria, a la dirección de memoria 6, que correspondería con la clave científicamente hecha y el dato G. 57 00:06:00,839 --> 00:06:16,620 Este tiene asociado, ahora ya no lo realizará la siguiente búsqueda de manera secuencial, como sucedía con la secuencial indexada, sino que ahora la secuencial indexada encadenada lo que hará es que recorrerá, hará caso a otro elemento, al tercer campo que tiene, que sería el continuo. 58 00:06:16,620 --> 00:06:21,579 que apunta de manera encadenada a la siguiente dirección de memoria, que sería la 7. 59 00:06:21,959 --> 00:06:28,379 Se nos lleva a la 7 y esta 7 contiene el 204 como clave y el H como dato. 60 00:06:29,060 --> 00:06:32,819 Su puntero asociado es el 8, la 10 en 8, que nos llevaría a la 10 en 8 61 00:06:32,819 --> 00:06:39,199 y nos daría, por último, la clave que queríamos buscar. 62 00:06:45,079 --> 00:06:47,040 Pasamos a la organización relativa directa. 63 00:06:47,040 --> 00:06:56,740 Ahora la relativa directa no tiene que ver nada con una estructura secuencial, sino que ahora está basado en la independencia entre el orden de alta de registros y su posición de memoria. 64 00:06:57,379 --> 00:07:05,519 El almacenamiento físico se va a realizar a través de una clave numérica y esa clave numérica va a determinar la posición exacta donde va a estar el almacenamiento. 65 00:07:05,860 --> 00:07:14,240 La clave nos dice exactamente qué dirección de memoria. Tenemos que ahora la secuencia lógica y la física son la misma. 66 00:07:14,240 --> 00:07:21,540 Las claves van a ser numéricas y enteras, cada posición física corresponde con la clave, van a ser iguales 67 00:07:21,540 --> 00:07:25,040 y no se puede grabar un registro con clave superior al límite máximo del fichero 68 00:07:25,040 --> 00:07:32,509 En cuanto al acceso, el acceso va a ser un acceso directo mediante clave 69 00:07:32,509 --> 00:07:35,850 Esa clave va a generar una búsqueda inmediata 70 00:07:35,850 --> 00:07:39,730 El acceso secuencial recorriendo desde la primera dirección 71 00:07:39,730 --> 00:07:42,370 Muy rápido para tratamiento individual de registros 72 00:07:42,370 --> 00:07:49,009 y se va a poder realizar todas las operaciones que habíamos visto anteriormente, tanto de modificación, inserción, consulta y de eliminación. 73 00:07:50,490 --> 00:07:57,430 Ventajas de la organización relativa directa. El acceso no necesita de algoritmo de transformación, el acceso directo. 74 00:07:57,990 --> 00:08:02,930 La escritura y lectura van a ser simultáneas y va a ser muy rápido, pero para búsquedas individuales, no para búsquedas en bloque, 75 00:08:02,930 --> 00:08:15,230 que como eran tan buenos los anteriores organizaciones como eran los 32 tipos de organizaciones secuenciales. 76 00:08:16,230 --> 00:08:19,949 Inconvenientes. En acceso secuencial hay que recorrer todas las posiciones, incluso las vacías. 77 00:08:20,589 --> 00:08:26,569 Muchos huecos en memoria, si las claves no son contiguas, y el bajo aprovechamiento del soporte de almacenamiento. 78 00:08:26,569 --> 00:08:35,009 Aquí tenemos un ejemplo de este modelo en el que coincide directamente la clave con la dirección de memoria. 79 00:08:36,009 --> 00:08:42,929 La dirección de memoria 2 coincide con la clave y la dirección de memoria 4 coincide con la clave 4. 80 00:08:44,730 --> 00:08:52,070 En cuanto a la organización relativa aleatoria, sería la siguiente en la que tendríamos que ahora la organización se realiza 81 00:08:52,070 --> 00:08:56,210 y está basada en una serie de claves alfanuméricas o numéricas. 82 00:08:56,570 --> 00:08:59,230 Y van a necesitar un algoritmo de transformación o hashing. 83 00:08:59,230 --> 00:09:14,889 Para obtener una determinada posición de almacenamiento necesitamos realizar una determinada transformación a través de una función. 84 00:09:15,190 --> 00:09:19,190 Esa función va a ser un algoritmo de transformación o hashing. 85 00:09:19,570 --> 00:09:24,830 Ahora, por tanto, la secuencia lógica y la física no eran como en la directa, ahora son diferentes. 86 00:09:28,389 --> 00:09:36,090 Las direcciones lógicas, que son las claves, no van a coincidir con las físicas. No se pueden mencionar claves que excedan los límites máximos del fichero. 87 00:09:36,529 --> 00:09:43,870 Y hay que decir que los algoritmos de transformación tienen una clave alfónoma, puede ser una clave alfanumérica o una clave numérica. 88 00:09:44,570 --> 00:09:50,730 La clave numérica se transforma a un rango válido y la clave alfanumérica se convierte a un valor entero positivo. 89 00:09:51,570 --> 00:10:07,000 El algoritmo de transformación debe cumplir una serie de premisas para que esta organización relativa aleatoria sea factible. 90 00:10:07,379 --> 00:10:14,000 Una, pues que sea fácil de aplicar, o sea, que la relación entre clave lógica y dirección física sea directa. 91 00:10:14,399 --> 00:10:18,100 Generar un mínimo de huecos posibles, producir el menor número de colisiones. 92 00:10:18,139 --> 00:10:23,059 La colisión es cuando tenemos que haya dos claves distintas que van a apuntar a una misma dirección. 93 00:10:23,059 --> 00:10:34,059 Eso se llama sinónimos y va a producir que necesitamos una serie de procedimientos especiales para poder solucionar dichas colisiones. 94 00:10:34,960 --> 00:10:40,279 Por tanto, la organización relativa aleatoria, pues ahora el acceso es inmediato a registros mediante una clave. 95 00:10:41,000 --> 00:10:45,440 No necesita ordenar el fichero, las lecturas, como he dicho anteriormente, eran simultáneas. 96 00:10:45,759 --> 00:10:51,019 Es muy rápido, pero para consultas de deudores, no consultar el bloque y permite también un acceso secuencial. 97 00:10:51,019 --> 00:11:07,720 Inconvenientes, consultas globales, sobre todo el fichero, pues claro, lógicamente van a ser lentas, no se ha creado esta organización para eso, va a haber cantidad de huecos o espacios y requiere diseñar buenos algoritmos de transformación de claves y de manejo de colisiones, de las dos cosas. 98 00:11:07,720 --> 00:11:19,659 Aquí tenemos una organización relativa directa en la que la función de hashing va a ser multiplicar la clave por 2. 99 00:11:19,659 --> 00:11:33,740 Aquí la tenemos, entonces para poder obtener la dirección de memoria necesitamos multiplicar a través de una función de transformación la clave por 2, es una función de hashing muy sencilla y nos daría la dirección de memoria que es 100. 100 00:11:33,740 --> 00:11:43,679 En el caso de la 51 aplicaría la misma función y nos daría la dirección de movilidad 102.