Jump to content

Тегипостоянный

Тегипостоянный
Разработчик(и) Tx0 < [адрес электронной почты защищен] >
Стабильная версия
0.6
Написано в С
Операционная система Ядро Linux
Доступно в Английский
Тип Семантическая файловая система
Лицензия GNU GPL
Веб-сайт http://www.tagsistant.net/
Тегипостоянный
Разработчик(и) Тх0

Tagsistant семантическая файловая система для ядра Linux , написанная на C и основанная на FUSE . В отличие от традиционных файловых систем , которые используют иерархию каталогов для поиска объектов, Tagsistant вводит концепцию тегов .

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

[ редактировать ]

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

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

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

[ редактировать ]

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

архив/
отношения/
статистика/
теги/

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

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

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

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

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

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

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

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

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

~/tagsistant_mountpoint$ find tags/
tags/
tags/document
tags/document/+
tags/document/+/document
tags/document/+/document/+
tags/document/+/document/+/document
tags/document/+/document/+/document/+
[...]

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

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

Рассуждающий и отношения/каталог

[ редактировать ]

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

relations/tag1/rel/tag2/

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

mkdir -p relations/music/includes/rock

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

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

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

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

[ редактировать ]

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

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

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

Репозиторий

[ редактировать ]

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

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

Каталоги archive/ и stats/

[ редактировать ]

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

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

Основная критика

[ редактировать ]

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

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

См. также

[ редактировать ]
  1. ^ «теги/и отношения/каталоги» .
  2. ^ «Как написать плагин для Tagsistant?» .
  3. ^ «Парсер файлов ключ-значение» .
  4. ^ «Инструкции по Tagsistant 0.6 — Inodes» .
  5. ^ «Расширенные атрибуты и файловые системы тегов» .
  6. ^ «Основная проблема этого подхода — масштабируемость» . news.ycombinator.com .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e2e062f16ce7bd705149a3c8806f5a4b__1646992260
URL1:https://arc.ask3.ru/arc/aa/e2/4b/e2e062f16ce7bd705149a3c8806f5a4b.html
Заголовок, (Title) документа по адресу, URL1:
Tagsistant - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)