Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
AlTkкак обычно, на 3-й странице начинаем обсуждать совсем другую тему. pkarklin, откуда Вы знаете, что надо, а что не надо. я еще раз повторяю, нужен отчет именно по первичным данным. в БД отчеты не хранятся. они хранятся в виде файлов с расширением rpt. ПС. как находясь за 1000 километров Вы по двум сообщениям определили, что хуже, а что лучше для нашей системы? Позвольте, позвольте. Не вы ли, в предыдущем своем ПС намекали что я ушел от ответа на вопрос про отчет? Я еще раз вам потворяю что все отчеты строяться по первичным данным. И вы же завели разговор про отчет, который "долго выполнятеся и делается по регламенту". Именно для таких отчетов и создают DataWarehouse, а не хранят их в виде кучи отдельных файлов. А вы говорите, что я "обсуждаю совсем другую тему". Не хорошо, однако. А на счет того, откуда я знаю что надо - что не надо. Я говорил об общем подходе к разделению транзакционных и аналитических систем именно в контексте поставленного вами вопроса о регламентированном и сложном отчете. И я нигде не говорил о ВАШЕЙ системе, хотя свое IMHO о ней я все-таки высказал. И, если мое IMHO про болезнь роста задело ваше самолюбие, то значит так оно и есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2004, 14:52 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
я уже объяснял, что мне дешевле построить отчет, который строится один! раз в месяц, опечатывается и кладется в сейф, чем городить ради этого OLAP хранилище. кстати файлов получается совсем не куча, а всего-навсего 12 за год. да, я признаю, что Вы меня задели, но задели тем, что Вы, наблюдая частный случай, позволяете себе делать выводы о всей системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2004, 15:03 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
авторя уже объяснял, что мне дешевле построить отчет, который строится один! раз в месяц, опечатывается и кладется в сейф, чем городить ради этого OLAP хранилище. А вот когда у вас будет большая такая куча (несколько сотен) отчетов, котрые надо строить с периодичность от 12 часов до квартала, то вы поймете, что для каждого отчета городить объект на сервере приложения, это маразм. И вы сядите и измениете свой подход, создав Datawarehouse. Прошу извинения, если мои слова действительно вас задели, но это не со злого умысла, просто я через все это проходил сам. И не хочу, чтоб на эти же грабли другие наступали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2004, 15:08 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
"И вы сядите и измениете свой подход" не факт. я еще раз повторю, отчет надо строить по первичным данным (правило такое). ПС. а OLAP хранилище у нас вообще-то есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2004, 15:16 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
Трех уровневая архитектура и ее использование. Рассмотрим небольшой пример. Предприятие занимается добычей, транспортировкой и переработкой нефти. Головная кантора находится в городе “Н”, подразделения разбросаны по области и не только. В головной канторе СУБД и сервер приложений. На сервере приложений размещена вся бизнес логика, клиент тонкий, либо аплет, либо клиентское приложение размещенное на сервере приложений, на выбор, хоть так, хоть этак. Отчетность JSP. Приложение написано в соответствии со спецификацией J2EE, J2SE, СУБД используется только как хранилище данных. Для ввода его в работу достаточно иметь Web сервер, EJB контейнер, контейнер сервлетов и любую СУБД поддерживающую спецификацию SQL-92. ПО размещенное на сервере приложений имеет интерфейс не только работы с пользователем но с аналогичным по структуре ПО размещенным на других серверах приложений. Имеем структуру состоящую из нескольких серверов приложений связанных между собой и обслуживающих своих пользователей. Связанных по мере необходимости, возможно это разовые сеансы связи для синхронизации данных или объединение в единую систему, работающую в режиме реального времени. Учетные функции системы не ограничиваются только финансовым, бухгалтерским учетом, крутятся тоже на апп., но под другим “крылом”. В подразделениях управление оборудованием, технологическим процессом, автоматизировано, программное обеспечение разработано и сопровождается поставщиками оборудования. В разных подразделениях оборудование от разных поставщиков. ПО формирует свои базы данных производственных показателей на низком уровне, показания контрольно измерительных приборов и т.д. Отчетность в стандартном ПО скупая, достаточна для технологического процесса управления, но для анализа работы непригодна. СУБД разношерстны, возможность “залезть” в их и разместить там бизнес логику формирования отчетности есть, но делать этого не нужно. Так как технологические операции одинаковые, информационная сущность их показателей имеет одинаковую структуру. Бизнес логику формируем и размещаем на сервере (серверах) приложений, данные берем из СУБД технологов и только на чтение, на выходе единая по структуре информационная сущность. Для клиента безразлично какая физическая структура исходных данных, он работает с ее представлением сформированным на сервере (серверах) приложений. ОТЧЕНТОСТЬ ФОРМИРУЕТСЯ ТОЛЬКО НА ОСНОВАНИИ ДАННЫХ СЕРВЕРОВ ПРИЛОЖЕНИЙ. При соединении серверов приложений инженеры технологи в режиме реального времени могут легко контролировать(именно контролировать, управление только с рабочих мест в подразделении) ход технологических процессов любых подразделений, и неважно где расположено оборудование, и где находятся инженеры. Объединение того, что само по себе не объединится. Тем более что одним из условий объединения является изоляция одного от другого. Размещение логики, логики которую нельзя (или нет смысла) размещать на одной из сторон. О том что на сторону сервера БД (серверов БД) логику не разместить, это уже объяснил. Теперь попробую передать ее на сторону клиента. Приняли, к примеру, специалиста по управленческой отчетности, умница, в уме считает в трех валютах, к тому же на трех языках программирования все что посчитал интерпретирует. А мы ему что? Нет парень, подожди. Вот тебе число “пи”, вот диаметры труб, площадь круга и показания датчиков с подразделений... Вот и я думаю, что нафиг ему это нужно. Т.е. логике прямая дорога на сервер приложений. “СЕТЬ ЭТО КОМПЪЮТЕР” (С) Sun Microsystems P.S. По аптечному складу немного другая ситуация. Вот отойду немного, оклемаюсь. А то сильно пострадал, очень сильно, чуть было не потерял веру в человечество. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 06:33 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
Я в командировке. Строчу из отеля... Извините за сумбур, спешу... _рубльПО размещенное на сервере приложений имеет интерфейс не только работы с пользователем но с аналогичным по структуре ПО размещенным на других серверах приложений. MS SQL Server 2000 имеет интерфейс не только для работы с пользователем, но и с аналогичным MS SQL Server 2000 по структуре БД. "Репликация" называется. Что самое интересное, в отличие от сервера приложений, MS SQL Server 2000 нет необходимости писать. Он уже написан, и написан неплохо. _рубльДля клиента безразлично какая физическая структура исходных данных, он работает с ее представлением сформированным на сервере (серверах) приложений. ОТЧЕНТОСТЬ ФОРМИРУЕТСЯ ТОЛЬКО НА ОСНОВАНИИ ДАННЫХ СЕРВЕРОВ ПРИЛОЖЕНИЙ Для клиента безразлично, в файле с каким расширением и в каком именно формате находятся данные. Он работает с представлениями (View), сформированными на SQL-сервере (серверах) всегда с SQL-запросами. Отчетность формируется ТОЛЬКО НА ОСНОВАНИИ ДАННЫХ SQL-серверов (а не какого-то двоичного файла). _рубльПри соединении серверов приложений инженеры технологи в режиме реального времени могут легко контролировать(именно контролировать, управление только с рабочих мест в подразделении) ход технологических процессов любых подразделений, и неважно где расположено оборудование, и где находятся инженеры При соединении SQL-серверов инженеры технологи в режиме реального времени могут легко контролировать(именно контролировать, управление только с рабочих мест в подразделении) ход технологических процессов любых подразделений, и неважно где расположено оборудование, и где находятся инженеры. _рубльОбъединение того, что само по себе не объединится. Тем более что одним из условий объединения является изоляция одного от другого. Размещение логики, логики которую нельзя (или нет смысла) размещать на одной из сторон. Репликация объединяет то, что само по себе не объединяется. Разместив логику на одном из SQL-серверов, можно из этой логики управлять данными других SQL-серверов. ЗЫ. А что ты будешь делать с 20-ю серверами приложений, когда выяснится, что одновременно на всех в одинаковом русле нужно исправить код? Примерно то же самое, что на 20-ти SQL-серверах, верно? Только в репликации можно еще задействовать репликацию хранимых процедур, и писать для этого заумного кода не треба... Получается, вроде как, проще... _рубльО том что на сторону сервера БД (серверов БД) логику не разместить, это уже объяснил. А я не понял. Где объяснил? А про число "пи" вообще нифига не понял. _рубльОтчетность в стандартном ПО скупая, достаточна для технологического процесса управления, но для анализа работы непригодна. СУБД разношерстны, возможность “залезть” в их и разместить там бизнес логику формирования отчетности есть, но делать этого не нужно. Если СУБД разношерстны, и базы данных разношерстны, то это, конечно же, проблема. Достаточно серьезная. И тогда действительно без сервера приложений - никак. Правда, трудно догадаться, кто и зачем создал себе такие проблемы. Примерно с таким же успехом он мог натворить для себя разношерстных серверов приложений, которые между собой связать еще труднее, чем разношерстные СУБД. Разношерстные СУБД хоть в какой-то мере поддерживают ANSI-92, а вот разношерстные сервера приложений - это уже неизлечимо... 2 _рубль. Не обижайся, это я так шучу... :) Безо всякой злобы м ехидства, по-дружески. Не надо терять веру в человечество. Нужно всего лишь напрячь лобную мышцу и привести какие-то более существенные аргументы, нежели те, в которых словосочетание "сервер приложений" с легкостью заменяется на словосочетание "SQL-сервер" практически без искажения смысла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 16:21 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
MS SQL Server 2000 бог, а VB пророк его на земле ... Ну теперь все довольны? Считайте что я так искренне думаю. У меня вопрос к аудитории: Если тема называется "3-tier своими руками", то здесь нужно обсуждать ...? Правильно, все что угодно, только не "3-tier". Сам спросил и сам ответил. >> словосочетание "сервер приложений" с легкостью заменяется на словосочетание "SQL-сервер" практически без искажения смысла Можно заменить на словосочетания - pascal, asm, C/C++ и т.д. Кто на что лудше умеет "напрячь лобную мышцу". Или его можно сравнивать с чем угодно, можно со всем что знаешь. Или с первым, что придет в голову. авторА что ты будешь делать с 20-ю серверами приложений, когда выяснится, что одновременно на всех в одинаковом русле нужно исправить код? просто нужно, что бы архив с кодом, в нужное время оказался в определенном каталоге на апп. сервере, даже не на апп. сервере физически, а так что бы он его видел. Разве это сложно? авторПравда, трудно догадаться, кто и зачем создал себе такие проблемы. Примерно с таким же успехом он мог натворить для себя разношерстных серверов приложений, которые между собой связать еще труднее, чем разношерстные СУБД. Разношерстные СУБД хоть в какой-то мере поддерживают ANSI-92, а вот разношерстные сервера приложений - это уже неизлечимо... Оборудование для разных технологических операций производят разные организации. Не я, все это строил, перестраивал, модернезировал, продовал, скупал и т.д. И наличие СУБД поддерживающее ANSI-92, это еще хорошо, но есть и просто лог файлы. А вот сервера приложений наши и они полность под контролем. авторПри соединении SQL-серверов инженеры технологи в режиме реального времени могут легко контролировать(именно контролировать, управление только с рабочих мест в подразделении) ход технологических процессов любых подразделений, и неважно где расположено оборудование, и где находятся инженеры. Пощадите меня, не надо, прошу вас. Ведь если что то делаеш, то с намерением в дальнейшем это улудшить и расширить, а не загонять работу в тупик. Упровлять то же с использованием SQL-серверов? Если время придет. Ведь это вполне реально. И что тогда делать с всей этой софтиной замешанной на SQL-серверах и только? Репликация это не панацея. У Oracle есть и другие способы объединения и слияния. Мало того, можно запихать логику описанную на PL,java,pro c. Но если бы я хотель обсудить это, угодайте куда нужно пойти? Люди! Можете себе представить, хотя бы гипотетически, что мне нужен выделенный "движок" с кодом, не замешанный на данных, в смысле хранения и обработке, т.е. БД оnдельно, а код отдель по ресурсам и по смыслу. И мне не нужен "MS SQL Server 2000", прастите за богохульство. И у меня есть желание обсудить, то как лудше это сделать, а не на что его заменить. Я умер. Все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2004, 07:18 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
Убиваясь в предсмертных судорогах, ляпну еще на прощание ... Народ ... ! Операционная система, это по сути и есть сервер приложений! Вапрос, только в том где, на каком ее уровне оно, приложение размещено. На уровне ядра, модулей (работа с производственными контроллерами) и т.д. Прошу, умоляю, не предлагать заменить ее на "MS SQL Server 2000", я в горобу от этого перевернусь. Аминь! Счастья вам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2004, 08:37 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
авторДля клиента безразлично, в файле с каким расширением и в каком именно формате находятся данные. Он работает с представлениями (View), сформированными на SQL-сервере (серверах) всегда с SQL-запросами. Отчетность формируется ТОЛЬКО НА ОСНОВАНИИ ДАННЫХ SQL-серверов (а не какого-то двоичного файла). На небесах меня научили многому и быстро. Теперь я умею делать так - Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2004, 09:06 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
Призрак рубля авторДля клиента безразлично, в файле с каким расширением и в каком именно формате находятся данные. Он работает с представлениями (View), сформированными на SQL-сервере (серверах) всегда с SQL-запросами. Отчетность формируется ТОЛЬКО НА ОСНОВАНИИ ДАННЫХ SQL-серверов (а не какого-то двоичного файла). На небесах меня научили многому и быстро. Теперь я умею делать так - Код: plaintext Ая яй яй - чего то плохо Вас на небесах учили или Вы сами плохо учитесь. Вообще то вот так вот: Код: plaintext P.S. А вообще то не очень понятно все то, что Вы выше написали, особенно Ваши стенания по поводу MSSQL и VB. Разве Вас кто то заставлял на них переходить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2004, 10:02 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
ASCRUSили хотите сказать, Вам там прямо так и дали доступ по овнеру :) В своей бодсети :) ASCRUS... MSSQL и VB. Разве Вас кто то заставлял на них переходить ?Нет, не заставляют, на этом в преисподнии "ваяют". Греха много :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2004, 10:31 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
Введука я еще раз народ во искушение ... В 2000 году делали задачу, расчет ЗП на MS SQL, всю логику расчета описали на TR-SQL. Через годик от скуки, отчасти для пробы, часть расчетов свояли используя EJB+MySQL и по Linux запустили. Задача на EJB+MySQL крутилась быстрее, обработка транзакций тоже работала нормально, немно "потресли". Вполне возможно, что не такие уж мы были специ в MS SQL. Запросто, не спорю. Дело в другом. Если сравнить гибкость задачи, усилий затрачиваемых на ее модернизацию на java с TR-SQL. Как земля и небо. Может от туда пошли, эти остаточные явления, но всю логику описывать на стороне сервера нехочется дол сих пор. Хотя у Oracle, пожалуйста java, бери да юзай. А все равно нехочется. Наверное превычки и предрассудки. Ну и ладно, никто не совершенен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2004, 12:50 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
Призрак рубляВведука я еще раз народ во искушение ... В 2000 году делали задачу, расчет ЗП на MS SQL, всю логику расчета описали на TR-SQL. Через годик от скуки, отчасти для пробы, часть расчетов свояли используя EJB+MySQL и по Linux запустили. Задача на EJB+MySQL крутилась быстрее, обработка транзакций тоже работала нормально, немно "потресли". Вполне возможно, что не такие уж мы были специ в MS SQL. Запросто, не спорю. Дело в другом. Если сравнить гибкость задачи, усилий затрачиваемых на ее модернизацию на java с TR-SQL. Как земля и небо. Может от туда пошли, эти остаточные явления, но всю логику описывать на стороне сервера нехочется дол сих пор. Хотя у Oracle, пожалуйста java, бери да юзай. А все равно нехочется. Наверное превычки и предрассудки. Ну и ладно, никто не совершенен. И что же на Java можно гибче сделать, чем на SQL даже в той же зарплате ? Прямо интересно стало мне. Очень примитивно, как у меня зп считается: 1. Строится список сотрудников, кого считать (тех, кого затребовали и кто еще не рассчитан), по ходу блокируя их для предотвращения проведения по ним параллейного расчета другими сессиями или изменения по ним входящей информации (благо централизованно все это в одно место сходится) 2. Строится список расчетных месяцев (если есть сторно, то естественно там не только текущий расчетный). 3. Производится предварительное кэширование некоторых входящих и справочных данных в глобальные времянки с целью более удобной формы доступа к этим данным. 3. Организуется курсор от самого дальнего месяца 4. Организуется курсор по обьектам начислений, который автоматом вытаскивает обьекты, их свойства и ХП в упорядоченном виде (ориентируясь по dependence обьектов) 5. Запускается ХП, внутри которой алгоритм расчета начисления, состоящий примерно из такого запроса: авторINSERT INTO АрхивНачислений SELECT Тариф * ОтработанноеВремя // или чего там надо FROM ...ВходящиеИРасчетныеДанныеПоСотрудникам... WHERE Сотрудник IN (Буфер кого считать для рассчитываемого месяца);для более сложных алгоритмов естественно может быть и еще парочка запросов для предварительных расчетов, но финишный будет именно приведенный мною. 6. Цепляем следующее начисление и ее ХП, переходим на пункт 4 7. Прогоняем аналогичные пунктам 4,5,6 для подоходнего и ЕСН (сторнируются же они). 8. Как все месяца просчитаны в том же духе на текущий месяц считаем удержания и сумму на руки. 9. Устанавливаем флаги готовности на посчитанных сотрудников и снимаем с них установленные блокировки. Вуаля - алгоритм расчета зп такой, что ему как то до фени, сколько и кого считать - одного, тысячу, сто тысяч сотрудников - вот сколько есть начислений, удержаний и налогов, столько примерно запросов и будет выполнено. А нука теперь расстолкуйте мне, как это Вы все на Java быстрее сделали - уж не по каждому ли сотруднику все считали то, уж не алгоритмически то ? :) Или может у Вас на TSQL малость процедура расчета зп на код VBA смахивала, типа получаем сотрудника, все по нему конкретно тащим, считаем, ветвимся, потом пишем и так далее ... Ню ню - давайте будем колоться, что делал, как убивал MSSQL, почему на Java переходил :) P.S. И вот я что Вам скажу про ХП мои расчетные - они абсолютно автономны и легко сопровождаются - на вход подается информация, в буферах (времянках) лежит информация, на выходе они в архив пишут, больше ничего не знают, ничего не ведают. Думаете если в ТК порядок расчета больничного с 1 января 2005 года изменится, мне долго будет ХП новую на основе старой по больничному создать и в табличке указать, что с 01.01.2005 будет она использоваться в расчетах ? И кстати если уж придется в январе 2005 сторнировать человеку пару прошлых месяцев, как Вы думаете, будут ли у меня сложности рассчитать ему больничный по старому алгоритму, действительному на тот момент времени, или это будет похоже на что то типа: авторSELECT Proc_Name INTO @Proc_Name FROM CalcObject_History WHERE @CalcDate BETWEEN SaveDate AND SaveCloseDate; EXECUTE IMMEDIATE 'CALL ' || @Proc_Name || ' ();'; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2004, 13:58 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
И кстати чет я вообще сомневаюсь, что Вы на "TR-SQL" много работали. Я лично больше с TSQL привык на MSSQL общаться по причине его там присутствия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2004, 13:59 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
ASCRUSА нука теперь расстолкуйте мне, как это Вы все на Java быстрее сделали - уж не по каждому ли сотруднику все считали то, уж не алгоритмически то ? :) Или может у Вас на TSQL малость процедура расчета зп на код VBA смахивала, типа получаем сотрудника, все по нему конкретно тащим, считаем, ветвимся, потом пишем и так далее ... Ню ню - давайте будем колоться, что делал, как убивал MSSQL, почему на Java переходил :) Примерно также, в результате один курсор и расчет пробежкой по ему. По ходу формируя накапительные значения по группам расчетов, Для расчета типа "процент от суммы". А разницу понимаеш когда попробуеш. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2004, 14:23 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
<вырезано модератором> Вот ведь, сделают чего люди или увидят чего, такое кривое-кривое - и все, значит по-другому, по правильному, делать уже невозможно, технология дрянь, софт дрянь...... Еееееэээээээхххххххх....... -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2004, 15:05 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
TSQL, конечно, не самый лучший язык программирования. В нем нет даже цикла FOR. В нем нет возможности создать пользовательский класс и в принципе нет возможности реализовать принципы ООП. Тогда, когда бизнес-логика сложна, когда эта бизнес-логика плохо ложится на реляционную модель, когда для ее реализации начинаются всерьез ощущаться ограничения TSQL, тогда - и тут я согласен - может возникнуть соблазн сотворить собственный сервер приложений. И у меня он тоже возникал. Но я вовремя себя одернул. Такие "пустяки", как взаимодействие данных при большом количестве одновременно открытых сессий, их непротиворечивость, проблемы грязного чтения и блокировок, проблемы пропускной способности (чтобы сервер приложений не стал узким местом)... Нужно самому организовать пулы очередей. Нужно самому отслеживать непротиворечивость информации, которая буферизирована на уровне сервера приложений, нужно быть готовым к тому, что информация в переменных, в пулах и очередях сервера приложений уже не соответствует той информации, которая находится в СУБД (потому что кто-то ее мог изменить в другой сессии, через другой сервер приложений или вообще напрямую с помощью SQL-запроса), может не соответствовать тому, что пользователь видит на экране. В одной сессии могут выполняться действия, которые противоречат действиям, запущенным в другой сессии, сервер приложений может оперировать неактуальными данными и -... получить отлуп от СУБД . Или НЕ получить отлуп, а получить кашу вместо достоверных данных. В том случае, если сервер приложений на своем собственном уровне игнорирует такие понятия как "уровни изоляции", "транзакции", "блокировки", "логическая целостность (DRI, в частности)". Обработать на сервере приложений все возможные совокупности ошибок, которые могут возникать по подобным причинам, очень и очень не просто. Еще сложнее избежать их появления. Точнее, можно избежать их появления, если сессии допускать к данным СУБД только по очереди, а не одновременно. Но тогда упадет пропускная способность. А чтобы она не падала, необходимо предусмотреть параллельную обработку данных, практически вынеся на уровень сервера приложений ту работу, которой обычно занимается SQL-сервер. То есть, реальная трудоемкость написания такого приложения, оказывается соизмерима с трудоемкостью написания самого ядра СУБД (например, MS SQL Server). Если же все функции, необоходимой для многосессионной параллельной обработки данных НЕ переносятся на сервер приложений, то разработчику сервера приложений так или иначе приходится затрачивать усилия, продумывая все комбинации всех возможных фаз параллельных действий пользователей, экстраполируя их через собственную бизнес-логику (которая на сервере приложений) и тщательно продумывая - а не возникнут ли дедлоки, например, на уровне СУБД. И получается, что никакого существенного выигрыша в плане трудоемкости разработки от сервера приложений нет. Не удастся в достаточной степени абстрагироваться от тех вопросов, с которыми обычно приходится работать на уровне TSQL, работая над разработкой приложений в мидлтаер. Вопрос обработки ошибок тоже может добавить головной боли. Всем известно, что в любом более-менее сложном ПО наверняка содержатся какие-то ошибки. В приложении, работающем по технологии "клиент-сервер" сообщение выводится прямо на экран пользователя. Сообщения СУБД тоже могут выводиться на экран пользователя. Если клиентское приложение в плане обработки ошибок СУБД плохо спроектировано, ошибки можно отследить на самом SQL-сервере. При использовании сервера приложений как можно быть уверенным, что вообще вся информация об ошибках попадет во-время и по адресу? Одни мои знакомые зафигачили вывод сообщений об ошибке в системный журнал приложений. В их приложении возникла циклическая ошибка, которая вызвала переполнение журнала приложений. А в это время юзер продолжал работать, ни сном, ни духом не ведая о происходящем. Допустим, о факте возникновения ошибки мы уже знаем, даже не смотря на то, что на экран пользователя информация о ней не выводится. На SQL-сервере можно запустить хранимые процедуры или триггеры в режиме отладки, пошагово, посмотреть, что поступает на сервер, как он на эту информацию реагирует. С сервером приложений процесс отладки может существенно усложниться. Особенно, если отладка выполняется на "живом", запущенном в работу приложении (например, когда выявилась какая-то ошибка в процессе текущей работы). Особенно, если ошибка возникает только при большом количестве параллельных сессий и именно на уровне СУБД. При этом нужно каким-то образом сопоставить конкретные действия конкретного пользователя с реакцией на эти действия сервера приложений (отфильтровав эту реакцию в куче реакций на все остальные действия во всех остальных сессиях), и затем на следующем уровне искать телодвижения на уровне СУБД, которые соответствуют только некоторой части отфильтрованных действий сервера приложений, запуская некоторые фильтры уже на уровне СУБД. Но как вы будете производить эту многоуровневую фильтрацию? Я знаю программистов, которые вот таким образом намучилившись с отладкой мидлтаер и уже десяток раз прокляли тот день, когда им в голову стукнуло делать сервер приложений. Еще раз, чтобы не возникло недопонимания. Я не против сервера приложений. Но не считаю, что "3-tier своими руками" нужно делать в большинстве случаев. Только в некоторых, исключительных случаях, заранее тщательно продумав, предварительно взвесив все "за" и "против", осознав и заведомо согласившись на те проблемы, которые при этом возникнут. Потому что, плюсы трехзвенки совершенно точно перевесили ее минусы. И не забывая о том, что многие поставщики СУБД развивают свои продукты и вводят непосредственно в них все более развитые возможности, в частности, в MS SQL Server 2005 уже можно будет на уровне сервера вкусить прелести ООП, а в Oracle они давно есть. Но почему-то как-то редко и мало используются. Кстати, почему? Не потому ли, что быстродействие и пропускная способность как правило проигрывают при переходе на более высокие уровни абстрагирования? Игнорировать же вопросы быстродействия, логической целостности, пропускной сопсобности и т.п. на сегодня врядли удастся... ИМХО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 11:44 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
Garyaв Oracle они давно есть. Но почему-то как-то редко и мало используются. Кстати, почему?Ресурсы машин имеют свое конечное значение, физические ресурсы. Какая основная, стратегическая задача серверов СУБД (Систем Управления Баз Данных)? Все таки УПРАВЛЕНИЕ. Но есть и задачи по работе с данными, именно работе. Допустим, эконометрика, иследование операций. Размешая всю логику на сервере БД мы загружаем его не совсем характерной для его работой и тем самым отвлекаем от прямых обязанностей. Все мы люди, и те кто писал сервера и те кто пишет под их. Что будет если упадет сервер приложений расчитывающий задачу по оптимизации маршрутов поставки на основании полученных заказов? Ничего страшного, задачу можно запустить заново. А что будет если упадет при этом и сервер БД? Тем более задачи на апп. серверах можно физически разнести по своей значимости и влиянию на управление данными. J2EE и EJB это не конкуренция серверам баз данных, это движение на разделение ресурсов прикладных задач по обработке и работе с данными. Возьмем тот же Oracle, есть СУБД и есть сервер приложений с поддержкой сессий транзакций, а блокировки это работа сервера БД. Структура серверов приложений на основании J2EE, построена на основании контейнеров под управлением которых и работают приложения. Писать сложные задачи с "чистого листа" не всегда есть смысл. Приложение можно разработать под определенный "движок". Там и обработка ошибок, сессии, транзакции, многое то что есть в СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 12:53 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
Ранее упомянул по поводу аптечного склада. А именно по системе обработке электронных заказов. Чаше всего сейчас заказы "оформляются" средствами предоставленными поставщиком. Клиентская программа получающая данные и на основании их пользователь формирует заказ. Единственная кализия может быть в том, что при получении заказа товара не будет в наличии. Но допустим мы переходим к определенному формату заказа, формируемого сторонним ПО. Возможны лексические несовпадения. У нас "Аспирин упса N10", а пришол заказ на "Аспирин упс. №10". Нужно проводить лексическое распознование. Есть необходимость проведения расчетов по аптимизации маршрутов поставок и анализа - кому в первую очередь. Далее сбор информации от поставщиков, лексическое сопоставление данных, расчет стоимости с учетом транспортно-заготовительных расчетов, оптимизация маршрутов поставок, определение потребности. Нельзя забыть и про саму передачу и получение данных. Сколько из данной работы имеет отношение к УПРАВЛЕНИЮ данными, то чем призваны заниматься сервера БД и сколько связано с их предварительной обработкой, работой с данными? И если эта логика, по сути своей, различна. Где ее разместить? Если вы расчитываете на коммерческую рентабельность, то навряд ли захотите привязываться к конкретной СУБД. Но опять же. Можно ли все это зделать используя только СУБД Oracle? Да можно. А можно и использовать сервер приложений. P.S. Поехал в командировку, модератору будет меньше работы. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 13:46 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
_рубльИ если эта логика, по сути своей, различна. Где ее разместить?Конкретно в рассматриваемом случае лично я бы разместил ее на сервере BizTalk. Он как раз очень хорошо приспособлен для решения подобных задач. В некотором смысле это мидлтаер. В некотором смысле он даже лучше, чем традиционный сервер приложений. Потому что позволяет автоматизировать многие операции по преобразованию плохо стыкующихся форматов данных поставщика и клиента. А также позволяет реализовать на его стороне ту часть логики, которая не реализована внутри взаимодействующих приложений через этот центр их интеграции. Наконец, поставщик может предоставить портал в виде WEB-служб. А мы у себя можем осуществить стандартные процедуры установки соответствий данных нашего справочника и справочника поставщика. В конце концов, разработаны (и продолжают разрабатываться) стандарты E-Commerce, для обмена B2B и B2C. Правда, я не слышал о том, чтобы в этих стандартах шла речь о СОДЕРЖИМОМ справочников. Все больше об их структуре (например, оговаривается XML-схема по составу полей для обмена информацией о контрагентах). ИМХО, эти стандарты еще очень и очень сырые (например, они не учитывают, что предприятие может сменить название, оставшись прежним предприятием, к которому должны оставаться привязанными все прежние связанные с ним движения ресурсов). Но время идет, и светлые мысли все чаще посущают наши светлые головы... :) Во всяком случае, во всех тех случаях, когда нам на практике предлагали использовать многоуровневое приложение, находя для этого достаточно веские основания, мы выходили из ситуации с помощью MS BizTalk Server, с помощью которого все задачи решались быстро и изящно. Самое главное - это минимум ручной работы. МИ-НИ-МУМ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 16:34 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
Спасибо за советы и конструктивную критику. Что касается противопоставления 3-tier - SQL, то SQL сервера 3-tier отменить никак не может. 3-tier необходим в основном для выполнения несвойственных SQL серверу операций (например последовательной обработки данных от записи к записи, обращение к системным или сетевым функциям, выполнение сторонних запросов к другим компонентам). В двухуровневой архитектуре некоторые действия приходится выполнять на стороне клиента, что во первых небезопасно, а во вторых увеличивают трафик. Как дополнение к примерам сатьи по адресу http://www.bizonline.ru/Exe/Example.zip расположена небольшая свободная программа складского учета. В ближайшем будущем мы выложим все исходные коды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 16:54 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
Я вот что-то не пойму: т.е. если вдруг появляется какой-то минимум действий, ктоторый на SQL сервере делать ... тяжело, вместо того, чтобы делать это внешней утилитой или на клиенте, люди готовы перекорежить все приложение, перевести всю систему на апп-сервер только из-за какой-то малости!!! Но смысл!!! Смысл то где??? Ну если человек ездит иногда - пару раз в год - в лес, на природу, вы предлагаете ему купить LandRover или Nissan Terrano и все остальное время ездить только на нем??? Ну как так? А не проще ли купить себе легковую машину, обычную, для города, и УАЗик или БРДМ :) или трактор :)) для своих пары раз в год??? Ну епрст!!! Ну неужели людям больше делать нечего? Или времени девать некуда? Ну тогда бы занялись изучением - глядишь, и двухзвенки бы получились путевые. Ну когда никак больше - ну тогда понятно, тогда и я делал клиент-вебсервис-бд. Но когда просто так..... -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 18:22 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
>> Смысл то где??? А иначе кина не будет, картинки. Приятно красиво и долго рассказывать про серьезные вещи для настоящих пацанов, например, "130 слинкованных таблиц на Байконуре" или "утечку памяти в NT-сервисах при перекачках данных через сервер" и т.п. Послушаешь - красиво, слов нет, глобально, с размахом. Потом подумаешь "Ну и что?" и вернешься к своим делам, потому что инфы-то полезной для себя никакой не получаешь. А разговоры про 3-tier и BizTalk более актуальны были лет несколько назад, когда эти концепты созревали. С чем согласен, это с тем, что вендоры ПО быстрее разрулят многие проблемы, чем это у девелопера в голове срастется как конфликты конкурирующих процессов развести при большой нагрузке и т.п. Тогда имеет смысл рекомендации вендора читать, а не на текстовой барахолке толкаться мессагами. /* IMHO */ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 20:12 |
|
||
|
3-tier своими руками
|
|||
|---|---|---|---|
|
#18+
tygraНу если человек ездит иногда - пару раз в год - в лес, на природу, вы предлагаете ему купить LandRover или Nissan Terrano и все остальное время ездить только на нем??? Ну как так? А не проще ли купить себе легковую машину, обычную, для города, и УАЗик или БРДМ :) или трактор :)) для своих пары раз в год??? Ну епрст!!! где-то я такие аргументы (танк против мотоцикла) уже видел :) наверное в топике про файлмейкер в "Сравнении СУБД" схожесть аргументации заставила меня призадуматься... а может это мы тут все такие, с высоты поросячьего полета не видим всего величия и глубины мысли про 3-ий слой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 11:49 |
|
||
|
|

start [/forum/topic.php?fid=29&msg=32740058&tid=1528669]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
85ms |
get tp. blocked users: |
2ms |
| others: | 219ms |
| total: | 385ms |

| 0 / 0 |
