powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / не бейте сильно :) (про меняющиеся структуры)
16 сообщений из 16, страница 1 из 1
не бейте сильно :) (про меняющиеся структуры)
    #35650847
вопросик_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Какие варианты могут использоваться (кроме, кхгм а-ля Тенцер).
Примерно такая ситуация: документ, структура его (то, что он включает в себя) раз в полгода-год немного меняется. Нужно работать как с текущей, так и с предыдущими структурами.
1) новые таблицы + таблица описания времени действия структуры
2) уже упомянутая структура (поля - построчно хранятся)
3) ...
...
Рейтинг: 0 / 0
не бейте сильно :) (про меняющиеся структуры)
    #35650876
vinger4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я за вариант построчного хранения полей.
сделать справочник полей: ИД поля (ключ), порядковый номер в документе, ИД документа
сделать справочник документов: ИД документа (ключ), дата начала действия, дата конца действия
таблица, где хранятся значения полей для каждого документа (предполагается, что в каждом документе будет много строк): ИД поля (ключ), номер строки (ключ), значение.
...
Рейтинг: 0 / 0
не бейте сильно :) (про меняющиеся структуры)
    #35650982
вопросик_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vinger4я за вариант построчного хранения полей.
один из минусов - сложности в реализации даже такого простого ограничения, как длина строкового поля.
...
Рейтинг: 0 / 0
не бейте сильно :) (про меняющиеся структуры)
    #35651038
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопросик_vinger4я за вариант построчного хранения полей.
один из минусов - сложности в реализации даже такого простого ограничения, как длина строкового поля.Это не самое страшное - можно, в конце концов, триггер повесить.
А вот отчеты и поиск - это будет убийство.
...
Рейтинг: 0 / 0
не бейте сильно :) (про меняющиеся структуры)
    #35651128
вопросик_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelyА вот отчеты и поиск - это будет убийство.
Какому варианту вы чаще отдаете предпочтение ?

PS
продолжу еще возможные:
3) - фиксируем практически неизменные атрибуты, остальные загоняем
в таблицы с "безымянными полями" + заголовки/описания этих полей.
4) ...
...
Рейтинг: 0 / 0
не бейте сильно :) (про меняющиеся структуры)
    #35651157
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопросик_1) новые таблицы + таблица описания времени действия структуры
2) уже упомянутая структура (поля - построчно хранятся)
3) ...Я уже как-то писал чем можно заменить EAV при необходимости изменения структуры.
Есть еще следующие варианты, относящиеся к (3)

3а) Создать таблицу с фиксированным набором полей разных типов. "Строка" - 20 полей, "число" - 15 полей, "дата" - 10 полей.
Далее в метаданных надо будет указать какое физическое поле чему соответствует. Например "DATE1" = "Дата подписания договора".
При необходимости увеличения кол-ва полей - их можно просто добавить в таблицу.

Недостаток - сложность определения где какие данные лежат для разных версий документов.

3б) Поля никогда не удалять из таблицы, если они больше не используются (для истории).
Новые необходимые поля - добавлять в структуру таблицы. В метаданных хранить информацию какие поля в какой версии используются, а какие нет.

Недостаток - через некоторое время таблица может оказаться заполненой на треть/четверть или еще меньше.

3в) Использовать основную таблицу "Документ" в которой хранятся системные поля и общие для всех вариантов документа и несколько связанных с ней таблиц 1:1 с детальным описанием доп информации, которая есть в каждой версии.
Более подробно обсуждалось здесь

(3в) - видится наиболее сбалансированным.
...
Рейтинг: 0 / 0
не бейте сильно :) (про меняющиеся структуры)
    #35651325
вопросик_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
еще такой момент - для работы с меняющейся структурой данных использовать хранимые в бд запросы или динамически генерировать (~по какому-нибудь метаописанию) ?
(чтобы минимизировать изменения в клиентской части)
...
Рейтинг: 0 / 0
не бейте сильно :) (про меняющиеся структуры)
    #35651462
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопросик_еще такой момент - для работы с меняющейся структурой данных использовать хранимые в бд запросы или динамически генерировать (~по какому-нибудь метаописанию) ?
(чтобы минимизировать изменения в клиентской части)Здесь я вижу два варианта:
1) Если настраивать систему будет обычный пользователь, то запросы генерить лучше динамически по метаописанию. Можно по созданному метаописанию - создать VIEW и его использовать в запросах вместо таблицы.

2) Если настраивать систему будет програмист, то непосредственно в метаданных можно хранить текст запроса, который будет использоваться.

3) Что использовать ХП или VIEW(SQL) - зависит от SQL сервера, архитектуры программы и много чего. Я бы порекомендовал использовать SQL запросы (или VIEW). В этом случа у сервера есть шанс оптимизировать запрос к БД при появлении доп условий.
...
Рейтинг: 0 / 0
не бейте сильно :) (про меняющиеся структуры)
    #35652376
вопросик_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Belyнепосредственно в метаданных можно хранить текст запроса, который будет использоваться.
Насколько часто проверять изменение текста запроса (hash и тд) - перед каждым исполнением/ либо только при первом и какая-нибудь структура, отслеживающая изменения метаданных и работающих в данный момент в системе клиентов ?
Другими словами - варианты обновления версий системы.
...
Рейтинг: 0 / 0
не бейте сильно :) (про меняющиеся структуры)
    #35652747
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопросик_Насколько часто проверять изменение текста запроса (hash и тд) - перед каждым исполнением/ либо только при первом и какая-нибудь структура, отслеживающая изменения метаданных и работающих в данный момент в системе клиентов ?
Другими словами - варианты обновления версий системы.У вас сколько тысяч таких запросов будет выполняться в секунду?
Если как у обычных людей (зашли в форму, выполнили поиск, работаем дальше) - то проще зачитывать запрос при открытии формы.

Оптимизировать надо то что узко, а не просто все подряд.
...
Рейтинг: 0 / 0
не бейте сильно :) (про меняющиеся структуры)
    #35652969
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопросик_ пишет:

> Какие варианты могут использоваться (кроме, кхгм а-ля Тенцер).
> Примерно такая ситуация: документ, структура его (то, что он включает в
> себя) раз в полгода-год немного меняется. Нужно работать как с текущей,
> так и с предыдущими структурами.
> 1) новые таблицы + таблица описания времени действия структуры

Нет. Только EAV (а-ля Тенцер).

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
не бейте сильно :) (про меняющиеся структуры)
    #35653746
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНет. Только EAV (а-ля Тенцер).Категорично, однако
...
Рейтинг: 0 / 0
не бейте сильно :) (про меняющиеся структуры)
    #35653996
вопросик_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv Нет. Только EAV
Почему категорически отвергаются другие варианты в пользу этого ?
...
Рейтинг: 0 / 0
не бейте сильно :) (про меняющиеся структуры)
    #35654465
Фотография А6дуллаh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely[quot вопросик_]...
3б) Поля никогда не удалять из таблицы, если они больше не используются (для истории).
Новые необходимые поля - добавлять в структуру таблицы. В метаданных хранить информацию какие поля в какой версии используются, а какие нет.

Недостаток - через некоторое время таблица может оказаться заполненой на треть/четверть или еще меньше.
....

Подход SAP. Поэтому в таблицах SAP сейчас сотни столбцов - не редкость.
По нынешним временам и стоимости гигабайта на дисках выделенный "недостаток" - не недостаток вовсе. Надо просто гигабайты брать не у EMC :)
Еще в Oracle 11 есть компрессия таблиц/индексов, она тут тоже помогает.
Проблема с EAV уже озвучена - без готовых библиотек произойдет массивное изобретение велосипедов даже для простейших вещей, типа динамической фильтрации.
...
Рейтинг: 0 / 0
не бейте сильно :) (про меняющиеся структуры)
    #35655995
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопросик_ пишет:

> Почему категорически отвергаются другие варианты в пользу этого ?

Потому что других хороших вариантов я не знаю. Приложение
должно жить с ОДНОЙ структурой данных всю свою жизнь
(исключая доработки, разумеется). Т.е. изменение структуры -
это только административное действие при переходе на новую
версию.

Да к тому же есть очень веский резон против такого
подхода -- практически во всех СУБД размер кортежа
физически ограничен как по общей длине полей, так
и по кол-ву полей.

Не, ну можно конечно один раз произвести изменение структуры,
сохранить в документах где-то версию схемы и потом
обрабатывать параллельно двумя способами всё в зависимости
от версии. Но это можно сделать один-два раза, а не 100.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
не бейте сильно :) (про меняющиеся структуры)
    #35657282
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопросик_ Примерно такая ситуация: документ, структура его (то, что он включает в себя) раз в полгода-год немного меняется.
MasterZivНе, ну можно конечно один раз произвести изменение структуры,
сохранить в документах где-то версию схемы и потом
обрабатывать параллельно двумя способами всё в зависимости
от версии. Но это можно сделать один-два раза, а не 100.Расчитывать, что через 50-100 лет система будет такой же - ну, странновато, чтоли...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / не бейте сильно :) (про меняющиеся структуры)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]