WikiDer > Tagsistant - Википедия

Tagsistant - Wikipedia
Tagsistant
Tagsistant logo.png
Разработчики)Tx0
Стабильный выпуск
0.6
Написано вC
Операционная системаЯдро Linux
Доступно ванглийский
ТипСемантическая файловая система
ЛицензияGNU GPL
Интернет сайтhttp://www.tagsistant.net/
Tagsistant
Разработчики)Tx0

Tagsistant это семантическая файловая система для Ядро Linux, написано в C и на основе ПРЕДОХРАНИТЕЛЬ. В отличие от традиционных файловые системы которые используют иерархии каталогов для поиска объектов, Tagsistant представляет концепцию теги.

Дизайн и отличия от иерархических файловых систем

В вычислениях файловая система это тип хранилища данных, которое можно использовать для хранения, извлечения и обновления файлы. Каждый файл может быть уникально расположен по его дорожка. Пользователь должен знать путь заранее, чтобы получить доступ к файлу, и этот путь не обязательно должен включать какую-либо информацию о содержимом файла.

Tagsistant использует дополнительный подход, основанный на теги. Пользователь может создать набор тегов и применить эти теги к файлам, каталоги и другие объекты (устройства, трубы, ...). Затем пользователь может выполнять поиск по всем объектам, которые соответствуют подмножеству тегов, называемому запросом. Такой подход хорошо подходит для управления пользовательским содержимым, таким как изображения, аудиозаписи, фильмы и текстовые документы, но несовместим с системными файлами (такими как библиотеки, команды и конфигурации), где однозначность пути является безопасность требование предотвратить доступ к неправильному контенту.

Каталог тегов /

Файловая система Tagsistant включает четыре основных каталога:

архив/
связи/
статистика /
теги /

Теги создаются как подкаталоги теги / каталог и может использоваться в запросах, соответствующих этому синтаксису:

теги / подзапрос / [+ / подзапрос / [+ / подзапрос /]] / @ /[1]

где подзапрос - это произвольно длинный список тегов, объединенных в каталоги:

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

Часть пути, ограниченная теги / и @/ это фактический запрос. В +/ Оператор объединяет результаты разных подзапросов в один список. В @/ оператор завершает запрос.

Будет возвращено в результате следующего запроса:

теги / t1 / t2 / + / t1 / t4 / @ /

объект должен быть помечен как оба t1 / и t2 / или как оба t1 / и t4 /. Любой объект, помеченный как t2 / или же t4 /, но не как t1 / не будет восстановлен.

Синтаксис запроса намеренно нарушает POSIX семантика файловой системы, позволяя токену пути быть потомком самого себя, как в теги / t1 / t2 / + / t1 / t4 / @ куда t1 / появляется дважды. Как следствие, рекурсивное сканирование файловой системы Tagsistant завершится с ошибкой или бесконечным циклом, как это делает UNIX найти:

~ / tagsistant_mountpoint $ найти теги / теги / теги / documenttags / document / + tags / document / + / documenttags / document / + / document / + tags / document / + / document / + / documenttags / document / + / document / + / document / +[...]

Этот недостаток компенсируется возможностью перечислять теги внутри запроса в любом порядке. Запрос теги / t1 / t2 / @ / полностью эквивалентен теги / t2 / t1 / @ / и теги / t1 / + / t2 / t3 / @ / эквивалентно теги / t2 / t3 / + / t1 / @ /.

В @/ Элемент имеет точную цель восстановления семантики POSIX: путь теги / t1 / @ / каталог / относится к традиционному каталогу, и рекурсивное сканирование этого пути будет выполнено правильно.

Автор рассуждений и отношения / каталог

Tagsistant имеет простой рассуждающий который расширяет результаты запроса, включая объекты, помеченные соответствующими тегами. Связь между двумя тегами может быть установлена ​​внутри связи/ каталог по трехуровневому шаблону:

отношения / tag1 / rel / tag2 /

В rel элемент может быть включает или же is_equivalent. Чтобы включить камень тег в Музыка тег, команда UNIX mkdir может быть использован:

mkdir -p отношения / музыка / включает / рок

Разумчик может рекурсивно разрешать отношения, позволяя создавать сложные структуры:

mkdir -p отношения / музыка / включает / рок
mkdir -p отношения / рок / включает / жесткий_рок
mkdir -p отношения / рок / включает / гранж
mkdir -p отношения / рок / включает / тяжелый_металл
mkdir -p отношения / heavy_metal / включает / speed_metal

Сеть отношений, созданная внутри связи/ каталог представляет собой базовую форму онтология.

Плагины автоматической пометки

Tagsistant имеет автоматическая пометка стек плагинов, который вызывается при записи файла или символической ссылки.[2] Каждый плагин вызывается, если он объявлен Тип MIME совпадения

Список рабочих плагинов, выпущенных с Tagsistant 0.6, ограничен:

  • text / html: помечает файл каждым словом в <title> и <keywords> элементы и с документ, страница в Интернете и html тоже
  • image / jpeg: помечает файл каждым Exif тег

Репозиторий

Каждая файловая система Tagsistant имеет соответствующий репозиторий, содержащий архив/ каталог, в котором фактически сохраняются объекты, и tags.sql файл, содержащий информацию о тегах в виде SQLite база данных. Если MySQL ядро базы данных было указано с --db аргумент, tags.sql файл будет пустым. Другой файл с именем repository.ini это GLib ini с конфигурацией репозитория.[3]

Tagsistant 0.6 совместим с MySQL и Sqlite диалектами SQL для определения тегов и разрешения тегов. Хотя перенос его логики на другие диалекты SQL возможен, необходимо учитывать различия в базовых конструкциях (особенно в ключевом слове INTERSECT SQL).

Архив / и статистика / каталоги

В архив/ Каталог был введен, чтобы обеспечить быстрый доступ к объектам без использования тегов. Объекты перечислены с префиксом их номера inode.[4]

В статистика / В каталоге есть файлы, доступные только для чтения, содержащие статистику использования. Файл конфигурация содержит как информацию о времени компиляции, так и текущую конфигурацию репозитория.

Основные критические замечания

Было подчеркнуто, что использование внешней базы данных для хранения тегов и информации о тегах может привести к полной потере метаданных в случае повреждения базы данных.[5]

Было подчеркнуто, что использование плоского пространства имен имеет тенденцию переполнять теги / каталог.[6] Это можно смягчить, введя тройные теги.

Смотрите также

Рекомендации

  1. ^ "теги / и отношения / каталоги".
  2. ^ "Как написать плагин для Tagsistant?".
  3. ^ "Парсер файла" ключ-значение ".
  4. ^ "Tagsistant 0.6, инструкции - Inodes".
  5. ^ «Расширенные атрибуты и файловые системы тегов».
  6. ^ «Основная проблема этого подхода - масштабируемость». https://news.ycombinator.com/item?id=2573318. Внешняя ссылка в | publisher = (помощь); Отсутствует или пусто | url = (помощь)

внешняя ссылка