|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2006, 10:15 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
Еще один подход. Программный комплекс БАС Обычная реляционная база данных. Пользователь добавляет какой либо атрибут или меняет его свойства из интерфейсной части, настраивая какую либо операцию или справочник. Он не знает структуру базы данных. Система следит за его работой. Если для размещения этого атрибута уже есть поле в соответствующей таблице базы данных, то ничего с базой не делается. Иначе система выполняет изменение структуры базы таким образом, что бы можно было разместить затронутый параметр. Например, в таблице операций есть поля "цена, количество, сумма", которые были созданы при настройке операции "Счет-фактура". Пользователь создает новую операцию "Накладная на отпуск", параметры которой хранятся в той же таблице. Пока он добавляет поля "Количество, цена, сумма" - ничего с базой данных не происходит. Но когда он решил добавить поле "Текущий остаток на складе", система уведомляет его о необходимости изменения структуры, которая выполняется нажатием кнопки, расположенной на той же панели настройки. Все изменения структуры проходят автоматически, "за кадром". Это можно делать даже в "горячем режиме", даже не останавливая работающих пользователей. При изменении структуры блокируется только та таблица, которая меняется. Правда, если таблица большая, то это занимает продолжительное время, и тогда всем приходится ждать завершения этого процесса. Но такие изменения интенсивно делаются обычно только на стадии внедрения, когда база данных еще не выросла. PS Имхо. Вообще, пользователям это не надо. Это очень удобно программистам при внедрении и сопровождении системы. . ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2006, 11:11 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
pnv82-=Под лежачего программера пиво не течёт=- With best regards, Nikolay Ponomarenko Но иногда из под него вытекает... Парадокс!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2006, 11:14 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
PVP Но когда он решил добавить поле "Текущий остаток на складе", система уведомляет его о необходимости изменения структуры, которая выполняется нажатием кнопки, расположенной на той же панели настройки. Все изменения структуры проходят автоматически, "за кадром". Это можно делать даже в "горячем режиме", даже не останавливая работающих пользователей. При изменении структуры блокируется только та таблица, которая меняется. Правда, если таблица большая, то это занимает продолжительное время, и тогда всем приходится ждать завершения этого процесса. Но такие изменения интенсивно делаются обычно только на стадии внедрения, когда база данных еще не выросла. Не, это как раз и есть третий подход - прямые ddl операции в БД :) Т.е. судя по всему, больших проблем такой подход при эксплуатации не вызывает? PVP PS Имхо. Вообще, пользователям это не надо. Это очень удобно программистам при внедрении и сопровождении системы. . Ну, не пользователям-юзерам, а тем кто занимается поддержкой системы у заказчика... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2006, 11:39 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
pnv82[quot PVP]Не, это как раз и есть третий подход - прямые ddl операции в БД :) Т.е. судя по всему, больших проблем такой подход при эксплуатации не вызывает?Вообще ни каких проблем. Работает с 2002 г на многих предприятиях. Одно удовольствие. Вы просто работаете с операциями, справочниками, отчетами, не заботясь об изменениях в базе данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2006, 12:26 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
pnv82 Использовал ли кто-нибудь последний подход? С какими сложностями столкнулся? Очень удобный и мощный способ. Система строится от метаданных и это вообще дает отличные результаты в других аспектах разработки. Вообще говоря 1C работает так (или только под MSSQL?) - под справочники создаются таблички с колонками, какими надо, какие в конфигураторе пропишешь. Какие минусы? Изменяется СРАЗУ ВСЯ таблица. А иногда в системе должны быть старые данные В ОДНОМ ФОРМАТЕ, и новые - В ДРУГОМ, С ДРУГИМИ ПОЛЯМИ. Тогда выгоднее модель хранения данных "по атрибутам". Но в итоге получится Lotus Domino какой-нибудь, индексы будут неэффективны, запросы - сложные и неестественные, многие фичи БД - недоступны, например, партиционирование исторических записей по времени. Работа с ddl (и dml вообще говоря) по-любому должна изолироваться в отдельный слой с четким интерфейсом. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2006, 13:07 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
pnv82 Другими словами пользователь должен иметь возможность добавить атрибуты документу, справочнику и т.п. а ввести новый справочник, документ ? а если новый атрибут не скаляр а таблица ? а если атрибут был скаляр а надо изменить на таблицу или наоборот? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2006, 13:10 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
проца ввести новый справочник, документ ?Без проблем. В справочник справочников добавляете новую запись, называете его, набираете состав параметров, определяете к нему доступ и можете использовать. проца если новый атрибут не скаляр а таблица ? а если атрибут был скаляр а надо изменить на таблицу или наоборот?А если изменилась операционная система, а если поменялась СУБД, ... Не надо расчитывать на абсолютно все случаи жизни. Достаточно только для той области, для которой предназначена система. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2006, 13:26 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
PVP Не надо расчитывать на абсолютно все случаи жизни. Достаточно только для той области, для которой предназначена система. это самое сложное. никогда не знаешь как расширится область, поэтому и надо закладывать max возможного (а приведенные примеры типичны) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2006, 14:26 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
процэто самое сложное. никогда не знаешь как расширится область, поэтому и надо закладывать max возможного Бесспорно. Только с одной маленькой поправочкой "в пределах возможного". Имеется в виду время и деньги. проц(а приведенные примеры типичны)Не ради рекламы. Только средствами настройки, не прикасаясь к структуре базы другими инструментами, одна и таже база данных прикладного модуля БАС и один и тот же bas.exe превращаются (с виду) в совершенно разные задачи - бугалтерия, склады, зарплата, работа с населением, CRM-Услуги, платежи населения, производсто и др., Это достаточно широкая область. Одолеть бы хотя бы ее. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2006, 14:48 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
проц PVP Не надо расчитывать на абсолютно все случаи жизни. Достаточно только для той области, для которой предназначена система. это самое сложное. никогда не знаешь как расширится область, поэтому и надо закладывать max возможного (а приведенные примеры типичны) ерунда - тогда ни одного проекта не было бы закончено ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2006, 14:52 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
Visitor ерунда - тогда ни одного проекта не было бы закончено законченый проект в ИТ - мертвый проект ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2006, 15:21 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
PVPТолько с одной маленькой поправочкой "в пределах возможного". Имеется в виду время и деньги. на инструменте не экономят :) PVP один и тот же bas.exe превращаются (с виду) в совершенно разные задачи - бугалтерия, склады, зарплата, работа с населением, CRM-Услуги, платежи населения, производсто и др., Это достаточно широкая область. это понятно, но изменения м.б. внутри одной задачи я это все к тому что подход с вертикальным хранением все-таки гибче чем модификация на лету стр-ры таблиц БД (хотя так тоже можно) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2006, 15:27 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
проц Visitor ерунда - тогда ни одного проекта не было бы закончено законченый проект в ИТ - мертвый проект ой, да перестаньте тут демагогию с понтами разводить... просто что такое "мертвый", в вашем понимании, если не просто цветистый вымороченный и ничуть не адекватный образ... зы главное чтобы живые деньги и вовремя... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2006, 15:34 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
Visitorглавное чтобы живые деньги и вовремя...А если на разработку потрачены деньги свои? Старался со всех сил, платил другим программистам несколько лет, а когда сделал то что хотел, оно уже морально устарело и никому не нужно. У меня так было с версией DOS. Или еще лучьше, деньги кончились и в долг уже не дают еще до того, как разработка закончена. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2006, 16:03 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
PVPа когда сделал то что хотел, оно уже морально устарело и никому не нужно. так о том и речь, собственно... зато сделал то, что хотел (а не то, что нужно ) off topeГ простой закон - цели системы всегда лежат за пределами системы, существование системы не является целью существования системы пытаться реализовать абсолютно универсальную и абсолютно оптимальную систему - тратить время и деньги с непредсказуемым резальтатом ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2006, 16:11 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
Visitorпытаться реализовать абсолютно универсальную и абсолютно оптимальную систему - тратить время и деньги с непредсказуемым резальтатомА что Вы вообще хотите сказать в своих постах ??? Что "фсепидорасы" ? Высказывайте свою точку зрения ПО СУЩЕСТВУ ! Как Вы предлагаете хранить новые отрибуты ? Как сделать систему более гибкой ? Как снизить сложность поддержки и модификации ? Какой у Вас есть конкретный пример удачного решения ? "Давайте спорить о вкусе устриц!... С теми, кто их ел !" "Давайте спорить о крахе и подъёме Голливуда, не видев ниодного фильма!" (с) Жванецкий ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2006, 10:42 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
проц pnv82 Другими словами пользователь должен иметь возможность добавить атрибуты документу, справочнику и т.п. а ввести новый справочник, документ ? а если новый атрибут не скаляр а таблица ? а если атрибут был скаляр а надо изменить на таблицу или наоборот? А в чем проблема? Создаться таблица и ее "метаописание", создаться новая версия структуры объекта и т.п. Особой разницы в этом для любого подхода я не вижу - основное это то, что ddl операции становятся "штатными" на рабочей системе, что меня и смущает... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2006, 15:02 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
pnv82основное это то, что ddl операции становятся "штатными" на рабочей системе, что меня и смущает... да, по безопасности это не очень то хорошо. Лично я стараюсь обходиться первыми двумя подходами Но если честно ... whatever works :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2006, 15:20 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
pnv82Особой разницы в этом для любого подхода я не вижу - основное это то, что ddl операции становятся "штатными" на рабочей системе, что меня и смущает... При 1 и 2 ddl операции не требуются, стр-ра БД не меняется ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2006, 16:27 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
Ну, ничто не мешает разрешить это делать только администратору системы. Впрочем, какой там будет "администратор" - можно только догадываться... :( Можете навскидку предложить - в каких ситуациях добавление табцицы/колонки может выйти боком? Ну, допустим, в нагруженной системе. Значит, оговариваем в документации, требуем монопольного доступа... Что еще? Что придумаем - тоже оговариваем в документации и условиях поддержки. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2006, 18:34 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
iamhereМожете навскидку предложить - в каких ситуациях добавление табцицы/колонки может выйти боком? 1. nonstop системы 2. кто будет строить индексы и задавать физические хар-ки 3. и самое главное - как старые программы будут работать с новой таблицей ? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2006, 09:28 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
Если это серьезная система, то думаю, не лишенным смысла предположением будет наличие у нее толкового администратора. В этой ситуации работу по добавлению НЕОБХОДИМЫХ индексов и указанию физ. параметров можно возложить на него. Можно рассмотреть разные способы, более или менее user-friendly, надо только правильно себе представлять задачу и все условия/ограничения, чтобы не сделать GUI там, где не нужно и SQL там, где нужен GUI ;) В каких-то системах вполне разумным был бы вариант, когда DBA сам создает таблички/колонки, а в проге задает метаданные для них - система начинает их "видеть". А в каких-то - ничего не случится и от пары десятков от балды заданных табличек без индексов или с индексами, созданными прогой по общим правилам (например, на FK). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2006, 15:50 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
)))))))) в MS Exchange и иже давным-давно есть добавление атрибутов в формы и их републикация без рестарта систем ! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2006, 16:26 |
|
Изменение метаданных конечным пользователем
|
|||
---|---|---|---|
#18+
проц iamhereМожете навскидку предложить - в каких ситуациях добавление табцицы/колонки может выйти боком? 1. nonstop системы А это скорее вопрос функциональности СУБД. На ФБ, в нашем случае, это решается. Кстати, интересно, а как с этим на других серверах? По скромному опыту использования Оракла - он это переваривает. 2. кто будет строить индексы и задавать физические хар-ки Тот же администратор системы. При необходимости с консультацией разработчиков. 3. и самое главное - как старые программы будут работать с новой таблицей Дык если все делается динамически и по "метаописанию" - в чем проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2006, 12:31 |
|
|
start [/forum/topic.php?fid=33&msg=33526175&tid=1549476]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
170ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 239ms |
total: | 517ms |
0 / 0 |