Awilum
@Awilum
Частный разработчик, ментор и преподаватель курсов

Скорость работы MySQL или Файлы?

Доброго времени суток!

Таблица из 100 000 записей
или
100 000 файлов в папке.

выбрать/записать один файл или выбрать одну запись из таблицы.

Как вы считаете, что будет быстрее для чтения/записи ?
  • Вопрос задан
  • 1038 просмотров
Пригласить эксперта
Ответы на вопрос 7
@Flying
Выбор сильно зависит от того что вы собираетесь делать с этими данными. Если вам нужно (и, главное, будет нужно и в дальнейшем) только читать / писать строго определённые одиночные записи - то можно использовать и файловую систему, хотя хранить все файлы в одной папке - очень плохая идея, нужен sharding чтобы оптимизировать работу (вспоминаем как работает поиск по файлам в каталоге). Кроме того нужно помнить что открытие файла - довольно дорогая операция.

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

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

В целом ваш запрос сводится к "использовать ли мне программу, специально предназначенную для нужной мне функции или написать свой велосипед". Уверен что в подобной формулировке вам легче будет самому ответить на свой вопрос.
Ответ написан
Комментировать
2ord
@2ord
Решение с MySQL будет куда проще и в реализации и в масштабировании.

просто у меня такая задача: коллекция данных, каждый объект - это Json, который надо хранить
только хранить или еще производить поиск по данным внутри JSON?
В MySQL есть тип JSON (начиная с 5.7.8). Если поиск по JSON не нужен, то тогда достаточно BLOB.
Ответ написан
Комментировать
SayMAN83
@SayMAN83
Работаю в IT
На моей практике интеграция делала считывание реестров. Однажды стала падать уже на загрузке. Потом оказалось, что в папках было 10-20к файликов. Один заход в директорию занимал 5 минут минимум. Интеграция падала при попытках одновременного обращения к файлам всего нескольких процессов.
Ответ написан
Комментировать
OtshelnikFm
@OtshelnikFm
Обо мне расскажет yawncato.com
php666
@php666
PHP-макака
Крайне сомневаюсь, что вопрос имеет какое-то практическое значение.

И да. Software Architect мог бы уже написать цикл от 0 до 100к, генерировать эти файлы с записями, протестировать и нам рассказать.
Ответ написан
Комментировать
crashxd
@crashxd
Backend разработчик
100к файлов в одной папке это много для файловой системы. И в этом случае, мне кажется быстрее (или хотя бы менее ресурсоёмко) окажется мускул.
Если раскидать файлы по разным папкам/подпапкам, то файлы будут работать быстрее чем БД.
Ответ написан
reaferon
@reaferon
Файлы быстрее SQL ровно до того момента, пока не начнешь среди них (и в них) что-то искать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы