Базы данных НЕ быстрее. Подумайте об этом: в конце они также хранят данные в файловой системе. Поэтому вопрос о том, является ли база данных быстрее, сильно зависит от пути доступа.
Если у вас есть только один путь доступа, который коррелирует с вашей файловой структурой, файловая система может быть намного быстрее, чем база данных. Просто убедитесь, что для файловой системы доступно некоторое кэширование.
Конечно, вы теряете все прелести базы данных:
- транзакции
- гибкие способы индексации данных и, следовательно, доступ к ним достаточно гибким способом.
- гибкий (хотя и некрасивый) язык запросов
- высокая восстанавливаемость.
Масштабирование действительно зависит от используемой файловой системы. AFAIK большинство файловых систем имеют своего рода верхний предел для количества файлов (полностью или по каталогу), хотя на новых это часто очень высокий. Для сотен и тысяч файлов с некоторой структурой каталогов, позволяющих сохранять каталоги разумного размера, должна быть возможность найти хорошо работающую файловую систему.
@ Комментарий Эрика:
Это зависит от того, что вам нужно. Если вам нужно только точное содержимое файла для каждого запроса и вы можете определить местоположение и имя файла детерминистическим способом, прямой доступ быстрее, чем для базы данных, что примерно равно:
- доступ к группе записей индекса, чтобы
- доступ к группе строк таблицы (rdbms обычно читает блоки, содержащие несколько строк), чтобы
- выбрать одну строку из блока.
Если вы посмотрите на это: у вас есть индексы и дополнительные строки в памяти, которые делают ваше кеширование неэффективным, откуда должно произойти ускорение БД?
Базы данных отлично подходят для общего случая. Но если у вас есть особый случай, почти всегда есть специальное решение, которое в некотором смысле лучше.