|
|
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Задача такая: Есть некий CMS для хранения текста, картинок, таблиц, файлов, видео и аудио. CMS предназначена не для HTML. Контент выдергивается некими плеерами (desktop, mobile) и интерпретируется в виде статей. Сущность "статья" имеет следующую структуру: Заголовок Подзаголовок Нумерованный список элементов контента (content_element: id, type, title, subtitle, text, url, pos, created_at, updated_at). Это может быть текст, ссылка на картинку, ссылка на видео и т.п Нумерованный список атрибутов контента (content_attribute: id, key, value, pos, created_at, updated_at). Key->value значения, которые описывают статью или используются для отображения двух колоночной таблицы характеристик в статье. Позиция статьи в списке статей Дата создания Дата обновления Кроме текста, нужно хранить в элементах статьи еще и таблицы. Как (какие сделать поля или использовать разметку типа textile что не желательно) можно сделать таблицу, чтобы можно было любые 2-мерные сущности (таблицы в контенте) разбивать и складывать в эту таблицу и соответственно выдергивать по указанным значениям полей. У любой статьи есть идентификатор базы и идентификатор пользователя. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 10:52 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
nodir_azamКак (какие сделать поля или использовать разметку типа textile что не желательно) можно сделать таблицу, чтобы можно было любые 2-мерные сущности (таблицы в контенте) разбивать и складывать в эту таблицу и соответственно выдергивать по указанным значениям полей. У любой статьи есть идентификатор базы и идентификатор пользователя. Спасибо! Это называется EAV ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 12:47 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
Да, я примерно представляю как это работает. Сущность = { ContentId, AttributeId, AttributeValue } Для таблицы где, есть набор из двух полей, укладывается легко. Например: Танк Т-34 Длина корпуса, мм: 5920 Длина с пушкой вперёд, мм: 5964 Ширина корпуса, мм: 3000 Высота, мм: 2405 Клиренс, мм: 400 А если так? Таблица расходов топлива танка Т-34 Топливо / летом / зимой / Д.Т. 95 / 100 км - 50л / 100 км - 60л / Д.Т. 85 / 100 км - 60л / 100 км - 65л / ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 13:18 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
nodir_azamДа, я примерно представляю как это работает. Сущность = { ContentId, AttributeId, AttributeValue } Для таблицы где, есть набор из двух полей, укладывается легко. Например: Танк Т-34 Длина корпуса, мм: 5920 Длина с пушкой вперёд, мм: 5964 Ширина корпуса, мм: 3000 Высота, мм: 2405 Клиренс, мм: 400 А если так? Таблица расходов топлива танка Т-34 Топливо / летом / зимой / Д.Т. 95 / 100 км - 50л / 100 км - 60л / Д.Т. 85 / 100 км - 60л / 100 км - 65л / И какая проблема? та же таблица из трех полей (для простоты ненормализованная) RowColumnValueД.Т. 95 летом 50л Д.Т. 95 зимой 60л Д.Т. 85 летом 60л Д.Т. 85 зимой 65л ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 13:46 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
Для хранения разных таблиц можно добавить поле Table, в которое писать для Вашего примера "Таблица расходов топлива танка Т-34" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 13:50 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
А лучше не маяться и хранить контент в BLOB сразу в языке разметки - HTML, Tex и т.п. Нужные для поиска параметры - вытащить отдельно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 14:02 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Особенно весело будет, когда решат изменить внешний вид сайта и для этого придется лазить по куче блоб-полей. Или, скажем, одни и те же данные в одном месте показывать таким образом, а в другом - этаким. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 14:07 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинОсобенно весело будет, когда решат изменить внешний вид сайта и для этого придется лазить по куче блоб-полей. Не придётся. CSS изобрели не сегодня. И даже не вчера. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 14:41 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, А contentId куда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 14:41 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovА лучше не маяться и хранить контент в BLOB сразу в языке разметки - HTML, Tex и т.п. Нужные для поиска параметры - вытащить отдельно. Господа, сразу говорю, контент не для сайта. А для нативных приложений под ios, android, wp. Браузера в этой цепочке нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 14:43 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинДля хранения разных таблиц можно добавить поле Table, в которое писать для Вашего примера "Таблица расходов топлива танка Т-34" Ну вот в классический EAV не влезает, нужно еще одно поле, а потом еще, еще... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 14:44 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
nodir_azamГоспода, сразу говорю, контент не для сайта. А для нативных приложений под ios, android, wp. Пофиг. В любом случае существует некоторый "готовый" формат содержимого для отображения. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 14:48 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovnodir_azamГоспода, сразу говорю, контент не для сайта. А для нативных приложений под ios, android, wp. Пофиг. В любом случае существует некоторый "готовый" формат содержимого для отображения. Нету. Там только есть типы контента. Нет форматирования никакого, ответственно заявляю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 14:50 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
nodir_azamНу вот в классический EAV не влезает "Классический EAV" вообще предназначен исключительно для поиска. Формировать из его содержимого какие-то отчёты или т.н. "контент" - геморрой на всю голову. Как я уже сказал: контент должен храниться отдельно, в EAV из него попадают только ключевые "слова". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 14:59 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovКот МатроскинОсобенно весело будет, когда решат изменить внешний вид сайта и для этого придется лазить по куче блоб-полей. Не придётся. CSS изобрели не сегодня. И даже не вчера. При чем тут CSS? Вы CSS-ом будете, например, таблицу транспонировать (уж не говорю фильтровать-расширять)? nodir_azam Ну вот в классический EAV не влезает, нужно еще одно поле, а потом еще, еще... Классический EAV строится не из одной таблицы, как в Вашем исходном письме и моем примере, а из четырех Ваш расход топлива можно впихнуть и в классический EAV с главной таблицей из трех полей, просто это расписывать долго и лениво. Вкратце - Таблица "расход топлива" будет у Вас типом сущности, каждая строка таблицы - экземпляром этой сущности, "летом","зимой" - атрибутами сущности, "Д.Т. 95 " - значением специального дополнительного атрибута сущности RowName ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 15:01 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovnodir_azamНу вот в классический EAV не влезает "Классический EAV" вообще предназначен исключительно для поиска. Формировать из его содержимого какие-то отчёты или т.н. "контент" - геморрой на всю голову. Я бы сказал ровно наоборот :) в поиске EAV явно слаб (хотя потому что статистики по атрибутам ни к черту), а вот для только хранения и отображения всякой заранее неизвестной шняги - вполне себе справляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 15:07 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинDimitry Sibiryakovпропущено... Не придётся. CSS изобрели не сегодня. И даже не вчера. При чем тут CSS? Вы CSS-ом будете, например, таблицу транспонировать (уж не говорю фильтровать-расширять)? nodir_azam Ну вот в классический EAV не влезает, нужно еще одно поле, а потом еще, еще... Классический EAV строится не из одной таблицы, как в Вашем исходном письме и моем примере, а из четырех Ваш расход топлива можно впихнуть и в классический EAV с главной таблицей из трех полей, просто это расписывать долго и лениво. Вкратце - Таблица "расход топлива" будет у Вас типом сущности, каждая строка таблицы - экземпляром этой сущности, "летом","зимой" - атрибутами сущности, "Д.Т. 95 " - значением специального дополнительного атрибута сущности RowName В том то и дело, что гибкость и универсальность страдает. У меня потом будут типы spatial, int, float и по этим полям надо будет искать. В вашем примере, это всегда +1 поле, которое описывает, например, тип атрибута. Другое решение я не нашел и решил написать сюда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 15:18 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
nodir_azamВ том то и дело, что гибкость и универсальность страдает. У меня потом будут типы spatial, int, float и по этим полям надо будет искать. Расширения EAV для полей разных типов - тоже не big deal и описаны много где (вкратце - это либо добавление в основную таблицу полей IntValue, DateValue и т.п., либо разбиение этой основной таблицы на несколько с полями соответствующих типов). Я бы на Вашем месте все же не изобретал велосипед. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 17:55 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин Расширения EAV для полей разных типов - тоже не big deal и описаны много где (вкратце - это либо добавление в основную таблицу полей IntValue, DateValue и т.п., либо разбиение этой основной таблицы на несколько с полями соответствующих типов). Я бы на Вашем месте все же не изобретал велосипед. Согласен. Я принципе так и сделал. Получается так: key valueД.Т. 95. Летом 50 лД.Т. 95. Зимой 60 лД.Т. 85. Летом 60 лД.Т. 85. Летом 65 л ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 18:30 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
nodir_azam В том то и дело, что гибкость и универсальность страдает. У меня складывается ощущение что вы неправы. Танцуйте от печки У вас есть некая CMS система. Есть список типичных (или критичных по времени) действий с этой системой: наполнение, поиск - выдача результатов и т.п. Вот эти типичные действия и оптимизируйте, а не готовность к будущим изменениям в системе. Dimitry Sibiryakov А лучше не маяться и хранить контент в BLOB сразу в языке разметки - HTML, Tex и т.п. Нужные для поиска параметры - вытащить отдельно.+1 Кот Матроскин Особенно весело будет, когда решат изменить внешний вид сайта и для этого придется лазить по куче блоб-полей.Когда придется (если придется) лучше это будет сделать один раз для всех, неторопясь, чем каждый раз собирать документ с секундомером. Потом сырцы выбрасывать никто не советовал. Место на диске стоит недорого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 19:04 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
SERG1257У вас есть некая CMS система. Есть список типичных (или критичных по времени) действий с этой системой: наполнение, поиск - выдача результатов и т.п. Вот эти типичные действия и оптимизируйте, а не готовность к будущим изменениям в системе. Приложения разные. Система одна. Одно приложение, к примеру хранит рецепты. Другое - описание моделей авто. Третье - картинки и описание танков. Вроде бы все хранят текст и картинки, но нет. Есть еще характеристики, в них вся разница. Хранить в блобе с разметкой - та еще задача. На клиенте надо эту разметку распознать и интерпретировать. Клиент не браузер, еще раз повторюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 19:09 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
SERG1257Когда придется (если придется) лучше это будет сделать один раз для всех, неторопясь, чем каждый раз собирать документ с секундомером. Потом сырцы выбрасывать никто не советовал. Место на диске стоит недорого. С этих позиций вообще никакая база не нужна, надо все делать на static HTML - ничего не придется "собирать с секундомером" :). Счмтаете что весь мир последние 20 лет идет не в ногу (изо всех сил отделяя данные от их представления) и только Вы идете в ногу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 19:21 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
nodir_azam Приложения разные. Система одна. Одно приложение, к примеру хранит рецепты. Другое - описание моделей авто. Третье - картинки и описание танков.И вы хотите сделать одну базу подходящую всем, запрячь так сказать в одну телегу коня и трепетную лань. Не боитесь что получившееся универсальное решение будет универсально плохо работать со всеми приложениями? Не проще ли будет сделать несколько похожих, но заточенных решений? nodir_azam На клиенте надо эту разметку распознать Клиенту надо отдавать то что он клиент скушает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 19:22 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин С этих позиций вообще никакая база не нужна, надо все делать на static HTMLВ моем хрустальном шаре подробностей задачи не видно, поэтому голословных утверждений делать не буду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 19:25 |
|
||
|
Универсальная, формализованная таблица для хранения контента
|
|||
|---|---|---|---|
|
#18+
SERG1257И вы хотите сделать одну базу подходящую всем, запрячь так сказать в одну телегу коня и трепетную лань. Не боитесь что получившееся универсальное решение будет универсально плохо работать со всеми приложениями? Не проще ли будет сделать несколько похожих, но заточенных решений? Нет, не боюсь. В том-то и фишка. Одно серверное решение (CMS) позволяет сократить издержки и время публикации контентных приложений в разы, а может и на порядок. Даже можно было бы наверно использовать готовый, если бы клиент был на браузере. В нашей системе важен контент, а способ его отображения. Универсальность имеет большой смысл. Уж клиент данные в формате JSON обыграет, и качественно, в этом сомнений нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 19:30 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=32&tid=1541010]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 186ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...