Варианты реализации вывода текста по шаблону блоками

HJ
На сайте с 14.02.2006
Offline
274
323

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

Сейчас это все хранится в БД простыней текста.

Задача: сделать простым вывод данной информации блочно по шаблону, который легко можно редактировать, не трогая сами записи.

Какие варианты реализации вижу я:

1. Каждый смысловой блок хранить в отдельном поле БД. Но таких блоков много - может понадобится до 40-50 дополнительных полей. Это существенно повысит нагрузку на БД. Конечно, можно будет включить кэширование, но все же - не оптимальный вариант.

2. Хранить в БД каким-либо образом размеченный текст и написать функцию, которая его парсит и выводит информацию по шаблону.

3. Хранить всю инфу не в БД, а в xml файле, где уже все размечено. Но записей может со временем стать и 10 и 50 тысяч. Я не знаю, насколько быстро это будет обрабатываться.

В принципе 3-й вариант был бы мне полезен в дальнейшем - для удобного поиска по каждому из смысловых блоков, например. Но не до конца понятна реализация. При http запросе к странице нужно будет делать поиск по УРЛу в xml-файле и тянуть оттуда инфу? Много ли ресурсов это жрет, если записей будет не 1000, а 5000 или 50000?

2-й вариант наиболее прост для меня в реализации. Но оптимален ли он?

Возможно, подскажете еще варианты? Какой лучше?

C
На сайте с 04.02.2005
Offline
277
#1
Сейчас это все хранится в БД простыней текста.

Зто как?????

HJ
На сайте с 14.02.2006
Offline
274
#2
Chukcha:
Зто как?????

Обычный текст. Без разметки и т.п. Соответственно, и выводится как обычный текст. Нужно разбить его по блокам и выводить эти блоки по шаблону.

C
На сайте с 04.02.2005
Offline
277
#3

1.

serialize()

unserialize()

Поиск в блоках неудобен.

Зато в одной

2. разбивать по отдельным полям

Т.к. блоков Х, то это минус

3. Привести к 1NF

есть минусы

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий