@generate
...

Какие размеры данных можно хранить в базе данных?

Как хранить в базе данных большие объемы данных json которые весят 20-300кб. Могу ли я их хранить в таблице или лучше хранить их как файлы?
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Дело не в размере данных, а в их структуре.
Если хранить данные в виде json, то запросы действительно начнут тупить очень быстро.
Если создать нормальную структуру и записывать каждый элемент данных в свою ячейку, а json использовать только в исключительных случаях, для заведомо неструктурируемой информации, то даже при объемах в сто раз больше всё будет летать.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@rPman
Все зависит от того как именно идет работа с базой данных, есть ли поиск по содержимому или база данных используется исключительно как найти json по такому то имени/идентификатору? Просто поиск данных по первичному ключу в базах данных очень быстрый.

Формально поиск данных внутри текстовых полей с json реализован в mysql, индексы строятся, все работает, но запись а точнее обновление индексов будет заметно медленной, и это считается говнокодом...

Проблемы начинаются когда ты хочешь записать данные в базу!

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

Плюс с файлами можно что то сколхозить.

Поэтому - прежде чем задавать этот вопрос, нужно понимать характер работы с этим данными, не только чтение но и запись.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
В современных БД практически нет ограничения на длину строк varchar. А для блобов (BLOB) там специально созданы условия чтоб аттачить толстые файлы произвольного размера.

Когда-то давно реляционные БД ограничивали длину строки varchar. Это было связано с блочной организацией дисковой памяти. Например в Oracle varchar2 был максимум 4000 байт. Потом где-то с 12 релиза его можно растянуть до 32к. Ну а для XML/JSON типов там создается специальное поле которое является просто подтипом BLOB но имеет в виду что лежит например JSON. Констрейнт короче.

Есть специальные dbms такие как Mongo, CouchDb, Tarantool. Они специально создавались под JSON. Обратите на них внимание.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы