Валерий Крылов (justy_tylor) wrote,
Валерий Крылов
justy_tylor

Метаданные

Вот есть у нас бинарный контейнер. С музыкой, например. Очень естественное желание - хранить в нём же метаданные - Artist, Album, etc. Но где-то ещё надо хранить контекстные метаданные - от "пять звёздочек", "три звёздочки" и "количество проигрываний пользователем" до "учитывать этот файл при автоподборе сетов для вечеринок". Вне самого файла. При этом, совпадение формата внешних метаданных с форматом внутренних и наличие однозначного механизма идентификации файла из внешних метаданных это разумные требования для дизайна бинарных контейнеров, надо их учитывать, чем сейчас и занимаюсь.

Тема внешнего хранения метаданных ранее была затронута в комментариях к http://justy-tylor.livejournal.com/189379.html Как и вариант их хранения прямо внутри индексов файловой системы, который мне кажется не самым удачным. А детальное рассмотрение вопроса приводит к такому парадоксальному выводу: даже те метаданные, хранение которых обеспечивается распространёнными файловыми системами, должны находиться вовсе не там.

Метаданные о времени создания/изменения файла практически невозможно использовать для идентификации версий файла, эффективность как у гадания на кофейной гуще. Их автоматическое применение в пайплайне с архиваторами и разными таймзонами ведёт к 100% попаданию на грабли.

Для упорядочивание пришедших файлов необходимы метаданные о времени скачивания/копирования, источнике, тэгах источника по отношению к файлу. Для рабочих файлов - полноценная система контроля версий. Существующие мета типа "какое-то время" бесполезны.

Права доступа файловой системы хороши для нескольких пользователей на удалённом сервере. При наличии физического доступа к нешифрованому диску они фикция. А необходимой на десктопах/ноутах возможности детально расписать права для приложений в файловой системе нет. Так может и не должна файловая система заниматься правами? Есть примеры апачевского .htaccess и других конфигов, где понятным образом описываются достаточно сложные правила доступа/редиректа, и без того ада потеряных идентификаций, который любят показывать механизмы управления доступом NTFS.

Вместо корявых метаданных файловой системы нужны внешние метаданные в файлах. Например:

.access -- определяет права доступа для файлов и поддиректорий, по аналогии с .htaccess

.tracking -- информация о том, что файл "имя" в [дата+время] скачан с [URI], где сопровождался тэгами [fun, english humor], а затем в [дата+время] был с десятком других скопирован сюда из "D:/inbound".

.fts-index -- индекс полнотекстового поиска по документам директории и поддиректорий.

.some-media-tags -- та самая информация про три звёздочки и что учитывать в сетах для вечеринок.

.git -- контроль версий, как сейчас.

При каких-либо действиях в директории операционная система запрашивает и оповещает соответствующие сервисы. Если в задействованных в операции директориях (и над ними) отсутствуют .fts-index и .some-media-tags, то эти сервисы не используются.

А файловая система занимается только своими задачами - идентификация, владение и хранение.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 3 comments