запросы при меняющейся структуре

вопросик_
Дата: 13.11.2008 12:56:12
Допустим, есть определенные документы у которых со временем структура "плывет" -
для документа создается новая таблица (или если меняется незначительно - новая subtable с частью изменившихся атрибутов).

Что лучше в этом случае -
1) хранить запросы в базе, с клиента считывать нужную версию
2) отрабатывать такую ситуацию через хранимую процедуру (возвращая ref cursor)
alecsey
Дата: 13.11.2008 13:02:10
по поводу варианта 1) думал что такое бывает только на Daily WTF =)
andrey_anonymous
Дата: 13.11.2008 13:06:01
Не стоит строить метамодели.
Поддержка новых структур документов на клиенте вряд ли ограничится выборкой новых атрибутов - скорее всего, документы меняются вместе с бизнес-логикой, которую надо как-то отражать и на клиенте.

Наилучший способ - все-таки классический: патч структуры сопровождается патчем бизнес-логики и клиентского ПО.
вопросик_
Дата: 13.11.2008 13:22:54
andrey_anonymous
Не стоит строить метамодели.

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

А почему не стоит, если, например, достаточно много запросов вида - найти документы по таким-то несложным критериям и показать содержимое ?
И чем плох вариант с хранимой процедурой ?
Bely
Дата: 13.11.2008 13:34:05
вопросик_
И чем плох вариант с хранимой процедурой ?
Плох тем, что при необходимости отфильтровать результат - может наступить ситуация "Прощай память".
Или "хотел бы использовать индекс, да не могу пропихнуть условие в ХП"

Если у вас Oracle, сам бог велел SQL запросы использовать для получения данных.
Bely
Дата: 13.11.2008 13:36:21
andrey_anonymous
Не стоит строить метамодели.
У него несколько иной случай, похоже.
вот еще его пост
без какой-либо метамодели обойтись будет трудно.
вопросик_
Дата: 13.11.2008 13:54:35
Bely
вопросик_
И чем плох вариант с хранимой процедурой ?
Плох тем, что при необходимости отфильтровать результат - может наступить ситуация "Прощай память".
Или "хотел бы использовать индекс, да не могу пропихнуть условие в ХП"

Немного не понял вас(про использовать индекс). Допустим, есть пачка запросов, которые хранятся в базе. Один из них выбирается клиентом для выполнения (скажем, по дате "актуальности").
Почему бы их (один в один) не прописать эти запросы в хранимой процедуре ?
Из-за увеличивающегося размера пакета ?
andrey_anonymous
Дата: 13.11.2008 13:56:03
вопросик_
Из-за увеличивающегося размера пакета ?

Из-за неадекватных затрат на последующее сопровождения такой системы.
expla
Дата: 13.11.2008 14:03:43
Если нет жёстких требований к производительности системы, то возможность создавать новые запросы (хотя бы задавать особые предикаты) по мере необходимости весьма желательна. В противном случае пользователь не всегда будет получать то что ему нужно и потом лопатить результат вручную.
вопросик_
Дата: 13.11.2008 14:05:47
andrey_anonymous
вопросик_
Из-за увеличивающегося размера пакета ?

Из-за неадекватных затрат на последующее сопровождения такой системы.

А почему отвергаете вариант хранения самих запросов ? Это же дает дополнительную гибкость против "чистого" изменения клиентской части ?