Реализация превью статьи?

Здравствуйте. Потребовалось реализовать превью (частичный показ статьи). Можно сравнить с Хабром: на главной несколько урезанная статья; при переходе по ссылке — полная версия! Как спроектировать реализацию на SQL?


На данный момент есть три идеи:
  1. Хранить статью в одной ячейке вместе с меткой (habracut). При надобности разбивать на две части
  2. Хранить статью в двух ячейках. При надобности соединить в одну
  3. Хранить статью в одной ячейке. Распарсить при первом сохранении. В отдельной ячейке хранить позицию метки. При надобности разбить на две по сохраненной позиции метки


Сам я склоняюсь к варианту №3. Интуитивно кажется, что вариант должен быть самым производительным. Как думаете вы? Может есть еще варианты?
  • Вопрос задан
  • 3398 просмотров
Пригласить эксперта
Ответы на вопрос 6
@Progrik
Если не критичен размер БД, то 2, но без соединения (т.е. в первой ячейке анонс, во второй целиком статья).
Если не критично время, которое требуется чтоб каждый раз дёрнуть нужные статьи из БД и порезать их пополам, то 3.

Лично я использую 2й вариант и не чувствую угрызений совести.
Ответ написан
@ikra
Что за вздор?! Конечно же достаточно двух полей: article_аnounce и article_text.
Ответ написан
Комментировать
Вижу меня не до конца понимают, поэтому опишу подробнее.

— Нужна таблица с полями: id и anounce.
— На главную страницу выводим блоки текста с этой информации. По клику открываем статью с нужным id.
— Статью целиком берём из файла с именем .php

Преимущества:
— Не загружаем тяжёлыми запросами СУБД. Запросов меньше.
— Опкэшер сам кэширует статьи. Без каких либо танцев с бубном.
Ответ написан
Самым производительным вариантом будет хранение статьи в файле, а в БД хранить только ссылку на файл.
Ответ написан
jj_killer
@jj_killer
Да и по первому пункту попробуйте так:
SUBSTRING(`text`, 1, (INSTR(`text`, "[habracut]")-1))
Ответ написан
Evengard
@Evengard
Два поля. В одном — только то, что до метки ката. Вторая — вся статья (как и то, что до метки ката, так и после)

Конечно, получается дублирование данных. Но если вам CPU важнее, чем место на харде, то почему нет?
Ответ написан
Ваш ответ на вопрос

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

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