Articulo de referencia

Tagsistant

"},"latest release version":{"wt":"0.6"},"programming language":{"wt":"[[C (programming language)|C]]"},"operating system":{"wt":"[[Linux kernel]]"},"language":{"wt":"English"},...

Tagsistant es un sistema de archivos semántico para el kernel de Linux , escrito en C y basado en FUSE . A diferencia de los sistemas de archivos tradicionales que utilizan jerarquías de directorios para localizar objetos, Tagsistant introduce el concepto de etiquetas .

Diseño y diferencias con los sistemas de archivos jerárquicos

En informática, un sistema de archivos es un tipo de almacenamiento de datos que se utiliza para guardar, recuperar y actualizar archivos . Cada archivo se localiza de forma única mediante su ruta . El usuario debe conocer la ruta de antemano para acceder a un archivo, y esta no necesariamente incluye información sobre su contenido.

Tagsistant utiliza un enfoque complementario basado en etiquetas . El usuario puede crear un conjunto de etiquetas y aplicarlas a archivos, directorios y otros objetos ( dispositivos , tuberías , etc.). A continuación, puede buscar todos los objetos que coincidan con un subconjunto de etiquetas, denominado consulta. Este enfoque es idóneo para gestionar contenido de usuario como imágenes, grabaciones de audio, vídeos y documentos de texto, pero es incompatible con archivos del sistema (como bibliotecas, comandos y configuraciones), donde la univocidad de la ruta es un requisito de seguridad para evitar el acceso a contenido no autorizado.

El directorio tags/

Un sistema de archivos Tagsistant cuenta con cuatro directorios principales:

  • archivo/
  • relaciones/
  • estadísticas/
  • etiquetas/

Las etiquetas se crean como subdirectorios del tags/directorio y se pueden usar en consultas que cumplan con esta sintaxis:

tags/subquery/[+/subquery/[+/subquery/]]/@/[ 1 ]

donde una subconsulta es una lista ilimitada de etiquetas, concatenadas como directorios:

tag1/tag2/tag3/.../tagN/

La porción de una ruta delimitada por tags/y @/es la consulta propiamente dicha. El +/operador une los resultados de diferentes subconsultas en una sola lista. El @/operador finaliza la consulta.

Se devolverá como resultado de la siguiente consulta:

tags/t1/t2/+/t1/t4/@/

Un objeto debe estar etiquetado como ambos t1/o t2/como ambos t1/y t4/. Cualquier objeto etiquetado como t2/o t4/, pero no como t1/no se recuperará.

La sintaxis de consulta viola deliberadamente la semántica del sistema de archivos POSIX al permitir que un token de ruta sea descendiente de sí mismo, como en tags/t1/t2/+/t1/t4/@donde t1/aparece dos veces. Como consecuencia, un escaneo recursivo de un sistema de archivos Tagsistant terminará con un error o entrará en un bucle infinito, como lo hace Unixfind :

~/tagsistant_mountpoint$ buscar etiquetas/ etiquetas/ etiquetas/documento etiquetas/documento/+ etiquetas/documento/+/documento etiquetas/documento/+/documento/+ etiquetas/documento/+/documento/+/documento etiquetas/documento/+/documento/+/documento/+ [ ... ]

Este inconveniente se compensa con la posibilidad de listar las etiquetas dentro de una consulta en cualquier orden. La consulta tags/t1/t2/@/es completamente equivalente a tags/t2/t1/@/y tags/t1/+/t2/t3/@/es equivalente a tags/t2/t3/+/t1/@/.

Este @/elemento tiene como objetivo preciso restaurar la semántica POSIX: la ruta tags/t1/@/directory/hace referencia a un directorio tradicional y un escaneo recursivo de esta ruta se realizará correctamente.

El razonador y el directorio de relaciones

Tagsistant cuenta con un sencillo sistema de razonamiento que amplía los resultados de una consulta incluyendo objetos etiquetados con etiquetas relacionadas. Dentro del relations/directorio se puede establecer una relación entre dos etiquetas siguiendo un patrón de tres niveles:

relations/tag1/rel/tag2/

El relelemento puede ser includes o is_equivalent . Para incluir la etiqueta rock en la etiqueta musicmkdir , se puede utilizar el comando Unix :

mkdir -p relations/music/includes/rock

El razonador puede resolver relaciones de forma recursiva, lo que permite la creación de estructuras complejas:

mkdir -p relations/music/includes/rock
mkdir -p relations/rock/includes/hard_rock
mkdir -p relations/rock/includes/grunge
mkdir -p relations/rock/includes/heavy_metal
mkdir -p relations/heavy_metal/includes/speed_metal

La red de relaciones creada dentro del relations/directorio constituye una forma básica de ontología .

Complementos de etiquetado automático

Tagsistant cuenta con una pila de complementos de etiquetado automático que se llama cuando se escribe un archivo o un enlace simbólico. [ 2 ] Cada complemento se llama si su tipo MIME declarado coincide

La lista de complementos funcionales lanzados con Tagsistant 0.6 se limita a:

  • text/html: etiqueta el archivo con cada palabra en <title>los elementos y también <keywords>con document , webpage y html
  • imagen/jpeg: etiqueta el archivo con cada etiqueta Exif

El repositorio

Cada sistema de archivos Tagsistant tiene un repositorio correspondiente que contiene un archive/directorio donde se guardan los objetos y un tags.sqlarchivo que almacena la información de etiquetado como una base de datos SQLite . Si se especificó el motor de base de datos MySQL--db con el argumento, el tags.sqlarchivo estará vacío. Otro archivo, denominado repository.ini, es un almacén GLib ini con la configuración del repositorio. [ 3 ]

Tagsistant 0.6 es compatible con los dialectos SQL de MySQL y SQLite para el razonamiento y la resolución de etiquetas. Si bien es posible adaptar su lógica a otros dialectos SQL, deben tenerse en cuenta las diferencias en las estructuras básicas (especialmente la palabra clave SQL INTERSECT).

Los directorios archive/ y stats/

El archive/directorio se ha introducido para proporcionar una forma rápida de acceder a los objetos sin usar etiquetas. Los objetos se listan con su número de inodo como prefijo. [ 4 ]

El stats/directorio incluye algunos archivos de solo lectura con estadísticas de uso. Un archivo configurationcontiene información sobre el tiempo de compilación y la configuración actual del repositorio.

Principales críticas

Se ha destacado que depender de una base de datos externa para almacenar etiquetas e información de etiquetado podría causar la pérdida total de metadatos si la base de datos se corrompe. [ 5 ]

Se ha destacado que el uso de un espacio de nombres plano tiende a sobrecargar el tags/directorio. [ 6 ] Esto podría mitigarse introduciendo etiquetas triples .

Véase también

Referencias

  1. "etiquetas/ y relaciones/ directorios" .
  2. "¿Cómo escribir un plugin para Tagsistant?" .
  3. "Analizador de archivos clave-valor" .
  4. ^ "Cómo utilizar Tagsistant 0.6: Inodos" .
  5. "Atributos extendidos y sistemas de archivos de etiquetas" .
  6. " El principal problema de este enfoque es la escalabilidad" . news.ycombinator.com
  • Sitio web oficial
  • Paquete de Arch Linux archivado el 28/08/2019 en Wayback Machine.
  • Debate en Hacker News
  • Sistemas de archivos de etiquetas y atributos extendidos
  • Asistente de producción