|
|
|
не бейте сильно :) (про меняющиеся структуры)
|
|||
|---|---|---|---|
|
#18+
Какие варианты могут использоваться (кроме, кхгм а-ля Тенцер). Примерно такая ситуация: документ, структура его (то, что он включает в себя) раз в полгода-год немного меняется. Нужно работать как с текущей, так и с предыдущими структурами. 1) новые таблицы + таблица описания времени действия структуры 2) уже упомянутая структура (поля - построчно хранятся) 3) ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 10:04 |
|
||
|
не бейте сильно :) (про меняющиеся структуры)
|
|||
|---|---|---|---|
|
#18+
я за вариант построчного хранения полей. сделать справочник полей: ИД поля (ключ), порядковый номер в документе, ИД документа сделать справочник документов: ИД документа (ключ), дата начала действия, дата конца действия таблица, где хранятся значения полей для каждого документа (предполагается, что в каждом документе будет много строк): ИД поля (ключ), номер строки (ключ), значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 10:15 |
|
||
|
не бейте сильно :) (про меняющиеся структуры)
|
|||
|---|---|---|---|
|
#18+
vinger4я за вариант построчного хранения полей. один из минусов - сложности в реализации даже такого простого ограничения, как длина строкового поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 10:53 |
|
||
|
не бейте сильно :) (про меняющиеся структуры)
|
|||
|---|---|---|---|
|
#18+
вопросик_vinger4я за вариант построчного хранения полей. один из минусов - сложности в реализации даже такого простого ограничения, как длина строкового поля.Это не самое страшное - можно, в конце концов, триггер повесить. А вот отчеты и поиск - это будет убийство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 11:15 |
|
||
|
не бейте сильно :) (про меняющиеся структуры)
|
|||
|---|---|---|---|
|
#18+
BelyА вот отчеты и поиск - это будет убийство. Какому варианту вы чаще отдаете предпочтение ? PS продолжу еще возможные: 3) - фиксируем практически неизменные атрибуты, остальные загоняем в таблицы с "безымянными полями" + заголовки/описания этих полей. 4) ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 11:42 |
|
||
|
не бейте сильно :) (про меняющиеся структуры)
|
|||
|---|---|---|---|
|
#18+
вопросик_1) новые таблицы + таблица описания времени действия структуры 2) уже упомянутая структура (поля - построчно хранятся) 3) ...Я уже как-то писал чем можно заменить EAV при необходимости изменения структуры. Есть еще следующие варианты, относящиеся к (3) 3а) Создать таблицу с фиксированным набором полей разных типов. "Строка" - 20 полей, "число" - 15 полей, "дата" - 10 полей. Далее в метаданных надо будет указать какое физическое поле чему соответствует. Например "DATE1" = "Дата подписания договора". При необходимости увеличения кол-ва полей - их можно просто добавить в таблицу. Недостаток - сложность определения где какие данные лежат для разных версий документов. 3б) Поля никогда не удалять из таблицы, если они больше не используются (для истории). Новые необходимые поля - добавлять в структуру таблицы. В метаданных хранить информацию какие поля в какой версии используются, а какие нет. Недостаток - через некоторое время таблица может оказаться заполненой на треть/четверть или еще меньше. 3в) Использовать основную таблицу "Документ" в которой хранятся системные поля и общие для всех вариантов документа и несколько связанных с ней таблиц 1:1 с детальным описанием доп информации, которая есть в каждой версии. Более подробно обсуждалось здесь (3в) - видится наиболее сбалансированным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 11:48 |
|
||
|
не бейте сильно :) (про меняющиеся структуры)
|
|||
|---|---|---|---|
|
#18+
еще такой момент - для работы с меняющейся структурой данных использовать хранимые в бд запросы или динамически генерировать (~по какому-нибудь метаописанию) ? (чтобы минимизировать изменения в клиентской части) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 12:25 |
|
||
|
не бейте сильно :) (про меняющиеся структуры)
|
|||
|---|---|---|---|
|
#18+
вопросик_еще такой момент - для работы с меняющейся структурой данных использовать хранимые в бд запросы или динамически генерировать (~по какому-нибудь метаописанию) ? (чтобы минимизировать изменения в клиентской части)Здесь я вижу два варианта: 1) Если настраивать систему будет обычный пользователь, то запросы генерить лучше динамически по метаописанию. Можно по созданному метаописанию - создать VIEW и его использовать в запросах вместо таблицы. 2) Если настраивать систему будет програмист, то непосредственно в метаданных можно хранить текст запроса, который будет использоваться. 3) Что использовать ХП или VIEW(SQL) - зависит от SQL сервера, архитектуры программы и много чего. Я бы порекомендовал использовать SQL запросы (или VIEW). В этом случа у сервера есть шанс оптимизировать запрос к БД при появлении доп условий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 13:01 |
|
||
|
не бейте сильно :) (про меняющиеся структуры)
|
|||
|---|---|---|---|
|
#18+
Belyнепосредственно в метаданных можно хранить текст запроса, который будет использоваться. Насколько часто проверять изменение текста запроса (hash и тд) - перед каждым исполнением/ либо только при первом и какая-нибудь структура, отслеживающая изменения метаданных и работающих в данный момент в системе клиентов ? Другими словами - варианты обновления версий системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 16:42 |
|
||
|
не бейте сильно :) (про меняющиеся структуры)
|
|||
|---|---|---|---|
|
#18+
вопросик_Насколько часто проверять изменение текста запроса (hash и тд) - перед каждым исполнением/ либо только при первом и какая-нибудь структура, отслеживающая изменения метаданных и работающих в данный момент в системе клиентов ? Другими словами - варианты обновления версий системы.У вас сколько тысяч таких запросов будет выполняться в секунду? Если как у обычных людей (зашли в форму, выполнили поиск, работаем дальше) - то проще зачитывать запрос при открытии формы. Оптимизировать надо то что узко, а не просто все подряд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 18:09 |
|
||
|
не бейте сильно :) (про меняющиеся структуры)
|
|||
|---|---|---|---|
|
#18+
вопросик_ пишет: > Какие варианты могут использоваться (кроме, кхгм а-ля Тенцер). > Примерно такая ситуация: документ, структура его (то, что он включает в > себя) раз в полгода-год немного меняется. Нужно работать как с текущей, > так и с предыдущими структурами. > 1) новые таблицы + таблица описания времени действия структуры Нет. Только EAV (а-ля Тенцер). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 20:38 |
|
||
|
не бейте сильно :) (про меняющиеся структуры)
|
|||
|---|---|---|---|
|
#18+
MasterZivНет. Только EAV (а-ля Тенцер).Категорично, однако ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2008, 11:11 |
|
||
|
не бейте сильно :) (про меняющиеся структуры)
|
|||
|---|---|---|---|
|
#18+
MasterZiv Нет. Только EAV Почему категорически отвергаются другие варианты в пользу этого ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2008, 12:15 |
|
||
|
не бейте сильно :) (про меняющиеся структуры)
|
|||
|---|---|---|---|
|
#18+
Bely[quot вопросик_]... 3б) Поля никогда не удалять из таблицы, если они больше не используются (для истории). Новые необходимые поля - добавлять в структуру таблицы. В метаданных хранить информацию какие поля в какой версии используются, а какие нет. Недостаток - через некоторое время таблица может оказаться заполненой на треть/четверть или еще меньше. .... Подход SAP. Поэтому в таблицах SAP сейчас сотни столбцов - не редкость. По нынешним временам и стоимости гигабайта на дисках выделенный "недостаток" - не недостаток вовсе. Надо просто гигабайты брать не у EMC :) Еще в Oracle 11 есть компрессия таблиц/индексов, она тут тоже помогает. Проблема с EAV уже озвучена - без готовых библиотек произойдет массивное изобретение велосипедов даже для простейших вещей, типа динамической фильтрации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2008, 14:25 |
|
||
|
не бейте сильно :) (про меняющиеся структуры)
|
|||
|---|---|---|---|
|
#18+
вопросик_ пишет: > Почему категорически отвергаются другие варианты в пользу этого ? Потому что других хороших вариантов я не знаю. Приложение должно жить с ОДНОЙ структурой данных всю свою жизнь (исключая доработки, разумеется). Т.е. изменение структуры - это только административное действие при переходе на новую версию. Да к тому же есть очень веский резон против такого подхода -- практически во всех СУБД размер кортежа физически ограничен как по общей длине полей, так и по кол-ву полей. Не, ну можно конечно один раз произвести изменение структуры, сохранить в документах где-то версию схемы и потом обрабатывать параллельно двумя способами всё в зависимости от версии. Но это можно сделать один-два раза, а не 100. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2008, 16:04 |
|
||
|
не бейте сильно :) (про меняющиеся структуры)
|
|||
|---|---|---|---|
|
#18+
вопросик_ Примерно такая ситуация: документ, структура его (то, что он включает в себя) раз в полгода-год немного меняется. MasterZivНе, ну можно конечно один раз произвести изменение структуры, сохранить в документах где-то версию схемы и потом обрабатывать параллельно двумя способами всё в зависимости от версии. Но это можно сделать один-два раза, а не 100.Расчитывать, что через 50-100 лет система будет такой же - ну, странновато, чтоли... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2008, 11:16 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35651462&tid=1543564]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
181ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 460ms |

| 0 / 0 |
