mcdb
@mcdb
То ли программист, то ли видение...

Хранение статьи в БД. Какой путь выбрать?

Всем здравия крепкого!

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

1. В поле "content" лежит весь текст. Где-то в тексте вставлен тег "". Из БД всё выбирается в полном виде, и потом обрезается до этого тега во View.

2. Два отдельных поля - "announcement" и "body". В "announcement" - начало статьи, в "body" - продолжение.

3. Два отдельных поля - "announcement" и "content". В "announcement" - тизер к статье, в "content" - текст. Этакий "журнальный" вариант.

Вот и всё думаю, к какому варианту склониться. В плане реализации - все просты. Но как будет обстоять дело в дальнейшей эксплуатации?
Поделитесь опытом, дамы и господа, будьте столь любезны.
  • Вопрос задан
  • 2444 просмотра
Пригласить эксперта
Ответы на вопрос 3
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Конечно же третий, так как анонс и текст разные вещи, ну совсем. Тем более анонсов может бы и два, второй для мобильной версии.
Ответ написан
@hsc
full stack python back-end developer
Первый однозначно плохой: двойная (как минимум) большая выборка, из которой на каждом этапе нужна лишь часть информации. Вывод: лишние ресурсы бекенда на разрезание и обработку, плохой cache БД, завышенный трафик между БД и бекендом.

Второй и третий имеют право на жизнь) Если хотите сделать аналог хабраката - то и второй и третий подходят, но я бы выбрал третий, чтобы в любое время можно было обойтись одним sql запросом.
Но, на самом деле, к производительности это почти никак не относиться)
Ответ написан
Комментировать
@seqular
Сисадмин
Третий вариант. Анонс не всегда будет началом, иногда придётся его переписать. Бывает, что присылают статьи с изображениями/таблицами вначале. Или результаты спортивных состязаний. Нет необходимости их включать в анонс, однако они идут вначале.
На этапе заполнения можно предложить автозаполнить поле анонса по первым нескольким предложениям (по умолчанию), но однозначно это поле должно быть отдельным.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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