En informática , así como en contextos no informáticos, una secuencia de archivos es una colección (finita) bien ordenada de archivos , generalmente relacionados entre sí de alguna manera.
En informática, las secuencias de archivos deberían obedecer idealmente a algún tipo de principio de localidad de referencia , de modo que no solo todos los archivos pertenecientes a la misma secuencia deban estar referenciados localmente entre sí, sino que también obedezcan tanto como su proximidad con respecto a los demás. a la relación de pedido . Las secuencias de archivo explícitas son, de hecho, secuencias cuyos nombres de archivo terminan con una etiqueta numérica o alfanumérica al final (excluyendo la extensión de archivo ).
La localidad de referencia antes mencionada generalmente se refiere a los datos, los metadatos (por ejemplo, sus nombres de archivo o fechas de último acceso ) o la proximidad física dentro del medio de almacenamiento en el que residen. En esta última aceptación, es mejor hablar de contigüidad de archivos ( vea abajo).
Identificación
Cada programa de GUI muestra el contenido de las carpetas ordenando generalmente sus archivos de acuerdo con algunos criterios, principalmente relacionados con los metadatos de los archivos , como el nombre del archivo. El criterio es, por defecto, el orden alfanumérico de los nombres de archivo, aunque algunos sistemas operativos lo hacen de forma "más inteligente" que otros: por ejemplo file1.ext
, idealmente deberían colocarse antes file10.ext
, como lo hacen GNOME Files y Thunar , mientras que, alfanuméricamente, viene después ( más sobre eso más tarde). Existen otros criterios, como ordenar los archivos por su tipo de archivo (o por su extensión) y, si es del mismo tipo, por nombre de archivo o fecha de último acceso, etc.
Por esta razón, cuando una secuencia de archivos tiene una localidad de referencia más fuerte, particularmente cuando está relacionada con su contenido real, es mejor resaltar este hecho dejando que su ordenación adecuada induzca también a una ordenación alfanumérica de los nombres de los archivos. Ese es el caso de las secuencias de archivos explícitas .
Secuencias de archivos explícitas
Las secuencias de archivos explícitas tienen el mismo nombre de archivo (incluidas las extensiones de archivo para confirmar la localidad de referencia de su contenido) excepto por la parte final (excluida la extensión), que es una secuencia de caracteres numéricos, alfanuméricos o puramente alfabéticos para forzar una ordenar; estas secuencias también deberían estar ubicadas idealmente todas dentro del mismo directorio.
En este sentido, cualquier archivo que comparta el mismo nombre de archivo (y posiblemente extensión), solo que difieran por el número de secuencia al final del nombre de archivo, pertenece automáticamente a la misma secuencia de archivos, al menos cuando se encuentran en la misma carpeta. También es parte de muchas convenciones de nomenclatura que las secuencias de archivos indexadas por números (en cualquier base numérica ) que contengan tantos archivos como para abarcar como máximo un número fijo de dígitos, hagan uso de " ceros finales " en sus nombres de archivo para que:
- todos los archivos de la secuencia comparten exactamente el mismo número de caracteres en sus nombres de archivo completos;
- Los ordenamientos alfanuméricos no inteligentes, como los de las GUI de los sistemas operativos , no los permutan erróneamente dentro de la secuencia.
Para explicar mejor este último punto, considere que, estrictamente hablando, file1.ext
(1er archivo en la secuencia) viene alfanuméricamente después file100.ext
, que en realidad es el centésimo. Al cambiar el nombre del primer archivo a file001.ext
dos ceros finales, el problema se resuelve universalmente.
Los ejemplos de secuencias de archivos explícita incluyen: file00000.ext
, file00001.ext
, file00002.ext
,, file02979.ext
(Cinco ceros), y otro con un hexadecimal orden de los 256 archivos tag_00.ext
, tag_01.ext
,, tag_09.ext
, tag_0A.ext
, ..., tag_0F.ext
, tag_10.ext
, ..., tag_0F.ext
, ..., tag_FF.ext
(con sólo un cero al final).
Las convenciones de software y programación generalmente representan una secuencia de archivo como un único objeto de archivo virtual, cuyo nombre está escrito en forma completa en notación de cadena formateada similar a C para representar dónde se encuentra el número de secuencia en el nombre del archivo y cuál es su formato. Para los dos ejemplos anteriores, eso sería filename%05d.ext
y tag_%02H.ext
, respectivamente, mientras que para el primero, la misma convención sin ceros finales sería filename%5d.ext
. Sin embargo, tenga en cuenta que dicha notación generalmente no es válida en los niveles de interfaz de línea de comandos y del sistema operativo , porque el carácter ' %
' no es una expresión regular válida ni un carácter de nombre de archivo legal universalmente : esa notación solo se presenta como un marcador de posición para el archivo virtual -como representar toda la secuencia de archivos explícita.
Entre los productos de Autodesk , Quantel , daVinci , DVS y Adobe After Effects se encuentran paquetes de software notables que reconocen secuencias de archivos explícitas como objetos de sistema de archivos únicos, bastante típicos en la industria de posproducción de audio / video (ver más abajo) .
Dispersión de archivos
Se dice que una secuencia de archivos ubicada dentro de un dispositivo de almacenamiento masivo es contigua si:
- cada archivo de la secuencia no está fragmentado, es decir, cada archivo se almacena en un espacio de almacenamiento contiguo y ordenado (idealmente en una o varias extensiones , pero contiguas );
- los archivos consecutivos de la secuencia ocupan porciones contiguas de espacio de almacenamiento ( extensiones , pero de forma coherente con el orden de los archivos).
La contigüidad de archivos es un requisito más práctico para las secuencias de archivos que solo su localidad de referencia , porque está relacionada con el medio de almacenamiento que alberga la secuencia completa que con la secuencia en sí (o sus metadatos ). Al mismo tiempo, es una característica de "alto nivel", porque no está relacionada con los detalles físicos y técnicos del almacenamiento masivo en sí: en particular, la contigüidad de archivos se realiza de diferentes maneras según la arquitectura del dispositivo de almacenamiento y la estructura real del sistema de archivos. . En "nivel bajo", cada archivo en una secuencia contigua debe colocarse en bloques contiguos, a pesar de que las áreas reservadas o los metadatos especiales requeridos por el sistema de archivos (como inodos o encabezados intersectoriales) realmente los intercalen.
La contigüidad de archivos es, en la mayoría de las aplicaciones prácticas, "invisible" en el nivel del sistema operativo o del usuario, ya que todos los archivos en una secuencia siempre están disponibles para las aplicaciones de la misma manera, independientemente de su ubicación física en el dispositivo de almacenamiento (debido al funcionamiento sistemas que ocultan los componentes internos del sistema de archivos a servicios de nivel superior). De hecho, la contigüidad de archivos puede estar relacionada con el rendimiento de E / S cuando la secuencia debe leerse o escribirse en el menor tiempo posible. En algunos contextos (como la grabación en disco óptico , también véase más adelante), se debe acceder a los datos de una secuencia de archivos en el mismo orden que la secuencia de archivos en sí; en otros contextos, puede ser necesario un acceso "aleatorio" a la secuencia. En ambos casos, la mayoría de los sistemas de archivos profesionales proporcionan estrategias de acceso más rápidas a archivos contiguos que a los no contiguos. La preasignación de datos es crucial para el acceso de escritura, mientras que las velocidades de lectura en ráfagas solo se pueden lograr para datos contiguos.
Cuando una secuencia de archivos no es contigua, se dice que está dispersa , ya que sus archivos se almacenan en ubicaciones dispersas en el dispositivo de almacenamiento. La dispersión de archivos es el proceso de asignar (o reasignar) una secuencia de archivos por ser (o volverse) no contigua. Eso a menudo también se asocia con la fragmentación de archivos , donde cada archivo también se almacena en varios bloques no contiguos; Los mecanismos que contribuyen al primero suelen ser también una causa común al segundo. El acto de reducir la dispersión de archivos mediante la asignación (en primer lugar) o el movimiento (para datos ya almacenados) de archivos en la misma secuencia juntos en el medio de almacenamiento se denomina (archivo) file de scattering . Algunas estrategias de desfragmentación y software dedicado pueden tanto desfragmentar archivos individuales como eliminar secuencias de archivos.
Secuencias de archivos multimedia
Hay muchos contextos en los que las secuencias de archivos explícitas son particularmente importantes: copias de seguridad incrementales, registros periódicos y archivos multimedia capturados o creados con una localidad cronológica de referencia . En el último caso, la numeración explícita de archivos es extremadamente importante para proporcionar tanto al software como a los usuarios finales una forma de discernir la consecuencialidad de los contenidos almacenados en ellos. Por ejemplo, las cámaras digitales y dispositivos similares guardan todos los archivos de imágenes en la misma carpeta (hasta que alcanza su capacidad máxima de número de archivo o hasta que se produce un nuevo evento como la llegada de la medianoche o el cambio de dispositivo) con una secuencia numérica final: Sería muy poco práctico elegir un nombre de archivo para cada toma realizada en el mismo momento de la toma, por lo que el firmware / software de la cámara elige uno que sea perfectamente identificable por su número de secuencia. Con la ayuda de otros metadatos (y generalmente de software de PC especializado), los usuarios pueden discernir más adelante los contenidos multimedia y reorganizarlos, si es necesario.
El ejemplo de Digital Intermediate
Un ejemplo típico en el que las secuencias de archivos explícitas, así como su contigüidad, se vuelven cruciales es en el flujo de trabajo intermedio digital (DI) para las industrias de películas y videos. En tales contextos, los datos de video deben mantener la más alta calidad y estar listos para la visualización (generalmente en tiempo real, si no mejor). Por lo general, los datos de video se adquieren de una cámara de video digital o un escáner de película cinematográfica y se almacenan en secuencias de archivos (tanto como lo hace una cámara fotográfica común) y necesitan ser postproducidos en varios pasos, incluyendo al menos la edición, conformación y corrección de color. Eso requiere:
- Datos sin comprimir, porque cualquier compresión con pérdida , que es común en la mayoría de los productos finalizados, introduce pérdidas de calidad inaceptables.
- Datos sin comprimir (nuevamente), porque los tiempos de descompresión pueden degradar el rendimiento de reproducción / visualización por hardware y software.
- Gestión de datos fotograma por archivo, porque las operaciones habituales de posproducción implican los tiempos de búsqueda más cortos de la historia; El "avance rápido" o "rebobinado" a un fotograma (clave) específico es mucho más rápido si se hace a nivel de sistema de archivos en lugar de dentro de un archivo de video enorme, posiblemente fragmentado ; cada fotograma se almacena en un solo archivo como una imagen digital fija.
- El ordenamiento de marcos inequívocos, por razones obvias, se logra mejor agrupando todos los archivos junto con una numeración explícita de archivos.
- Contigüidad de archivos, debido a que muchas arquitecturas de sistemas de archivos emplean velocidades de E / S más altas si transfieren datos en áreas contiguas del almacenamiento, mientras que la asignación aleatoria puede impedir el rendimiento de carga en tiempo real o mejor.
Tenga en cuenta que un único fotograma en un proyecto DI tiene actualmente un tamaño de entre 9 MB y 48 MB (según la resolución y la profundidad del color ), mientras que la frecuencia de actualización de vídeo suele ser de 24 o 25 fotogramas por segundo (si no más rápido); cualquier almacenamiento necesario para la reproducción en tiempo real de dichos contenidos necesita, por tanto, un rendimiento general mínimo de 220 MB / sa 1,2 GB / s, respectivamente. Con esos números, todos los requisitos anteriores (particularmente la contigüidad de archivos, dados los rendimientos de almacenamiento actuales) se vuelven estrictamente obligatorios.
enlaces externos
- PySeq PySeq es un módulo de Python de código abierto que busca grupos de elementos que siguen una convención de nomenclatura que contienen un índice de secuencia numérica (por ejemplo, fileA.001.png, fileA.002.png, fileA.003.png ...) y los serializa en una cadena de secuencia comprimida que representa la secuencia completa (por ejemplo, fileA.1-3.png).
- checkfileseq checkfileseq es una secuencia de comandos de Python de código abierto (utilizable a través de CLI ) que escanea una estructura de directorio de forma recursiva en busca de archivos que faltan en una secuencia de archivos e imprime un informe al finalizar. Admite una amplia gama de patrones de nombre de archivo y se puede personalizar para obtener una lógica de patrón adicional.