powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Изменение метаданных конечным пользователем
26 сообщений из 26, показаны все 2 страниц
Изменение метаданных конечным пользователем
    #33515104
pnv82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, All!

Другими словами пользователь должен иметь возможность
добавить атрибуты документу, справочнику и т.п.

Встречал три варианта решения:
1. "объектная" БД - аля Тенцер, Котляревский, Коваленко и т.д.
http://www.ibase.ru/devinfo/oop_rdbms.htm
2. хранение пользховательских атрибутов не реляционно, к
примеру в блоб поле в xml
http://ibase.ru/devinfo/xmldb.htm
3. стандартное хранение.
Например One table per class в
http://ibase.ru/devinfo/mappingObjects.pdf
И как следствие выполнение ddl операций конечным пользователем.

Так, вот, упоминание первых двух подходов встречал достаточно
часто, а третий - очень редко, хотя у него довольно много преимуществ.
Кстати вот недавно встретил мнение Тома Кайта по этому вопросу :)
http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:10678084117056

Использовал ли кто-нибудь последний подход?
С какими сложностями столкнулся?
Какую СУБД использовал(все же работа с ddl в каждой имеет свои особенности)?

--
-=Под лежачего программера пиво не течёт=-
With best regards, Nikolay Ponomarenko

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33515318
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один подход. Программный комплекс БАС

Обычная реляционная база данных. Пользователь добавляет какой либо атрибут или меняет его свойства из интерфейсной части, настраивая какую либо операцию или справочник. Он не знает структуру базы данных. Система следит за его работой. Если для размещения этого атрибута уже есть поле в соответствующей таблице базы данных, то ничего с базой не делается. Иначе система выполняет изменение структуры базы таким образом, что бы можно было разместить затронутый параметр.

Например, в таблице операций есть поля "цена, количество, сумма", которые были созданы при настройке операции "Счет-фактура". Пользователь создает новую операцию "Накладная на отпуск", параметры которой хранятся в той же таблице. Пока он добавляет поля "Количество, цена, сумма" - ничего с базой данных не происходит. Но когда он решил добавить поле "Текущий остаток на складе", система уведомляет его о необходимости изменения структуры, которая выполняется нажатием кнопки, расположенной на той же панели настройки. Все изменения структуры проходят автоматически, "за кадром".

Это можно делать даже в "горячем режиме", даже не останавливая работающих пользователей. При изменении структуры блокируется только та таблица, которая меняется. Правда, если таблица большая, то это занимает продолжительное время, и тогда всем приходится ждать завершения этого процесса. Но такие изменения интенсивно делаются обычно только на стадии внедрения, когда база данных еще не выросла.

PS Имхо. Вообще, пользователям это не надо. Это очень удобно программистам при внедрении и сопровождении системы. .
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33515331
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pnv82-=Под лежачего программера пиво не течёт=-
With best regards, Nikolay Ponomarenko Но иногда из под него вытекает... Парадокс!!!
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33515436
pnv82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVP
Но когда он решил добавить поле "Текущий остаток на складе", система уведомляет его о необходимости изменения структуры, которая выполняется нажатием кнопки, расположенной на той же панели настройки. Все изменения структуры проходят автоматически, "за кадром".

Это можно делать даже в "горячем режиме", даже не останавливая работающих пользователей. При изменении структуры блокируется только та таблица, которая меняется. Правда, если таблица большая, то это занимает продолжительное время, и тогда всем приходится ждать завершения этого процесса. Но такие изменения интенсивно делаются обычно только на стадии внедрения, когда база данных еще не выросла.


Не, это как раз и есть третий подход - прямые ddl операции в БД :)
Т.е. судя по всему, больших проблем такой подход при эксплуатации не вызывает?

PVP
PS Имхо. Вообще, пользователям это не надо. Это очень удобно программистам при внедрении и сопровождении системы. .

Ну, не пользователям-юзерам, а тем кто занимается поддержкой системы у заказчика...
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33515596
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pnv82[quot PVP]Не, это как раз и есть третий подход - прямые ddl операции в БД :)
Т.е. судя по всему, больших проблем такой подход при эксплуатации не вызывает?Вообще ни каких проблем. Работает с 2002 г на многих предприятиях. Одно удовольствие. Вы просто работаете с операциями, справочниками, отчетами, не заботясь об изменениях в базе данных.
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33515750
iamhere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pnv82
Использовал ли кто-нибудь последний подход?
С какими сложностями столкнулся?


Очень удобный и мощный способ. Система строится от метаданных и это вообще дает отличные результаты в других аспектах разработки.

Вообще говоря 1C работает так (или только под MSSQL?) - под справочники создаются таблички с колонками, какими надо, какие в конфигураторе пропишешь.

Какие минусы? Изменяется СРАЗУ ВСЯ таблица. А иногда в системе должны быть старые данные В ОДНОМ ФОРМАТЕ, и новые - В ДРУГОМ, С ДРУГИМИ ПОЛЯМИ. Тогда выгоднее модель хранения данных "по атрибутам". Но в итоге получится Lotus Domino какой-нибудь, индексы будут неэффективны, запросы - сложные и неестественные, многие фичи БД - недоступны, например, партиционирование исторических записей по времени.

Работа с ddl (и dml вообще говоря) по-любому должна изолироваться в отдельный слой с четким интерфейсом.
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33515768
проц
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pnv82
Другими словами пользователь должен иметь возможность
добавить атрибуты документу, справочнику и т.п.

а ввести новый справочник, документ ?
а если новый атрибут не скаляр а таблица ?
а если атрибут был скаляр а надо изменить на таблицу или наоборот?
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33515847
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проца ввести новый справочник, документ ?Без проблем. В справочник справочников добавляете новую запись, называете его, набираете состав параметров, определяете к нему доступ и можете использовать.

проца если новый атрибут не скаляр а таблица ?
а если атрибут был скаляр а надо изменить на таблицу или наоборот?А если изменилась операционная система, а если поменялась СУБД, ... Не надо расчитывать на абсолютно все случаи жизни. Достаточно только для той области, для которой предназначена система.
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33516150
проц
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PVP Не надо расчитывать на абсолютно все случаи жизни. Достаточно только для той области, для которой предназначена система.
это самое сложное. никогда не знаешь как расширится область, поэтому и надо закладывать max возможного (а приведенные примеры типичны)
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33516243
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
процэто самое сложное. никогда не знаешь как расширится область, поэтому и надо закладывать max возможного Бесспорно. Только с одной маленькой поправочкой "в пределах возможного". Имеется в виду время и деньги.
проц(а приведенные примеры типичны)Не ради рекламы. Только средствами настройки, не прикасаясь к структуре базы другими инструментами, одна и таже база данных прикладного модуля БАС и один и тот же bas.exe превращаются (с виду) в совершенно разные задачи - бугалтерия, склады, зарплата, работа с населением, CRM-Услуги, платежи населения, производсто и др., Это достаточно широкая область. Одолеть бы хотя бы ее.
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33516261
Фотография Visitor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проц PVP Не надо расчитывать на абсолютно все случаи жизни. Достаточно только для той области, для которой предназначена система.
это самое сложное. никогда не знаешь как расширится область, поэтому и надо закладывать max возможного (а приведенные примеры типичны)

ерунда - тогда ни одного проекта не было бы закончено
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33516396
проц
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Visitor
ерунда - тогда ни одного проекта не было бы закончено
законченый проект в ИТ - мертвый проект
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33516433
проц
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PVPТолько с одной маленькой поправочкой "в пределах возможного". Имеется в виду время и деньги.
на инструменте не экономят :)
PVP один и тот же bas.exe превращаются (с виду) в совершенно разные задачи - бугалтерия, склады, зарплата, работа с населением, CRM-Услуги, платежи населения, производсто и др., Это достаточно широкая область.
это понятно, но изменения м.б. внутри одной задачи
я это все к тому что подход с вертикальным хранением все-таки гибче чем модификация на лету стр-ры таблиц БД (хотя так тоже можно)
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33516465
Фотография Visitor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проц Visitor
ерунда - тогда ни одного проекта не было бы закончено
законченый проект в ИТ - мертвый проект

ой, да перестаньте тут демагогию с понтами разводить...

просто что такое "мертвый", в вашем понимании, если не просто цветистый вымороченный и ничуть не адекватный образ...



зы

главное чтобы живые деньги и вовремя...
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33516590
Фотография PVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Visitorглавное чтобы живые деньги и вовремя...А если на разработку потрачены деньги свои? Старался со всех сил, платил другим программистам несколько лет, а когда сделал то что хотел, оно уже морально устарело и никому не нужно. У меня так было с версией DOS. Или еще лучьше, деньги кончились и в долг уже не дают еще до того, как разработка закончена.
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33516623
Фотография Visitor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVPа когда сделал то что хотел, оно уже морально устарело и никому не нужно.

так о том и речь, собственно...

зато сделал то, что хотел (а не то, что нужно )

off topeГ

простой закон - цели системы всегда лежат за пределами системы,
существование системы не является целью существования системы

пытаться реализовать абсолютно универсальную и абсолютно оптимальную систему - тратить время и деньги с непредсказуемым резальтатом
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33518175
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Visitorпытаться реализовать абсолютно универсальную и абсолютно оптимальную систему - тратить время и деньги с непредсказуемым резальтатомА что Вы вообще хотите сказать в своих постах ???
Что "фсепидорасы" ? Высказывайте свою точку зрения ПО СУЩЕСТВУ !
Как Вы предлагаете хранить новые отрибуты ?
Как сделать систему более гибкой ?
Как снизить сложность поддержки и модификации ?
Какой у Вас есть конкретный пример удачного решения ?

"Давайте спорить о вкусе устриц!... С теми, кто их ел !"
"Давайте спорить о крахе и подъёме Голливуда, не видев ниодного фильма!" (с) Жванецкий
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33526106
pnv82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проц pnv82
Другими словами пользователь должен иметь возможность
добавить атрибуты документу, справочнику и т.п.

а ввести новый справочник, документ ?
а если новый атрибут не скаляр а таблица ?
а если атрибут был скаляр а надо изменить на таблицу или наоборот?

А в чем проблема? Создаться таблица и ее "метаописание", создаться новая версия структуры объекта и т.п. Особой разницы в этом для любого подхода я не вижу - основное это то, что ddl операции становятся "штатными" на рабочей системе, что меня и смущает...
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33526175
Один1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pnv82основное это то, что ddl операции становятся "штатными" на рабочей системе, что меня и смущает... да, по безопасности это не очень то хорошо.

Лично я стараюсь обходиться первыми двумя подходами

Но если честно ... whatever works :)
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33526413
проц
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pnv82Особой разницы в этом для любого подхода я не вижу - основное это то, что ddl операции становятся "штатными" на рабочей системе, что меня и смущает...
При 1 и 2 ddl операции не требуются, стр-ра БД не меняется
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33526803
iamhere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, ничто не мешает разрешить это делать только администратору системы.
Впрочем, какой там будет "администратор" - можно только догадываться... :(

Можете навскидку предложить - в каких ситуациях добавление табцицы/колонки может выйти боком? Ну, допустим, в нагруженной системе. Значит, оговариваем в документации, требуем монопольного доступа... Что еще? Что придумаем - тоже оговариваем в документации и условиях поддержки.
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33527531
проц
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iamhereМожете навскидку предложить - в каких ситуациях добавление табцицы/колонки может выйти боком?

1. nonstop системы
2. кто будет строить индексы и задавать физические хар-ки
3. и самое главное - как старые программы будут работать с новой таблицей ?
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33529071
iamhere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это серьезная система, то думаю, не лишенным смысла предположением будет наличие у нее толкового администратора.
В этой ситуации работу по добавлению НЕОБХОДИМЫХ индексов и указанию физ. параметров можно возложить на него.
Можно рассмотреть разные способы, более или менее user-friendly, надо только правильно себе представлять задачу и все условия/ограничения, чтобы не сделать GUI там, где не нужно и SQL там, где нужен GUI ;)

В каких-то системах вполне разумным был бы вариант, когда DBA сам создает таблички/колонки, а в проге задает метаданные для них - система начинает их "видеть".

А в каких-то - ничего не случится и от пары десятков от балды заданных табличек без индексов или с индексами, созданными прогой по общим правилам (например, на FK).
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33529188
Фотография Гликоген
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
))))))))

в MS Exchange и иже давным-давно есть добавление атрибутов в формы и их републикация без рестарта систем !
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33533783
pnv82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проц iamhereМожете навскидку предложить - в каких ситуациях добавление табцицы/колонки может выйти боком?




1. nonstop системы

А это скорее вопрос функциональности СУБД. На ФБ, в нашем случае, это решается.
Кстати, интересно, а как с этим на других серверах? По скромному опыту использования Оракла - он это переваривает.


2. кто будет строить индексы и задавать физические хар-ки


Тот же администратор системы. При необходимости с консультацией разработчиков.


3. и самое главное - как старые программы будут работать с новой таблицей

Дык если все делается динамически и по "метаописанию" - в чем проблема?
...
Рейтинг: 0 / 0
Изменение метаданных конечным пользователем
    #33533953
iamhere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПо скромному опыту использования Оракла - он это переваривает.
У Оракла в общем-то даже есть специальные средства для этого - DBMS_REDEFINITION.
Правда, не юзал, как оно в реальности на нагруженной системе работает.
Без этого изменение большой нагруженной таблицы (например, добавление not null колонки) и вправду может быть нелегким делом.
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Изменение метаданных конечным пользователем
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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