Чтение файловой системы или простой запрос к базе данных? - PullRequest
3 голосов
/ 17 марта 2011

CMS, которую мы используем под названием Kentico, хранит файлы медиатек в файловой системе, а также сохраняет запись в базе данных для метаданных файла (заголовок, описание и т. Д.).Когда вы используете элемент управления Media Library для перечисления этих элементов, он будет считывать файлы из файловой системы для их отображения.Быстрее читать из файловой системы, чем запрашивать базу данных?Или было бы быстрее выполнить простой запрос к таблице базы данных метаданных медиа-файла?

Допущения:

  • Kentico - это приложение ASP.NET, поэтому код находится на C #,Они используют простые наборы данных для передачи своих данных.
  • Из прямых файлов, таких как имя файла и размер, будут считываться только метаданные.
  • Не более 100 файлов в папке.
  • Запрос к базе данных будет проиндексирован правильно.
  • Запрос будет выглядеть примерно так:

    SELECT *
    FROM Media_File
    WHERE FilePath LIKE 'Path / To / Current /Носитель / папка /% '

Ответы [ 2 ]

6 голосов
/ 17 марта 2011

Короткий ответ: это зависит от ряда переменных факторов, но файловая система, как правило, будет быстрее, чем БД.

Более длинный ответ: сканирование локальной файловой системы в известном месте обычнобыстрый, потому что ресурс находится рядом с домом, а компьютеры спроектированы так, чтобы выполнять эти операции очень эффективно.

ОДНАКО, будет ли БЫСТРЕЕ, чем база данных, зависеть от реализации базы данных, где она расположена и сколько данных у нас 'мы говорим оВ целом, СУБД оптимизированы для очень эффективного хранения и запроса больших наборов данных, в то время как «плоская» файловая система может сканировать диск только со скоростью оборудования.Насколько они быстры, зависит от реализации (SqLite не будет таким же быстрым, как MS Sql Server или Oracle), схемы взаимодействия (передача файлов по сети - самая медленная вещь, которую ваш компьютер делает регулярно; напротив, именованные каналыобеспечивает очень быструю межпроцессную связь) и количество используемого вами аппаратного обеспечения (блейд-сервер Quad-Xeon с чередованием SATA-RAID будет намного быстрее, чем ваш ноутбук Celeron).

2 голосов
/ 22 марта 2011

В дополнение к тому, что здесь сказали другие, кеширование также может войти в игру в зависимости от настроек кеша. Не забывайте принимать это во внимание, поскольку Kentico, SQL и IIS имеют много разных уровней кэширования и используются в разное время в зависимости от ваших настроек, конфигурации и того, какие варианты использования вы оптимизируете.

Когда речь заходит о проблемах производительности на этом уровне, ответ часто таков: это зависит. Так что сравните ваше собственное решение, чтобы увидеть, какое из них наиболее подходит для ситуативных потребностей ваших конкретных пользователей.

Kentico выпустил пару руководств по производительности (для 5.0 и другое для 5.5 ), которые могут помочь, но они все равно не дадут вам окончательного ответа, пока вы не протестируете его. сами.

...