weldp
Новичок
Поднимаю старую тему, что бы не плодить новую 
Я уже сделал портал в котором:
Таблица описание обьекта(фильм, музыка, книга)
состоит из:
Так же есть таблица категорий:
И таблица связей:
Это позволяет:
редактировать любое поле, а изменения ложить в blob запись, а потом тупым:
Мы получаем быстро нужные данные, если еще использовать memcache то думаю вообще круто - маленькие нагрузки...
Но...
Чем больше Я пложу таблиц, для построения связи - надо как минимум 2-е, но обычно 3-и, тем сложнее код и тем сложнее что-либо модифицировать, добавлять....
Вот например сейчас актеры пишутся одной строкой в описание фильма, а Я хочу что бы для каждого актера можно было бы щелкнуть на ссылку и посмотреть описание, можно разрулить ситуацию:
таблица фильмов связанная с таблицей связей, которая связана с таблицей актеров через внешние ключи и через int поля.
Нужно поменять концепцию
Подумал - а почему бы не завести всего 2-а поля:
id_обьекта и blob в котором информация будет хранится:
Дальше простым
explode /::/ получаем масив, для каждого елемента
или же например елемент массива с актерами:
{{actors}}актер1,актер2,актер3{{/actors}} делим на массив и обрабатываем как нам нужно....
например вставить ссылки:
где id будет хеш....
То есть теперь везде где в базе нельзя было сделать запись одной строкой, а надо было много строк:
данный фильм относится к боевика и драмам
Если Я правильно понял, то Я сэкономлю на записях в БД - сокращу её нагрузку...
Если на imdb 450k фильмов, и каждый из них может иметь от одной до 5-ти категорий, то есть в какой-нить таблице будет записей: 450к*5 = 2.3млн записей макс
+на imdb около 2млн актеров, режиссёров и т.д.
каждому фильму соответствует около 3-15актеров + 1-4 режиссера, то есть в этой таблице связей:
450к*19 =8.5млн записей
Это большие потери в месте и наверное в производительности...
Чем еще может быть плох мой второй подход? (о нагрузке на проц на операциях preg_match / preg_replace Я в курсе
), с другой стороны memcache может сгладить нагрузку...?
И как можно было бы организовать поиск? (Думал прикрутить к sphinx'у, и скорее всего через xml,хотя не понятно как искать...)
ЗЫ:
Может Я тут зря велосипед придумал и умные люди уже давно умеют бороться с нагрузками, гибкостью кода, размером БД, и реализацией детального и обычного поиска

Я уже сделал портал в котором:
Таблица описание обьекта(фильм, музыка, книга)
состоит из:
Код:
id имя оригинальное имя описание режисер(он же издатель) год и т.д.
последнее поле - blob запись с полным описанием обьекта для текущего шаблона.
Код:
id_категории название_категории
Код:
id_категории id_обьекта
редактировать любое поле, а изменения ложить в blob запись, а потом тупым:
Код:
SELECT `fullpage`,`id` FROM `media_page`
Но...
Чем больше Я пложу таблиц, для построения связи - надо как минимум 2-е, но обычно 3-и, тем сложнее код и тем сложнее что-либо модифицировать, добавлять....
Вот например сейчас актеры пишутся одной строкой в описание фильма, а Я хочу что бы для каждого актера можно было бы щелкнуть на ссылку и посмотреть описание, можно разрулить ситуацию:
таблица фильмов связанная с таблицей связей, которая связана с таблицей актеров через внешние ключи и через int поля.
Нужно поменять концепцию

Подумал - а почему бы не завести всего 2-а поля:
id_обьекта и blob в котором информация будет хранится:
PHP:
{{name}} данные {{/name}}/::/{{secondname}}данные{{/secondname}}/::/{{year}}данные{{/year}}/::/{{actors}}{{/actors}}.....{{/year}}
explode /::/ получаем масив, для каждого елемента
Код:
str_replace("{{name}}","<div>",$obj)
{{actors}}актер1,актер2,актер3{{/actors}} делим на массив и обрабатываем как нам нужно....
например вставить ссылки:
Код:
<a href="?actor="id">актер1</a>
То есть теперь везде где в базе нельзя было сделать запись одной строкой, а надо было много строк:
данный фильм относится к боевика и драмам
Если Я правильно понял, то Я сэкономлю на записях в БД - сокращу её нагрузку...
Если на imdb 450k фильмов, и каждый из них может иметь от одной до 5-ти категорий, то есть в какой-нить таблице будет записей: 450к*5 = 2.3млн записей макс
+на imdb около 2млн актеров, режиссёров и т.д.
каждому фильму соответствует около 3-15актеров + 1-4 режиссера, то есть в этой таблице связей:
450к*19 =8.5млн записей
Это большие потери в месте и наверное в производительности...
Чем еще может быть плох мой второй подход? (о нагрузке на проц на операциях preg_match / preg_replace Я в курсе
), с другой стороны memcache может сгладить нагрузку...?И как можно было бы организовать поиск? (Думал прикрутить к sphinx'у, и скорее всего через xml,хотя не понятно как искать...)
ЗЫ:
Может Я тут зря велосипед придумал и умные люди уже давно умеют бороться с нагрузками, гибкостью кода, размером БД, и реализацией детального и обычного поиска
