Driver86
@Driver86
Немодератор toster.ru

Как лучше хранить много текста в таблице?

MariaDB, InnoDB
В таблице будут 200 текстовых (text) полей и одно числовое (int) id.
Довольно частые select по id с выбором только одного определённого текстового поля. И редкие insert одним скриптом по крону. И никаких update и delete.
Разумна ли такая архитектура таблицы? Не лучше ли перенести тексты в 200 текстовых файлов и считывать/записывать их через fseek((id - 1) * N), где N - максимально возможная длина текста?
  • Вопрос задан
  • 1593 просмотра
Пригласить эксперта
Ответы на вопрос 2
sanchezzzhak
@sanchezzzhak
Ля ля ля...
Как душе будет угодно
В mysql большие поля ( BLOB, TEXT*) хранится отдельно от таблицы, в самой таблице только указатель.

Например взгляните на Хабр имеет пост в котором есть большие текстовые поля.
И ежесекундно кто-то запрашивает конкретный пост с этим текстом и нечего все нормально.
Ответ написан
@rPman
На вопрос как хранить нужно отвечать только после того как вы ответите на вопрос, как вы хотите это читать. Нужна ли фильтрация по этим полям или поиск например и т.п.

В зависимости от этого ответа и будут рекомендации. mysql с текстами работает без проблем, есть инструменты поиска и т.п. Храните все там как есть и не изобретайте себе проблем.

p.s. предвещая вопрос, если текстами являются например тяжелые книги (к примеру база librusec) то хранить файлы в самой базе - бессмысленно и даже вредно. Т.е. если вам не нужно разбирать содержимое текста, вам в принципе все равно как хранить, но базы данных могут давать дополнительный (небольшой) оверхед по используемому месту и даже на чтение, по сравнение с обычными файлами (исключение - когда их миллионы, там могут возникнуть проблемы из-за выбранной файловой системы).

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

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

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