Иерархические и плоские списки ключевых слов и производительность в Lightroom

По предложению @John Thomas я разместил это в качестве продолжения: Сколько ключевых слов возможно в Lightroom без снижения производительности?

При одинаковом общем количестве ключевых слов существует ли разница в производительности между «плоским» списком ключевых слов и иерархическим списком ключевых слов.

Ответы (1)

Краткий ответ: может быть, в зависимости от того, что вы будете делать.

Длинный ответ: обычно, с точки зрения базы данных/хранилища, механизм ключевых слов разделен на две (группы) таблиц.

Теперь я рассмотрю простейший случай всего с двумя таблицами, которые довольно понятно (ИМХО) объяснят явление.

Первая (группа) таблица (таблицы) — это таблица, содержащая сами ключевые слова . В этой таблице может быть переменное количество полей, но для нашей цели есть только следующие поля:

  • Уникальный идентификатор ключевого слова (первичный ключ таблицы или сокращенно PK)
  • Уникальный идентификатор ключевого слова родителя (для гиков: ссылка на родительский ПК)
  • (только для пользователей) Имя ключевого слова (текст, который будет отображаться на экране)

Важным полем здесь является второе поле, которое может иметь специальное значение ( «null» , 0, -1 и т. д.), если указанное ключевое слово не имеет родителя.

Как видно здесь, когда мы говорим о таблице ключевых слов, нет никакой разницы, является ли список ключевых слов плоским или иерархическим. .

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

Но есть вторая таблица — таблица ссылок ключевых слов — где все становится сложнее.

Таблица ссылок ключевых слов — это таблица, в которой хранятся связи между каждым ключевым словом и каждой фотографией, которой оно назначено.

В простейшем случае эта таблица имеет следующую структуру:

  • Идентификатор ключевого слова (ПК ключевого слова из таблицы выше)
  • Идентификатор изображения (ПК изображения из таблицы изображений)

Большая проблема этой таблицы в том, что она очень быстро растет . Для 100 000 фотографий (коллекция нормального среднего размера) добавление всего 4-7 ключевых слов к каждому изображению (что, где, когда, кто как минимум, а также жанр, техника и т. д.) увеличивает таблицу до 400 000 — 700 000 записей.

Теоретически , как видно из структуры таблицы, нет никакой разницы между использованием плоской или иерархической структуры ключевых слов.

Но практически может быть разница, потому что на практике разница между теорией и практикой гораздо больше, чем в теории .

Конкретно для нашего обсуждения существует опасное поведение в Lightroom, когда одновременно с назначением ключевого слова изображению программа считает, что все родительские ключевые слова назначены вместе с ним .

Хорошо, если вы знаете, что делаете, это может быть хорошо (поэтому почти все программы имеют это), но в противном случае это может виртуально масштабировать таблицу ссылок ключевых слов, что может вызвать (и вызывает) - в зависимости от того, что вы делаете - проблемы с производительностью.

Следовательно, (в зависимости от вашего оборудования) я советую быть осторожным с иерархией Lightroom. Хотя я думаю, что «плоский» список (даже если это лучшее решение в нашем обсуждении) слишком ограничен, я бы посоветовал использовать иерархические ключевые слова, но не делать дерево слишком глубоким.

Кроме того, я не вижу проблемы в кардинальности ветки (IOW не имеет большого значения для «Root1» иметь 100 или 1000 дочерних элементов), но, как я уже сказал, скорее уровень вложенности .

Re: «не слишком глубоко», к сожалению, то, что мы действительно хотим здесь, это онтология . Например, было бы неплохо, если бы Lightroom поставлялся с набором ключевых слов на основе WordNet . Вместо строгой иерархии, как сейчас, должна быть возможность иметь циклы, чтобы добавление ключевого слова «зонтик» к фотографии подразумевало «дождь» и «снаружи» без необходимости их явного применения. Ограничения Lr — настоящая проблема для такого дескриптивиста, как я.