WikiDer > Tagsistant - Википедия
![]() | В нейтралитет этой статьи оспаривается. (Октябрь 2012 г.) (Узнайте, как и когда удалить этот шаблон сообщения) |
![]() | |
Разработчики) | Tx0 |
---|---|
Стабильный выпуск | 0.6 |
Написано в | C |
Операционная система | Ядро Linux |
Доступно в | английский |
Тип | Семантическая файловая система |
Лицензия | GNU GPL |
Интернет сайт | http://www.tagsistant.net/ |
Разработчики) | 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] Это можно смягчить, введя тройные теги.
Смотрите также
Рекомендации
- ^ "теги / и отношения / каталоги".
- ^ "Как написать плагин для Tagsistant?".
- ^ "Парсер файла" ключ-значение ".
- ^ "Tagsistant 0.6, инструкции - Inodes".
- ^ «Расширенные атрибуты и файловые системы тегов».
- ^ «Основная проблема этого подхода - масштабируемость». https://news.ycombinator.com/item?id=2573318. Внешняя ссылка в
| publisher =
(помощь); Отсутствует или пусто| url =
(помощь)