|
|
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
Petro123 на клиенте неинтересен твой SQL. Хм... С этим невозможно не согласиться... Но как это будет выглядеть практически? На каждый SELECT/INSERT/UPDATE и т.д. писать stored procedure? Наверное, это будет правильным. Трагедикомедия заключается в том, что эти stored procedures мне придется писать на Java (БД поддерживает ТОЛЬКО его). Кстати, клиент тоже на Java. Вот и получается, что находится на стороне сервера и клиента, суть одно и тоже (в плане разработки) Т.е. даже на стороне сервера буду иметь язык программирования и стринги SQL-я. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 15:40 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
kordaPetro123 на клиенте неинтересен твой SQL. Хм... С этим невозможно не согласиться... Но как это будет выглядеть практически? На каждый SELECT/INSERT/UPDATE и т.д. писать stored procedure? ===== почему на каждый? Всё изобретено до нас. Есть 2 подхода. Я за БЛ на сервере. И есть 2 подхода - я НЕ за CRUD в чистом виде (с закрытием доступа к таблицам), а за CRUD в сложных транзакционных бизнес-процедурах. Для справочников он не нужен. А для "ЗакрытиеОперДня" обязателен. Наверное, это будет правильным. Трагедикомедия заключается в том, что эти stored procedures мне придется писать на Java (БД поддерживает ТОЛЬКО его). ==== ну и отлично. У Сиквел 2005 тоже появился ЯП одинаковый с клиентом. Кстати, клиент тоже на Java. Вот и получается, что находится на стороне сервера и клиента, ===== хуже только административно (см.ниже) суть одно и тоже (в плане разработки) Т.е. даже на стороне сервера буду иметь язык программирования и стринги SQL-я. ==== с чего бы? Как зависит ЯП от CRUD? 2-ое, это методология, а первое? ЗЫ. Когда язык сервера и клиента разный, это на руку архитектору Системы в целом, т.к. архитектор БД не тянет одеяло у архитектора клиента. Кесарю-кесарево. У первого и мозги заточены на мышление множествами а не объектами . Поэтому второй не сможет строить оптимальные и сложные запрос как оптимизатор ИМХО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 15:53 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
авторТ.е. даже на стороне сервера буду иметь язык программирования и стринги SQL-я. ааа. счас дошло. Я не знаю какой там язык, но если он заточен под обработку множеств, курсоров, и прочей лабуды, то на здоровье. Кстати в оракле, если не динамический стринг, то синтаксическая проверка тоже есть. ЕСТЬ ТАМ всё, выбери только иструмент для твоей БД. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 15:56 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
Идея держать всю логику в stored procedures определённо нравится. Вобщем-то, это давно известная вещь. Просто, в последнее время, в поисках истины, просмотрел много всяких клент-сервер приложений различной направленности, и все они держали SQL-строки на стороне клиента, это как-то сбило меня с пути истинного. Но практическая проблема при этом никуда не девается. Даже находясь на сервере работать со сложными запросами не удобно, по причине отсутствия логической связи между SQL и языком программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 15:57 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
korda Но практическая проблема при этом никуда не девается. Даже находясь на сервере работать со сложными запросами не удобно, по причине отсутствия логической связи между SQL и языком программирования. бренность бытия. Его несовершенство :) Я в одно время очень искал ООБД, пок ане понял что ОНО не совершенно )) ЗЫ. Твои вопросы возникают у тех кто пишет на ЯП, который движется в сторону ООП. У реляционщиков он не возникает. Удачи! ЗЫ.ЗЫ. Если нужны справочник, то - напиши ХП_ДайСправочник(имя) : курсор - на клиенте одну форму для всех справочников или выпадающий список для всех справочников (и писать не надо) вот где имена полей по русски - да - проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 16:05 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
kordaИдея держать всю логику в stored procedures определённо нравится.Заставь дурака богу молиться... Вот ситуация - есть у нас ХП (или хранимая функция), которая возвращает ВСЕ организации. Теперь приложению надо отфильтровать этот результат - выбрать только организации, которые находятся в Москве. Как вы думаете - сколько шансов у сервера БД оптимизировать этот запрос, нежели просто сделать FULL SCAN по ВСЕМ данным? Код: plaintext 1. 2. Чтобы сервер БД мог использовать индексы и прочие свои прелести для оптимизации запроса, то мы можем передавать параметр "Москва" ВНУТРЬ ХП. Код: plaintext 1. Но тогда встает другая проблема - нам в ХП придется описывать в качестве входных параметров фиг знает сколько переменных, чтобы уметь по ним фильтровать. И это все, вместо того, чтобы в программе динамически сформировать запрос вида: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 16:50 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
Bely Чтобы сервер БД мог использовать индексы и прочие свои прелести для оптимизации запроса, то мы можем передавать параметр "Москва" ВНУТРЬ ХП. Код: plaintext 1. Но тогда встает другая проблема - нам в ХП придется описывать в качестве входных параметров фиг знает сколько переменных, чтобы уметь по ним фильтровать. И это все, вместо того, чтобы в программе динамически сформировать запрос вида: Код: plaintext 1. 2. 3. 4. 1. Да, придется передавать кучу параметров. А что, чтобы динамически построить SELECT на клиенте, в процедуру-построитель эти параметры передавать не нужно?! А если учесть, что и сервер и клиент у меня пишутся на одном и том-же языке, то процедура вообще получается одна и та же. 2. Если ВСЯ бизнес-логика будет крутиться на сервере, то мы имеем сервер в виде законченного продукта , к нему можно делать различные клиенты, не знающие внутреннюю логику и структуру сервера(не зачем им это знать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 17:37 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
korda1. Да, придется передавать кучу параметров. А что, чтобы динамически построить SELECT на клиенте, в процедуру-построитель эти параметры передавать не нужно?! А если учесть, что и сервер и клиент у меня пишутся на одном и том-же языке, то процедура вообще получается одна и та же.На клиенте эта куча параметров у вас есть в виде контролов в форме поиска из которых строится строка WHERE. Причем, строиться может как угодня хитро, вплоть до переписывания тела SQL запроса. korda2. Если ВСЯ бизнес-логика будет крутиться на сервере, то мы имеем сервер в виде законченного продукта , к нему можно делать различные клиенты, не знающие внутреннюю логику и структуру сервера(не зачем им это знать).Ну-ну... безумству храбрых поем мы песню. А знать названия хранимых процедур, которые вызывать приложение не должно? И чем это будет отличаться от знания структуры таблиц в БД? Заменили синее на коричневое и радуемся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 17:41 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
Belykorda [quot korda]2. Если ВСЯ бизнес-логика будет крутиться на сервере, то мы имеем сервер в виде законченного продукта , к нему можно делать различные клиенты, не знающие внутреннюю логику и структуру сервера(не зачем им это знать).Ну-ну... безумству храбрых поем мы песню. А знать названия хранимых процедур, которые вызывать приложение не должно? И чем это будет отличаться от знания структуры таблиц в БД? Заменили синее на коричневое и радуемся... Знать названия и параметры хранимых процедур и знать структуру БД - это не одно и тоже. Первое - внешний интерфейс к БД, второе - внутренняя структура БД. Завтра, у меня вместо одной таблицы будет две. Изменю сервер. При этом клиент ничего знать об этом не будет(и не должен), все изменения будут скрыты внутри хранимой процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 18:06 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
kordaЗнать названия и параметры хранимых процедур и знать структуру БД - это не одно и тоже. Первое - внешний интерфейс к БД, второе - внутренняя структура БД. Завтра, у меня вместо одной таблицы будет две. Изменю сервер. При этом клиент ничего знать об этом не будет(и не должен), все изменения будут скрыты внутри хранимой процедуры.в 90% случаях при этом будут меняться и ХП, а значит, всеравно, придется переделывать и клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 18:21 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
kordaИдея держать всю логику в stored procedures определённо нравится. Вобщем-то, это давно известная вещь. Просто, в последнее время, в поисках истины, просмотрел много всяких клент-сервер приложений различной направленности, и все они держали SQL-строки на стороне клиента, это как-то сбило меня с пути истинного. Но практическая проблема при этом никуда не девается. Даже находясь на сервере работать со сложными запросами не удобно, по причине отсутствия логической связи между SQL и языком программирования. SQL строки на клиенте таки придется "держать". Те же фильтры, например. Можно, конечно, передавать параметры в хранимую процедуру, но, мне кажется, строить выражение для выборки на клиенте проще. Больше доступных данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 18:53 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
korda Знать названия и параметры хранимых процедур и знать структуру БД - это не одно и тоже. Первое - внешний интерфейс к БД, второе - внутренняя структура БД. Завтра, у меня вместо одной таблицы будет две. Изменю сервер. При этом клиент ничего знать об этом не будет(и не должен), все изменения будут скрыты внутри хранимой процедуры. Блин. Еще один любитель изменять БД, "незаметно для клиента". Да клиент меняется многократно чаще и, большей частью, именно во взаимодействии с БД. И, например, добавление полей в фильтр - достаточно частое изменение. Если формировать запрос на клиенте, то, как раз, наоборот, на сервере ничего менять не придется. А если использовать ХП с параметрами, то наоборот - довольно много. Причем надо будет помнить еще и обо всех остальных парнях, которые используют эту процедуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 19:00 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
Bely И это все, вместо того, чтобы в программе динамически сформировать запрос вида: Код: plaintext 1. 2. 3. 4. Опять опеределили. Да чтож такое.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 19:03 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
Николай1Опять опеределили. Да чтож такое....Пока ваш конь 1-2-3-4 мы тут 1-2,1-2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 19:13 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
BelyНиколай1Опять опеределили. Да чтож такое....Пока ваш конь 1-2-3-4 мы тут 1-2,1-2 Ну, ничего, мы себя в !@#$ покажем! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 21:21 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
imho условие where в ХП - чересчур. Так можно и order by пихать на основании, что это структура БД. ЗЫ. Был у меня проект с кучей where на клиенте Код: plaintext 1. 2. 3. 4. при рефакторинге (надо было ещё одно сложное условие) просто добаил ХПGetAddWhere(id) и дописал на клиенте Код: plaintext 1. Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 22:00 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
Николай1[quot korda] Знать названия и параметры хранимых процедур и знать структуру БД - это не одно и тоже. Первое - внешний интерфейс к БД, второе - внутренняя структура БД. Завтра, у меня вместо одной таблицы будет две. Изменю сервер. При этом клиент ничего знать об этом не будет(и не должен), все изменения будут скрыты внутри хранимой процедуры. Николай1Блин. Еще один любитель изменять БД, "незаметно для клиента". А с какой стати я должен менять клиента(а их может быть несколько (терминал, GUI, мобильник и т.п)), если я могу не менять его и, следовательно, не обновлять ПО на клиентских машинах. Зачем явное приемущество Вы выставляете в качестве недостатка? Ищите реальные недостатки(я же не утверждаю, что их нет), а не надуманные. Николай1Если формировать запрос на клиенте, то, как раз, наоборот, на сервере ничего менять не придется. А если имеется внутренняя бизнес-логика сервера, в клиенте её держать? Клиент может быть написан третьей стороной, для которой знание бизнес-логики сервера может быть вообще запрещено исходя из требований секретности. Вот при всем уважении, Николай, Ваши сегодняшние утверждения, выглядят как попытка просто противоречить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 23:21 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
Николай1Bely И это все, вместо того, чтобы в программе динамически сформировать запрос вида: Код: plaintext 1. 2. 3. 4. Опять опеределили. Да чтож такое.... Чему Вы радуетесь? :-) Bely предлагает динамически формировать запрос вытаскивая данные прямо из UI. По-моему, г-н Bely не учел две вещи: 1. Когда в динамическом запросе присутствуют controlы GUI, то возникает пролема с batch-тестами. 2. После dispose в некоторых системах GUI данные становятся недоступными. А ведь иногда нужно закрыть диалог(т.е. dispose all controls), а уж потом запустить запрос на выполнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 23:32 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
kordaПо-моему, г-н Bely не учел две вещи: 1. Когда в динамическом запросе присутствуют controlы GUI, то возникает пролема с batch-тестами. 2. После dispose в некоторых системах GUI данные становятся недоступными. А ведь иногда нужно закрыть диалог(т.е. dispose all controls), а уж потом запустить запрос на выполнение.откройте для себя шаблон Model-View-Controller, при его использовании эти вопросы теряют почти всю свою актуальность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 00:03 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
egorychkordaПо-моему, г-н Bely не учел две вещи: 1. Когда в динамическом запросе присутствуют controlы GUI, то возникает пролема с batch-тестами. 2. После dispose в некоторых системах GUI данные становятся недоступными. А ведь иногда нужно закрыть диалог(т.е. dispose all controls), а уж потом запустить запрос на выполнение.откройте для себя шаблон Model-View-Controller, при его использовании эти вопросы теряют почти всю свою актуальность Вот, интересно было бы увидеть, не таблицу и не дерево, а какой-нибудь диалог с input-полями, построенный по этому принципу. Правда, то что так мало кто делает совсем не означает, что это плохо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 01:10 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
К слову, я тут нарыл одну интересную статью Тенцер А. База данных – хранилище объектов // КомпьютерПресс. 2001. № 8. Судя по году издания и огромному количеству высказываний по ней, даже в рамках этого форума, многие с ней знакомы, но для начинающих, возможно окажется полезной. Как эта статья связана с Темой? На основе предлагаемого в ней метода можно построить ряд универсальных таблиц, запросы к которым, в свою очередь тоже будут универсальны. В подходе Тенцера етсь ряд недостатков, о которых пишет он и его критики. Я пока еще не вник глубоко и не могу оценить для себя возможность следовать данной концепции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 01:27 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
kordaНиколай1korda Знать названия и параметры хранимых процедур и знать структуру БД - это не одно и тоже. Первое - внешний интерфейс к БД, второе - внутренняя структура БД. Завтра, у меня вместо одной таблицы будет две. Изменю сервер. При этом клиент ничего знать об этом не будет(и не должен), все изменения будут скрыты внутри хранимой процедуры. Николай1Блин. Еще один любитель изменять БД, "незаметно для клиента". А с какой стати я должен менять клиента(а их может быть несколько (терминал, GUI, мобильник и т.п)), если я могу не менять его и, следовательно, не обновлять ПО на клиентских машинах. Зачем явное приемущество Вы выставляете в качестве недостатка? Ищите реальные недостатки(я же не утверждаю, что их нет), а не надуманные. Это и есть реальный недостаток. Если сделать ХП с 20 параметрами (по количеству контролов, например), то это гораздо жестче привяжет базу к клиенту, чем передача запроса в виде одного параметра. kordaНиколай1Если формировать запрос на клиенте, то, как раз, наоборот, на сервере ничего менять не придется. А если имеется внутренняя бизнес-логика сервера, в клиенте её держать? Клиент может быть написан третьей стороной, для которой знание бизнес-логики сервера может быть вообще запрещено исходя из требований секретности. Нет никаких проблем поправить запрос, сформированный на клиенте, внутри ХП. Так что все в порядке, клиент занимается своей работой, сервер - своей. Никто же не утверждал, что запрос от клиента надо передавать серверу "напрямую". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 08:59 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
давайте не будем про тенцера, eav, ообд, xmldb и т.д Есть в мире много чего интересного, но это OFFTOP Удачи! ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 09:21 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
kordaКак эта статья связана с Темой? На основе предлагаемого в ней метода можно построить ряд универсальных таблиц, запросы к которым, в свою очередь тоже будут универсальны. .... Я пока еще не вник глубоко и не могу оценить для себя возможность следовать данной концепции.Мда... начали с построителя запросов, закончили EAV. Вы бы сперва вникли в эту структуру, а потом подумали как бы вы из нее доставали бы данные для пользователя, которые ему понадобятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 10:46 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35598684&tid=1543584]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
174ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 459ms |

| 0 / 0 |
