|
|
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Люди, подкиньте идею, если не трудно... Есть в БД запись (документ, проводка, номенклатура и т.п.). Для этой записи определены ряд обязательных параметров. Со временем требуется набор этих параметров расширять... Как лучше реализовать? 1. Все параметры в одной таблице с основной записью. 2. Отдельная таблица для основных записей и отдельная для всех параметров. 3. Отдельная таблица для основных записей плюс таблица с параметрами, где для каждого значения параметра есть отдельная строка вида (запись_ID, параметр_ID, значение)... 4. Свой вариант... Подскажите, плиз... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2007, 11:06 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Могу только личное мнение сказать, выбрал бы 3-й вариант, т.к. с точки зрения нормализации наиболее правильно, и удобства внесения новых параметров... --- Проходя мимо разложенных граблей, ты теряешь драгоценный опыт. (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2007, 12:49 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Megabyte, пока тоже пользуюсь третьим вариантом... Но уже возникают трудности... Дело в том, что количество параметров постоянно растет... Таким образо количество записей в таблице параметров на порядок, а то и больше, чем в таблице основных записей... Это начинает сказываться на производительности.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2007, 12:51 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
TORTЭто начинает сказываться на производительности.... Можно сравнить "бонусы" хранения конкретного параметра "методом 1" и "методом 3". Если первый метод становится лучше, и не слишком много в системе надо менять (например, отчеты), то вполне можно перенести его в основную таблицу, если уж приспичило. По теме - обычно 3-м методом делаю только такие параметры, которые пользователь (в смысле, администратор клиента) может произвольно настраивать по своему усмотрению. Если значения участвуют в бизнес-логике, то 3-й метод не использую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2007, 12:59 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов TORTЭто начинает сказываться на производительности.... Можно сравнить "бонусы" хранения конкретного параметра "методом 1" и "методом 3". Если первый метод становится лучше, и не слишком много в системе надо менять (например, отчеты), то вполне можно перенести его в основную таблицу, если уж приспичило. По теме - обычно 3-м методом делаю только такие параметры, которые пользователь (в смысле, администратор клиента) может произвольно настраивать по своему усмотрению. Если значения участвуют в бизнес-логике, то 3-й метод не использую. Все параметры настраиваются исключительно админитратором сервера. Только их набор постоянно увеличивается (особенности работы организации, так сказать:) )... Поэтому на стадии проектирования было решено использовать все-таки 3 метод... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2007, 13:13 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Прошло 2 года с момента внедрения и вот теперь видно, что количество записей с такими вот параметрами весьма велико.... Это и усложняет работу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2007, 13:15 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
XML? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 13:12 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Чендлер, хм... Думаем над этим вариантом... Интересует доступ к информации в таком случае... Нужно тестировать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 14:05 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
3-й вар. ЕДИНСТВЕННЫЙ из возможных для такой задачи. Он же и самый гибкий. XML - не выход. Хранить то можно..... А как же фильтрация/поиск с применением SQL ? А отчетность с тем же SQL ? Парсить везде ???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 14:38 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
TORTЛюди, подкиньте идею, если не трудно... Есть в БД запись (документ, проводка, номенклатура и т.п.). Для этой записи определены ряд обязательных параметров. Со временем требуется набор этих параметров расширять... Как лучше реализовать? 1. Все параметры в одной таблице с основной записью. 2. Отдельная таблица для основных записей и отдельная для всех параметров. 3. Отдельная таблица для основных записей плюс таблица с параметрами, где для каждого значения параметра есть отдельная строка вида (запись_ID, параметр_ID, значение)... 4. Свой вариант... Подскажите, плиз... Вот здесь я предложил схемку БД, в ней есть табличка Объект и Свойства. Может это то-что вам нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 14:52 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Поправка, здесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 14:54 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Страдалецъ, ну это мой третий вариант я так понимаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 18:50 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Похоже, что так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2007, 21:15 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
ОК. Оставим пока в покое рост числа записей в таблице параметров. Для меня не очевидно другое. 1) Что такое "параметр" в данном случае? 2) Что такое "значение" параметра и что в это поле можно записать? 3) Что такое основная запись, на которую ссылаются записи из таблицы параметров? 4) По какому Принципу организуются сами основные записи? 5) На каком основании этот Принцип выбран, как основной? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2007, 11:54 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
ИМХО. База на XML будет в разы тормознее любого из трех способов на одном и том же количесстве хранимых объектов. параметров, значений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2007, 12:01 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Все зависит от механизма работы СУБД с XML-данными... Но мне также кажется, что это метод не самый лучший... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2007, 12:40 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
MySQLCraft 1. Параметр - есть некое расширенное свойство объекта, причем не для всех объектов оно может быть определено. 2. В поле "Значение параметра" теоретически может содержаться любая информация... Поэтому предполагается, что это строка.... 3. Основная запись - это набор полей необходимый и обязательный для всех объектов, которые хранятся в данной таблице. 4. Не понял... По-конкретнее вопрос, если можно... 5. ..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2007, 12:44 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
TORTMySQLCraft 1. Параметр - есть некое расширенное свойство объекта, причем не для всех объектов оно может быть определено. 2. В поле "Значение параметра" теоретически может содержаться любая информация... Поэтому предполагается, что это строка.... 3. Основная запись - это набор полей необходимый и обязательный для всех объектов, которые хранятся в данной таблице. 4. Не понял... По-конкретнее вопрос, если можно... 5. ..... 1) В данной постановке, является ли "отношение" расширенным свойством = параметром? Для каких объектов параметры не могут быть определены? 2) Строка годится, как вариант. 3) Почему набор полей основной таблицы является необходимым и обязательным? Какие конкретно поля обязательны и чем они отличаются от параметров? Приведите пример реализации, ибо в предельном случае основная запись содержит только одно поле ID, оно же Primary Key. 4) Имеется ли отношение между записями в основной таблице или это линейный список? 5) Если отношение имеется, то почему оно содержится в основной таблице, чем оно особенно? см.п.1 И еще вопрос. Мы говорим об объектах. Что понимается под объектом? Класс или экземпляр класса? Как в данных таблицах различаются эти сущности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2007, 15:22 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
MySQLCraft 1) В данной постановке, является ли "отношение" расширенным свойством = параметром? Для каких объектов параметры не могут быть определены? 2) Строка годится, как вариант. 3) Почему набор полей основной таблицы является необходимым и обязательным? Какие конкретно поля обязательны и чем они отличаются от параметров? Приведите пример реализации, ибо в предельном случае основная запись содержит только одно поле ID, оно же Primary Key. 4) Имеется ли отношение между записями в основной таблице или это линейный список? 5) Если отношение имеется, то почему оно содержится в основной таблице, чем оно особенно? см.п.1 И еще вопрос. Мы говорим об объектах. Что понимается под объектом? Класс или экземпляр класса? Как в данных таблицах различаются эти сущности? Объекты в моем случае - это экземпляры классов... По Вашей терминологии "различных классов, имеющих в конечном счете общего родителя". Есть набор атрибутов(параметров, в моей терминологии "расширенных параметров"), набор которых уникален в пределах класса. Более того, он изменяем в дальнейшем... Плюс, на мой взгляд важное дополнение, изменяем относительно просто и часто.... В основной записи содержаться "линейные" записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2007, 17:23 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
TORT Объекты в моем случае - это экземпляры классов... По Вашей терминологии "различных классов, имеющих в конечном счете общего родителя". Есть набор атрибутов(параметров, в моей терминологии "расширенных параметров"), набор которых уникален в пределах класса. Более того, он изменяем в дальнейшем... В основной записи содержаться "линейные" записи. Как я понял - в основной таблице просто список идентификаторов экземпляров классов, плюс еще какие то поля. - в таблице параметров, значения параметров этих экземпляров классов А где описание самих классов и списков их параметров(свойств), где описание иерархии класов до этого самого родителя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2007, 18:49 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Складывается впечатление, что вы пытаетесь реализовать объектную модель БД. Но ведь для этого лучше использовать инструмент соответствующий, например Postgree. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2007, 19:15 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Один из возможных вариантов решения - использовать сервер LDAP. Эта служба, разработанная для доступа к каталогам может быть эффективно использована для хранения нерегулярной информации. Есть свободные LDAP - сервера. Говорят, что работаю достаточно быстро (хотя не поддерживают транзакций). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2007, 00:49 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Что чаще запрос, который выбирает значения параметров для группы документов или выбор/модификация параметров конкретного документа? Если второе - интересна пропорция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2007, 11:49 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
drev, чаще запрос к группе объектов + выбор 2-3 параметров для этих объектов... Тут проблема, кмк, в том, что при увеличении кол-ва типов параметров, размер таблицы с ними растет очень быстро.... Вот в этом для меня проблема этого подхода... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2007, 08:58 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
TORTdrev, чаще запрос к группе объектов + выбор 2-3 параметров для этих объектов... Тут проблема, кмк, в том, что при увеличении кол-ва типов параметров, размер таблицы с ними растет очень быстро.... Вот в этом для меня проблема этого подхода... Если бы Вы знаете (или есть статистика) какие параметры чаще всего входят в эти 2-3 - я бы добавил их в основную таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2007, 09:46 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
drev, согласен на все 100%. Этим и приходится периодически заниматься:( ТОлько дело это довольно трудоемкое и нудное :(.... Вот и пытаюсь найти новое решение... :) Собираю, так сказать, советы.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2007, 09:57 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Раскройте секрет сколько записей? насколько сильно тормозит? сам использую вариант №3 интересно когда эта структура скажется на производительности Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2007, 02:24 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Неудобства начались, когда в основной таблице стало 1 млн. записей... А параметров в районе 12 млн. записей... При запросе вида select object, param1, param2..... Проседает немного, так как приходится таблицу с параметрами "шерстить" несколько раз... В моем примере 2 раза... Вот это настораживает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2007, 11:05 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Может имеет смысл посмотреть план запроса и его оптимизировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2007, 12:18 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Так это уже делалось... Все равно время выполнения не устраивает....:( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2007, 12:30 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
TORTЛюди, подкиньте идею, если не трудно... Есть в БД запись (документ, проводка, номенклатура и т.п.). Для этой записи определены ряд обязательных параметров. Со временем требуется набор этих параметров расширять... Как лучше реализовать? 1. Все параметры в одной таблице с основной записью. 2. Отдельная таблица для основных записей и отдельная для всех параметров. 3. Отдельная таблица для основных записей плюс таблица с параметрами, где для каждого значения параметра есть отдельная строка вида (запись_ID, параметр_ID, значение)... 4. Свой вариант... Подскажите, плиз... 3-й вар. хорош, только зачем отдельная табл. для основных записей?? достаточно таблицы с параметрам... при добавлении объекта смотрим на колонку с номерами объектов, делаем max(значения объекта) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2007, 13:40 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
ПИРОГ)), а как получить список объектов с некоторым набором параметров? Пример SQL-запроса, если не трудно.... P.S.: select var1, var2, var3.... from ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2007, 15:23 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
group by рулит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2007, 16:49 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
TORTПИРОГ)), а как получить список объектов с некоторым набором параметров? Пример SQL-запроса, если не трудно.... P.S.: select var1, var2, var3.... from ... самый простой вариант - SELECT * FROM Table1 WHERE ([Номер параметра] = 3) -- параметр - цена AND ([Значение int] > 4000) -- цена больше 4000 AND ([Тип объекта] = 1) -- № типа объекта асли необходимо вывести параметры для объектов в строку, то юзаем PIVOT (2005) или это а так чем переборчик параметров в программе не устраивает?? Ведь фильтровать это все можно слету при помощи sql. задача только выдать список ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2007, 16:59 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
У нас основной "затуп" происходит при формировании списков объектов с какими-нибудь определенными параметрами... Причем запись параметра для одинакового типа объектов может быть, а может и не быть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2007, 09:14 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
TORTУ нас основной "затуп" происходит при формировании списков объектов с какими-нибудь определенными параметрами... Индекс по значению параметра вам поможет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2007, 09:42 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Разве? По типу параметра индекс помогает...А по значению, что-то не вижу логики... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2007, 10:15 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
TORTРазве? По типу параметра индекс помогает...А по значению, что-то не вижу логики... для поиска объектов по значениям параметров <тип объекта><тип параметра><значение параметра> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2007, 13:03 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Мне надо как правило выводить объекты определенного типа с набором параметров... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2007, 15:10 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
TORTМне надо как правило выводить объекты определенного типа с набором параметров... Еще один индекс: для поиска объектов по ид <тип объекта><ид объекта> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2007, 16:20 |
|
||
|
Хранение объекта и набора его параметров...
|
|||
|---|---|---|---|
|
#18+
Такой индекс есть... Только скорость все равно проседает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2007, 16:42 |
|
||
|
|

start [/forum/search_topic.php?author=Wardylak&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
185ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
| others: | 645ms |
| total: | 962ms |

| 0 / 0 |
