|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
предпологаю что у Вас " лоскутная автоматизация ", которая требует не набора разных БД-кусков, а (возможно) одной центральной БД или одной одной БД с приаттаченными БД. А также главного архитектора - спеца по корпоративной БД. Перенеся бизнес-логику на среднее звено вы ещё больше раскидаете свои бизнес-правила по "кучкам". Об этом и говорилось на ссылке выше. Отчёты для доступа группам 1 и 2 можно хранить в самой БД а не на среднем звене. IMHO Почему общие корпоративные данные разнесены по разным БД логически и физически? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2006, 17:10 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
Ro-manНадеюсь, что не запутал ещё сильнее :)Запутали :) Вы очень подробно описали ситуацию, но не написали чего же вы хотите достичь. 1 Написать отчетную систему, главное требование к которой - легкое подключение новых отчетов ? 2 Создать полноценный сервер приложений, оставив при этом ваши многочисленные БД как они есть ? Опять таки - что вы планируете размещать в этом СП 3 Полностью перепроектировать всю вашу систему, с целью добиться ... чего ? Ro-manP.S. Для публикации данных в Inet предварительно выбран FastReport Server (выборка будет ТОЛЬКО из "БД3"). Если есть лучшие решения (в том же ценовом диапазоне) - предлагайте, не стесняйтесь! :) FastReport Server хорошее решение. В сравнении с CR - более простое и дешевое. CR очень уж монструозен ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2006, 17:30 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
Ro-manКонкретики действительно маловато... Вас, iscrafm , как специалиста уже освоившего подобные ИС я и хотел спросить, какие ОСНОВНЫЕ (я не знаю, как по-другому сформулировать - ГЛОБАЛЬНЫЕ, что-ли, т.е. те, с которыми столкнётся ЛЮБОЙ разработчик типового СП) Ro-man, возможно я и перегнул немного, т.к. смотрел с позиций полноценного СП. До сих пор непонятно, Вы наполнение БД тоже удаленно делать будете или эта работа выполнятся локально в каждом узле? Если будет ввод удаленный, то протестируйте на боевых объемах и реальных каналах DataSnap хорошенько. По крайней мере мы писали свой транспорт по этой причине. Если хотите без пересборок, то следует задуматься о проектировании системы хранения и управлением контентом. Не будете же жестко в dll зашивать вызовы? Если удаленно только отчеты, то имхо FR Server-а хватит с головой, более приемлемого варианта за 500$ не видно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2006, 17:57 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
"Ro-man" <nospam@sql.ru> wrote in message news:3072371@sql.ru... Hi! > Конкретики действительно маловато... Вас, iscrafm, как специалиста уже > освоившего подобные ИС я и хотел спросить, какие ОСНОВНЫЕ (я не > знаю, как по-другому сформулировать - ГЛОБАЛЬНЫЕ, что-ли, т.е. те, > с которыми столкнётся ЛЮБОЙ разработчик типового СП) проблемы > встречаются при создании СП /по пунктам, если можно ;)/ и основные > проверенные пути их разрешения... если, конечно, не жаль времени > (или опыта :) ) чтобы делиться опытом. Поделиться можно. Вопрос в том, чтобы не начинать с азов. Если человек задает вопрос: "Зачем нужна трехзвенка?", - то это означает, что трехзвенка ему не нужна, поскольку он не понимает, принципиальных проблем и ограничений двухзвенки. Мне известны случаи, когда люди покупали мощные сервера за мегабабки, а потом выясняли, что производительность не увеличилась, а сервер работает вхолостую, обогревая атмосферу. Если такой человек берется за создание трехзвенки, то непременно построит ее по той архитектуре, что и двухзвенку, получив только минусы и ни одного плюса. ____________________________ С уважением, Лисеев Дмитрий. http://private.peterlink.ru/dimik/ PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73 Posted via ActualForum NNTP Server 1.3 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2006, 17:58 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
Dmitry V. Liseev +1 /topic/189688&pg=1&hl=%ee%f2%f7%e5%f2%fb ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2006, 18:00 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
"Petro123" <nospam@sql.ru> wrote in message news:3073137@sql.ru... Hi! > +1 > /topic/ > 189688&pg=1&hl=%ee%f2%f7%e5%f2%fb Это я все читал. Просто автор темы сказал: "Вот я поставил 3 сервера СУБД и теперь мне нужна трехзвенка". При этом он не объяснил, зачем он поставил 3 а не 1. У нас используется CACHE, которая изначально создана, как трехзвенка. Сервер данных обычно один, серверов приложений много, обычно по одному на каждую сотню юзеров. Проблем с отчетами в dll и их компилляцией не возникает. У нас отчеты выполняются по миллионам документов и нет ни одного, который работал бы дольше пары секунд. С учетом того, что на каждую запись каждой таблицы ведутся списки контроля доступа и в отчет попадают только те данные, к которым у юзера есть доступ на чтение, в зависимости от того, в какие группы он входит и от статуса записи. Потому я не знаю, с каими проблемами должен столкнуться разработчик "типового СП". ____________________________ С уважением, Лисеев Дмитрий. http://private.peterlink.ru/dimik/ PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73 Posted via ActualForum NNTP Server 1.3 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2006, 20:46 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
И снова обо всём по-порядку: Petro123Отчёты для доступа группам 1 и 2 можно хранить в самой БД а не на среднем звене. IMHO Почему общие корпоративные данные разнесены по разным БД логически и физически? "Отчёты для..." - по этому поводу могу сказать только что похожую идею мне уже давали для размышления, так что для отчётов, похоже, будет использована именно она (к сожалению, не помню автора, но если удастся её реализовать, обязательно найду :) ) - её смысл в том, чтобы хранить все шаблоны отчётов в BLOB-полях БД без использования dll. Генератор отчётов, кстати, ОДНОЗНАЧНО будет FastReport. "...данные разнесены по разным БД..." - очень жаль, что Вы не прочитали внимательно мой вопрос (см. самое начало), а именно: Ro-manГруппы типа "1", "2" и "3" разнесены территориально на достаточно большие расстояния . Здесь, конечно, и моя вина - не объяснил ещё одну тонкость :) Группы типа "1" и "2" работают, мягко говоря, через очень хреновое соединение. Для группы типа "2" ОЧЕНЬ ВАЖНО иметь возможность работы с БД (предположительно локальной, т.е. "БД2") ДАЖЕ при невозможности подключения к "БД1" (возможность может, очень редко, но потенциально МОЖЕТ отсутствовать час, 3часа, сутки, 5суток или даже более...). Также, группа типа "2" должна иметь возможность выполнять отчёты ТОЛЬКО по своим подразделениям (читай по своей БД, т.к. опять же, мягко говоря, остальные группы типа "2" её не чешут :)) ) и УЖ ТОЧНО НЕ ЧЕРЕЗ МОДЕМ со скоростью 14400bps Если есть толковые (читать КОНСТРУКТИВНЫЕ) идеи на этой стадии - прошу в студию! У меня пока одна идея > БД(тип "1") + БД(тип "2") - вот Вам уже 2 типа РАЗНЫХ БД, хотя по своей структуре они ОЧЕНЬ будут схожи. Далее, после восстановления соединения с БД все изменения (скорее всего будет вестись лог или врЕменные таблицы), произведённые за это время в "БД2" ДОЛЖНЫ БЫТЬ переданы в "БД1". Равно как и новые записи в таблицах-справочниках "БД1" ДОЛЖНЫ БЫТЬ переданы в "БД2" вместе с ещё некоторыми данными из "БД1". И на кого, позвольте поинтересоваться, взвалить эти "обязанности"? :) На сервер БД (Firebird, кстати)? "Тонкого" клиента в группе типа "2"? Кому из них, самому "тонкому"? Или всем сразу? А может настрогать кучу "шняги" в виде утилит и т.п., которые всем этим будут заниматься, так а разве это не будет 3-м звеном??? - Это всё относится и к Вашему посту http://www.sql.ru/forum/actualpost.aspx?bid=58&tid=330477&mid=3072738&p=-1&act=quot#3073137 Я мог бы добавить столько же и по поводу связки "БД3"+FastReport Server... Пользователи БД типа "1"(множество групп) и типа "3"(единственная группа) разделены территориально (помните? :) ) как "1"-"1" так и "3"-"1" Откуда Fast будет брать данные для консолидированных отчетов, подключаться к базам данных типа "1" по очереди или сразу ко всем ПЯТИДЕСЯТИ? Если наоборот (судя по всему, как Вы предлагаете) - БД одна (типа "3") - с ней работают для ВВОДА или получения данных (через Inet или по межгороду "жарят" ) - денег не напасёшься ни в первом, ни во втором случае (кстати, не будет лишним сказать, что организация бюджетная и бюджет ОЧЕНЬ ограничен)) пользователи из групп типа "1" и "2" и в тоже время пользователи из группы типа "3" ИЗ ЭТОЙ ЖЕ БД делают аналитические выборки (отчёты) лет так эдак за 5-6... :) Кстати, т.к. БД типа "3" будет использоваться для получения информации (аналитики), а не для ввода, то и структура её будет "несколько" отличаться от "БД1" и "БД2" для оптимизации выборки данных, хотя данные "...Почему общие корпоративные ..." :) К БД типа "3" (ODS) дополнительно (или на замену ей?), в недалёком будущем (по мере накопления информации и...денег), будет создана БД OLAP, построенная на СУБД MSSQL или аналогичной). Здесь следует заметить, не будь финансовая сторона вопроса столь острой (как она сейчас есть), данная ИС могла быть построена с использованием менее трудозатратных (спасибо этому форуму и его обитателям :)) ), хотя и достаточно дорогих на начальном этапе решений. Это ещё одна причина, по которой планируется создание СП - менее болезненный переход (через 5,6,7 лет - кто знает?) на более эффективные (и скорее всего, далеко НЕ бесплатные СУБД). P.S. Если некоторые высказывания были не в меру резкими, то извиняюсь, меньше всего хотел Вас обидеть! :) Двигаемся дальше... Alexey KudinovЗапутали :) Вы очень подробно описали ситуацию, но не написали чего же вы хотите достичь. " 1 Написать отчетную систему, главное требование к которой - легкое подключение новых отчетов ? " - нет, не отчётную систему (хотя одна из её составляющих будет предназначена ТОЛЬКО для отчётов), но требование лёгкого подключения (и обновления) отчётов сохраняются " 2 Создать полноценный сервер приложений, оставив при этом ваши многочисленные БД как они есть ? Опять таки - что вы планируете размещать в этом СП " - насчёт полноценности, это уж по возможности (опыта создания подобных ИС нет) - основная задача, кроме перечисленных выше, минимизировать трафик (до нЕльзя :) ) за счёт кэширования и отложенной записи (что-то общее с моделью briefcase) и пренести всю бизнес-логику не в ХП (как по-моему предложил уважаемый Petro123 ) а на СП по причинам выше упомянутым (увязнешь в ХП и можно ЗАБЫТЬ про переход на другую СУБД в дальнейшем <даже, если появятся сотни тысяч$ :) - проще будет создать другую ИС на базе другой СУБД> и чем глубже "вязнешь", тем менее реальна эта возможность...). " ...многочисленные БД как они есть... " - их пока нет, в том то и дело - выдвигайте свои мнения КАК ИНАЧЕ грамотно построить такую ИС! У меня пока сложилось мнение, что люди здесь собрались по subj'у компетентные (кроме меня, наверное), но опытом поделиться не рвутся... :( ...к сожалению! Пока только: Dmitry V. LiseevМне известны случаи, когда люди покупали мощные сервера за мегабабки, а потом выясняли, что производительность не увеличилась, а сервер работает вхолостую, обогревая атмосферу. Если такой человек берется за создание трехзвенки, то непременно построит ее по той архитектуре, что и двухзвенку, получив только минусы и ни одного плюса. и вот это: Dmitry V. Liseevэто означает, что трехзвенка ему не нужна, поскольку он не понимает, принципиальных проблем и ограничений двухзвенки. Вместо этого просто перечислили бы основные (проблемы и ограничения) - я не думаю, что получилось бы длиной как мой пост... :) и это: Dmitry V. LiseevПроблем с отчетами в dll и их компилляцией не возникает. У нас отчеты выполняются по миллионам документов и нет ни одного, который работал бы дольше пары секунд. Интересует не то, что у Вас проблем не было, а сам принцип предоставления "тонким клиентам" их в доступ... Подключил я динамически dll... дальше что? Как организовать диалог с пользователем (ввод параметров и т.п.), где у Вас хранятся эти диалоговые формы (или не хранятся? создаются динамически?)? Пока вижу всю эту реализацию средствами FastReport'а (без dll) - там и диалоговые формы и комбо и чего только... и всё это можно сохранить в шаблоне (а затем и в БД). и, наверное, вот это: Dmitry V. LiseevПотому я не знаю, с каими проблемами должен столкнуться разработчик "типового СП". Не в обиду Вам (совсем не хочу оскорбить!), уважаемый Дмитрий, будет сказано, но это IMHO ПОНТЫ чистой воды и ничего более. Вот вопросы Вам "на засыпку" - создавалась эта ИС Вами лично с нуля или при Вашем участии, или Вы пришли "на готовое" и занимаетесь теперь только её поддержкой и развитием? Сколько всего Вам довелось создать ИС с использованием 3-х звенной архитектуры (первую, наверное, легче всего было реализовать :) ). Принимали активное участие в проектировании и создании? - и что, СРАЗУ вот так всё заработало (без отладки и т.п.) и НИКАКИХ проблем не возникало??? Если ответ "нет и не было никаких проблем" - приезжайте и расстреляйте меня прямо сейчас!!! :)) ну и вот это уж совсем было ни к чему!: :( Petro123Dmitry V. Liseev +1 ...но я отвлёкся, извините, Alexey ! по этому поводу: " 3 Полностью перепроектировать всю вашу систему, с целью добиться ... чего ? " могу сказать, что по большей части ничего перепроектировать не надо - пока кроме старенькой СУБД (файл-серверной, крайне неустойчивой к всевозможным сбоям в питании ПК и сетевых коммутаторов), работающей под DOS+кучи всяческой утилитной (win32) "шняги", поддерживающей её "на плаву", НИЧЕГО И НЕТ!!! :( Alexey Kudinov FastReport Server хорошее решение. Согласен на 101%!!! :)) Зачем изобретать велосипед, если он уже существует, ещё и с мотором и стоит всего 500$! :) Продолжаем разговор... iscrafmДо сих пор непонятно, Вы наполнение БД тоже удаленно делать будете или эта работа выполнятся локально в каждом узле? - считаю, что уже ответил выше, если ответ не полный - дополню, скажите только в чём. " Если будет ввод удаленный, то протестируйте на боевых объемах и реальных каналах DataSnap хорошенько. " - небольшой тест уже проделывал - выигрыш был в пользу DataSnap (в сравнении с обычным КС) в 1,5-2раза! " По крайней мере мы писали свой транспорт по этой причине. " - неужели ни TDCOMConnection, ни TSocketConnection не устроили категорически? подозреваю, что Borland DataSnap не пик великолепия, тут, кстати, в одной из веток кому-то уже советовали (автора не помню, к сожалению) в этой связи Remote Objects SDK - у них, вроде бы свой "суперэффективный"... :) Был ли у Вас опыт "общения" с ним? " Если удаленно только отчеты, то имхо FR Server-а хватит с головой,... " - FastReport Server будет использован ТОЛЬКО один (одна лицензия) и ТОЛЬКО для публикации данных в Inet (ни для чего более), все остальные клиенты (не инет'овские :) ) будут использовать обычный Fast... P.S. изложение получилось... однако! Заранее простите за очепятки (проверять не буду - уже поздно...или рано? :) ). С уважением ко всем участникам обсуждения, Роман. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2006, 03:03 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
авторDmitry V. Liseev +1 я написал, т.е. полностью с вами согласен. Афтару. Всё уже давно изобретено (можно так длинно не расписывать). Если данные разнесены территориально и плохие каналы, то Репликация и этим всё сказано. Репликация никакого отношения к 3-х звенке не имеет. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2006, 10:45 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
Ro-man И снова обо всём по-порядку: ... P.S. изложение получилось... однако! Заранее простите за очепятки (проверять не буду - уже поздно...или рано? :) ). С уважением ко всем участникам обсуждения, Роман. Многа букф ниасилил :-) У меня к автору только один вопрос - почему в этом проекте отсутствует архитектор, который должен знать ответы на все поставленные вопросы? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2006, 11:41 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
Petro123Если данные разнесены территориально и плохие каналы, то Репликация и этим всё сказано. Репликация никакого отношения к 3-х звенке не имеет. Имеет, если есть требования портируемости приложения на разные сервера СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2006, 12:47 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
Petro123Если данные разнесены территориально и плохие каналы, то Репликация и этим всё сказано. Репликация никакого отношения к 3-х звенке не имеет. Похоже, Вы опять не поняли сути вопроса! Это НЕ только репликация. Я не хотел бы "навешивать" на сервер СУБД (например, event'ы и т.п.) (и уж точно не на клиента) вот такую функцию (возможно, в тексте её не упомянул :( ): при наступлении определённого события (создана /удалена,изменена/ запись в определённой таблице и т.п.) данные (и не все данные, а только необходимые) должны передаваться на следующий уровень "БД1">"БД2", причём не ВСЕМ "БД2", а конкретно одной (которую выбрал пользователь). Не правда ли, в данном случае СП справится с задачей много эффективнее чем что-то ещё? Насчёт Репликации с Вами полностью согласен ТОЛЬКО в плане таблиц-справочников! ------------------------ трудАголик, СПАСИБО за обсуждение и Д О С В И Д А Н И Я!!! В следующий раз сделайте мне небольшое одолжение (ну совсем маленькое) - ПРОЙДИТЕ МИМО! ------------------------ ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2006, 12:47 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
Alexey KudinovИмеет, если есть требования портируемости приложения на разные сервера СУБД. 2 Ro-man Этот вопрос я советую прояснить для себя ОЧЕНЬ хорошо. Чтобы вы думали не в стиле "а вот если вдруг когда-нибудь нам надо будет перейти на СУБД XYZ", а четко знали надо это или нет. Потому что если если есть требования портируемости, вам автоматически действительно приходится переносить логику с сервера БД куда либо. Из этого следует: a) преимущества, предоставляемые данным конкретным сервером БД нивелируются. б) обработка множеств (см. например отчеты) также уходит с сервера БД, а это приводит к ухудшению производительности в) если вы захотите (а вы захотите) писать какой-либо построитель SQL выражений (с возможностью адаптации под разные диалекты ), помните, что это не так уж просто как кажется. Резюме. Вынос бизнес логики на сервер - лучше портируемость, хуже используются преимущества данной СУБД, производительность тоже хуже (хотя есть способы поправить положение, но это все ... ) Оставить бизнес логику на сервер БД - хуже портируемость, но выше производительность. Вот ссылка на статью, в которой описан перевод системы с одной СУБД на другую http://www.osp.ru/text/302/180964/ Подчеркиваю, системы, специально разрабатываемой с учетом возможности такого переноса (см. пункты a), б), в) ) Все, что я написал многократно обсуждалось здесь на форуме и вызывало многочисленные споры. Ссылки на флеймы уже приводились и очень бы не хотелось начинать по новой. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2006, 13:05 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
Alexey Kudinov Petro123Если данные разнесены территориально и плохие каналы, то Репликация и этим всё сказано. Репликация никакого отношения к 3-х звенке не имеет. Имеет, если есть требования портируемости приложения на разные сервера СУБД. меня тошнит от такого требования. Бесплатный сыр...... ПароВозоРакетоМобили всегда хуже (решения для отдельной СУБД) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2006, 13:20 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
Ro-man Я не хотел бы "навешивать" на сервер СУБД (например, event'ы и т.п.) (и уж точно не на клиента) вот такую функцию (возможно, в тексте её не упомянул :( ): при наступлении определённого события (создана /удалена,изменена/ запись в определённой таблице и т.п.) данные (и не все данные, а только необходимые) должны передаваться на следующий уровень "БД1">"БД2", причём не ВСЕМ "БД2", а конкретно одной (которую выбрал пользователь). Не правда ли, в данном случае СП справится с задачей много эффективнее чем что-то ещё? и ЭТОМУ ТОЖЕ ЕСТЬ НАЗВАНИЕ в теории построения БД. 1. Не пытайтесь объять необъятное: - портируемость (все СУБД) - все события (на каждый чих в СУБД каждым из 100000 пользователей вам придёт событие). Что будет если вам, читающим эти строки прижут события после UPDATE данного топика? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2006, 13:27 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
Alexey Kudinov Вынос бизнес логики на сервер - лучше портируемость, хуже используются преимущества данной СУБД, производительность тоже хуже (хотя есть способы поправить положение, но это все ... ) Читать " Вынос бизнес логики с сервера БД - лучше портируемость, хуже используются преимущества данной СУБД, производительность тоже хуже " ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2006, 13:32 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
ОГРОМНАЯ просьба в Вам (это последняя, дальше Ваши посты буду просто игнорировать :) ), Petro123 , я же уже выше говорил одному из участников - мне не нужны ПОНТЫ вроде этого: Petro123и ЭТОМУ ТОЖЕ ЕСТЬ НАЗВАНИЕ в теории построения БД. и т.п. Мне нужны К О Н С Т Р У К Т И В Н Ы Е советы! Ro-man Я не хотел бы "навешивать" на сервер СУБД (например, event'ы и т.п.) (и уж точно не на клиента) вот такую функцию (возможно, в тексте её не упомянул :( ): при наступлении определённого события (создана /удалена,изменена/ запись в определённой таблице и т.п.) данные (и не все данные, а только необходимые) должны передаваться на следующий уровень "БД1">"БД2", причём не ВСЕМ "БД2", а конкретно одной (которую выбрал пользователь). Не правда ли, в данном случае СП справится с задачей много эффективнее чем что-то ещё? - не нужен здесь СП?,- хорошо, объясните (ОБОСНОВАННО!) кто (или что) будет выполнять такую функцию или если лень (зачем тогда в этот топик вообще было лезть, логично? :-) ) объяснять - дайте хотя бы ссылки на такую информацию, я уж сам разберусь, без ленивых. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2006, 13:54 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
Alexey Kudinov Потому что если если есть требования портируемости, вам автоматически действительно приходится переносить логику с сервера БД куда либо. Из этого следует: Спасибо за совет, уже задумался... Ещё одно "но"... см. пост Ro-manЯ не хотел бы "навешивать" на сервер СУБД (например, event'ы и т.п.) (и уж точно не на клиента) вот такую функцию (возможно, в тексте её не упомянул :( ): при наступлении определённого события (создана /удалена,изменена/ запись в определённой таблице и т.п.) данные (и не все данные, а только необходимые) должны передаваться на следующий уровень "БД1">"БД2", причём не ВСЕМ "БД2", а конкретно одной (которую выбрал пользователь). Не правда ли, в данном случае СП справится с задачей много эффективнее чем что-то ещё? - не нужен здесь СП?,- хорошо, объясните (ОБОСНОВАННО!) кто (или что) будет выполнять такую функцию или если лень (зачем тогда в этот топик вообще было лезть, логично? :-) ) объяснять - дайте хотя бы ссылки на такую информацию, я уж сам разберусь, без ленивых. Т.к. Petro123 не очень-то стремится прояснить ситуацию (только запутывает ещё больше), может Вы поможете с вышеупомянутой проблемой? Да, и какие основные ЭФФЕКТИВНЫЕ пути сокращения трафика Вы используете при создании КС на столь "быстрых" соединениях? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2006, 14:12 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
Афтар! Я вижу Вы не очень любите отвечать на вопросы или отвечаете, но не как специалист по БД. У меня был вопрос по ваши Event'am. 2. Ваши вопросы на форуме той БД которая у вас центральная не выдержали бы критики и 3-х минут. ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2006, 14:17 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
Ro-man Да, и какие основные ЭФФЕКТИВНЫЕ пути сокращения трафика Вы используете при создании КС на столь "быстрых" соединениях? есть 3 типа репликации . какую из них вы примеряли на себя или делали модель? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2006, 14:20 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
Пример архитектуры решения, похожего на Ваше (рис). Сервер №1...n - обособленные центры продаж, которые работают с локальными БД. Изменения регистрируются в Outbox в форме SQL запросов на модификацию данных. Служба синхронизации по графику или при помощи ручной активации подключается к удаленным серверам приложений и передает запросы на обновления. Сервер приложений применяет изменения к БД с которой работает в паре. Связь между серверами - интернет. Также используется on-line доступ для прямого внесения изменений (например один из центров продаж в режиме онлайн вводит заказ непосредственно в БД другого центра) и получения отчетов. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2006, 14:26 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
авторИзменения регистрируются в Outbox в форме SQL запросов на модификацию данных. Служба синхронизации по графику или при помощи ручной активации подключается к удаленным серверам приложений и передает запросы на обновления. это все рукописное? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2006, 15:18 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
Petro123 авторИзменения регистрируются в Outbox в форме SQL запросов на модификацию данных. Служба синхронизации по графику или при помощи ручной активации подключается к удаленным серверам приложений и передает запросы на обновления. это все рукописное? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ЗЫ. это не наезд - правда интересно ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2006, 15:20 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
Petro123 авторИзменения регистрируются в Outbox в форме SQL запросов на модификацию данных. Служба синхронизации по графику или при помощи ручной активации подключается к удаленным серверам приложений и передает запросы на обновления. Да я догадался, что без наездов :) В каком плане рукописное? не понял просто. Писалось конечно руками :) Все на базе ISCRA Framework. Сам ISCRA Framework - промышленный продукт с защитой, лицензиями, документацией, поддержкой, хорошим тестированием, отсутствием глюков и прочими прелестями промышленного продукта. Но тоже написан руками :) Архитектура приведена для примера, как похожая на задачу автора. Правда в ценовой диапазон озвученный Ro-man-ом не вписывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2006, 15:26 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
iscrafmПравда в ценовой диапазон озвученный Ro-man-ом не вписывается. с этим согласен. IMHO пусть всё-таки хотя-бы репликацию попробует. "Сложнее всего в мире достигнуть простоты - это крайняя граница опыта и последнее усилие гения". George Sand. "Клетки человеческого организма более гибки, чем скажем человеческая рука, но рука лучше приспособлена для хватания объектов чем клетка... да и будь клетки менее гибкими мы не болели бы раком. так что не все тут так радостно как постулируется. Идеал находится где-то на полдороге между специализацией и гибкостью." (с) Герман Иванов. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2006, 15:36 |
|
Вопросы по реализации 3-х звенного приложения...
|
|||
---|---|---|---|
#18+
"Ro-man" <nospam@sql.ru> wrote in message news:3074341@sql.ru... Hi! > Далее, после восстановления соединения с БД все изменения > (скорее всего будет вестись лог или врЕменные таблицы), > произведённые за это время в "БД2" ДОЛЖНЫ БЫТЬ > переданы в "БД1". Равно как и новые записи в таблицах-справочниках > "БД1" ДОЛЖНЫ БЫТЬ переданы в "БД2" вместе с ещё некоторыми > данными из "БД1". И на кого, позвольте поинтересоваться, взвалить > эти "обязанности"? :) А потом у заказчика поменялась постановка задачи и он говорит: "Вот в эту таблицу вы можете добавлять, удалять, менять как угодно, но сумма по всем записям в этом столбце должна быть не более 100, а в этом столбце не менее 0". И разнести куски таблицы по трем независимым серверам уже не получается. Или можно клепать документы на отгрузку только в пределах остатка на единственном складе. И как три независимые группы клепалщиков будут знать остатки на складе? На кого взвалить эти обязанности? В итоге транзакционной целостности данных не получается. На одном сервере транзакция вроде прошла. При попытке ее воспроизвести через несколько часов на другом сервере что-то уже не получается. Там уже и справочники другие, да и данные поменялись все давно. Потому, что если разные группы юзеров действительно никогда по данным не пересекаются и описанных проблем быть не может, то это будут три совершенно независимых системы и связь между ними не нужна и СП не нужен. > Это ещё одна причина, по которой планируется создание СП - менее > болезненный переход (через 5,6,7 лет - кто знает?) на более > эффективные (и скорее всего, далеко НЕ бесплатные СУБД). Это миф. Сама по себе замена СУБД эффекта не даст никакого. Надо будет полностью перепроектировать систему и СП тоже. > Вместо этого просто перечислили бы основные (проблемы > и ограничения) - я не думаю, что получилось бы длиной > как мой пост... :) Ладно. Начнем с начала. Вот есть у нас система. Очень сложные данные с кучей зависимостей и констрейнов. Очень сложная логика. Логика такая сложная, что большинство нужных нам операций одним SQL запросом выполнить не получается. Даже прочитать нужные нам данные одним запросом не получается. А нам нужны транзакции и логическая целостность данных. И вот мы с клиента стартуем транзакцию, получаем ответ, что стартовала успешно. Посылаем запрос, получаем ответ, что все хорошо. Повторить предыдущее предложение N-раз. Потом фиксируем транзакцию если все было успешно или откатываем при ошибках. В чем у нас тут проблема? Если канал связи медленный, модемный, или куча юзеров сидит на общей шине не на свитче, а на банальном хабе, то это все по сети гоняется медленно. Да пока клиент эти запросы формирует, да пока переваривает ответы. Короче, транзакция затягивается. Чего в этом плохого? Плохо тут то, что транзакция лочит данные, которые она затрагивает. И все остальные юзера работать не могут, а просто ждут, пока транзакция не закончится или не откатится. Понятно, что какой бы навороченный сервер мы не поставили, он просто будет простаивать в ожидании снятия блокировок, а ускорить такую сложную транзакцию никак не сможет, ибо причина в том, что тормозит клиент и его канал связи. Самое ужасное, что для возникновения проблемы достаточно, чтобы тормозили всего несколько клиентов из сотни. А дальше - цепная реакция. Клиенты ломятся на сервер, пересекаясь по данным, количество блокировок нарастает, в целях экономии ресурсов (ибо размер буфера, где хранится информация о блокировках быстро растет, пожирая память, следовательно лочить надо более крупными кусками, тогда записей будет меньше, в идеале нужна одна запись "залочена вся база целиком") сервер применяет эскалацию блокировок, то есть лочит не только записи, непосредственно затронутые транзакцией, но и целиком страницы и даже целые таблицы, блокируя рядом оказавшиеся ни в чем не виновные записи. В итоге вероятность очередного клиента влететь на блокировку еще больше возрастает. Скоро транзакции, так и не дождавшись заблокированных данных, начинают отваливаться по таймауту. Алгоритмы тут в разных СУБД разные. Некоторые работают по принципу: "Кто раньше встал, того и тапки". Т.е. чья транзакция началась позже, та и отлетит в случае конфликта. Другие поступают умнее. Они замеряют, сколько ресурсов уже пожрала транзакция. Понятно, что ту, которая стоила кучу сил серверу, убивать жалко, потому прибита будет та, что меньше "стоила". Смотрим, почему транзакции лочат данные и чем "сложные" данные отличаются от "простых". Допустим, есть у нас таблица. Куча юзеров могут параллельно в ней что-то делать, добавлять, удалять, менять. Допустим, к одним и тем-же записям разные юзера не обращаются. Понятно, что юзера друг-другу не мешают. При очень быстром диске и мощном сервере юзеров может быть очень много. Но вот мы захотели, чтобы был констрейн. Допустим, хотим, чтобы одно из полей в таблице было уникальным. Тем самым мы ввели неявные зависимости между разными записями в одной таблице. Допустим, первый юзер стартует транзакцию и удаляет запись со значением "ААА". Второй юзер пытается вставить запись со значением "ААА". Можно или нельзя? Все зависит от первого юзера. Он может как подтвердить транзакцию (запись исчезнет и второй сможет вставить свою) так и откатить транзакцию (запись вернется назад, а второй юзер получит ошибку). Соответственно, второй юзер должен быть залочен, пока первый не закончит свою транзакцию. Аналогичные рассуждения можно привести и для внешних ключей, когда возможность существования записи с FK в одной таблице зависит от наличия записи с PR в другой таблице. Т.е. тоже неявные зависимости. В итоге мы понимаем, что чем больше констрейнов и FK, т.е. чем более "сложные" данные у нас, тем больше записей может быть заблокировано каждой транзакцией и много юзеров уже не могут работать параллельно. Вообще, вопросы изолирования транзакций и стратегии блокировок описаны в специальной литературе. Становится понятно, что необходимо транзакции проводить как можно быстрее, данные проектировать так, чтобы зависимостей было как можно меньше, уменьшать вероятность обращения юзеров к одним и тем-же данным. Если бы клиент не управлял транзакцией сам, а мог бы передать на сервер сразу все необходимые для нее данные одним пакетом, то транзакции не затягивались бы, а медленный канал был-бы проблемой только этого клиента и не лочил бы всех остальных. То есть нужен принцип "один пакет - одна транзакция". Аналогично, было-бы хорошо, если бы все нужные для отображения данные передавались бы с сервера на клиент также одним пакетом. Как это сделать? Можно построить "трехзвенку на основе двухзвенки". То есть данные, нужные для начала транзакции, клиент неспешно засылает в разные временные таблицы, никому не мешая. Потом запускает хранимую процедуру, которая и проводит как можно моментальнее всю транзакцию, а результат выдает в другие временные таблицы. Клиент, опять никому не мешая, неспешно их оттуда забирает. В итоге мы получаем сервер приложений на ХП. Но гораздо интереснее, все-же не гонять по сети кучу пакетов, да еще через временные таблицы, а сделать более нормальный СП. Понятно, что нам мешает "бедность SQL", который не дает выполнить сложные вещи одним запросом, а кучу сложноструктурированных данных нельзя передать параметром в ХП, оттого мы вынуждены сначала засылать их в кучу временных таблиц. Потому наш СП будет принимать от клиента сложноструктурированные запросы и отдавать сложноструктурированные ответы. Хотим, гоняем в формате XML, хотим, сериализуем в свой компактный бинарный поток, да еще и зипуем, если с трафиком совсем тяжко. Важно, что один пакет - одна транзакция. Даже, если канал медленный и клиент тормозит - не беда. Важно, что это не мешает остальным и не затягивает транзакции. А с другой стороны наш СП имеет толстый канал связи с СУБД. Совсем физически независимая сеть, даже отдельная сетевая карта, чтобы никто не мешал ему как можно быстрее провести транзакцию. У-ф-ф, руки устали. Как видите, пост получился длинный, хотя затронули мы только одну проблему - повышения масштабируемости с помощью трехзвенки и требуемую конфигурацию сети обсудили. > Интересует не то, что у Вас проблем не было, а сам принцип > предоставления "тонким клиентам" их в доступ... Подключил > я динамически dll... дальше что? У нас нет dll. Сервер приложений полностью на скриптах. Поставляется заказчику целиком в хорошо откомментированных исходниках. Если заказчику нужен новый отчет или слегка измененный старый, он делает копию существующего, исправляет и компилирует прямо на сервере приложений. При запуске этот отчета генерит XML и отправляет на клиента по медленному каналу связи. Клиент пускает XSLT и получает XSL-FO, на который натравливает FOP и получает красивый PDF. Ловкость рук и никакого волшебства. Если заказчик не может сам сделать отчет, то просит нас. > Как организовать диалог с пользователем (ввод параметров и т.п.), где > у Вас хранятся эти диалоговые формы (или не хранятся? создаются > динамически?)? Диалог с пользователем организует клиентское приложение. Зачем эти формы хранить? Чтобы потом по сети гонять? Пользователь вводит параметры, из них формируется XML-запрос и пересылается на сервер приложений на вход программы генерирующей отчет. Если заказчику нужно извратится, то формы диалогов и процесс создания XML-запроса находится в COM-компоненте на клиенте. Заказчик пишет сам (или просит нас) другой компонент на любом языке программирования и переопределяет стандартный компонент. > Вот вопросы Вам "на засыпку" - создавалась эта ИС Вами лично > с нуля или при Вашем участии, или Вы пришли "на готовое" > и занимаетесь теперь только её поддержкой и развитием? Проектировалась мной лично с нуля. Я занимался реализацией всей серверной части. Клиентские части делали другие разработчики. Приход меня "на готовое" обычно сопровождается полным перепроектированием системы. Я это обычно сразу уточняю при приеме на работу ;) На поддержку готового нанимают сисадминов, а я - проектировщик. > Сколько всего Вам довелось создать ИС с использованием 3-х > звенной архитектуры (первую, наверное, легче всего было > реализовать :) ). Мне вообще не довелось делать двухзвенок, не считая студенческих курсовых. А когда мы делали первую трехзвенку еще и слова такого небыло. Люди фанатели даже от слов "клиент-сервер". Была SUN-техника под солярисом, была нетварь с ее NLM. Сетевой протокол был IPX/SPX. Всякие дельфи, корбы, д-комы и ком-плюсы появились сильно позже. Вот и вопрос, проще было или сложнее. Даже С++ толком небыло. Только голый С. > Принимали активное участие в проектировании и создании? - и что, > СРАЗУ вот так всё заработало (без отладки и т.п.) и НИКАКИХ > проблем не возникало??? Отладка и тестирование - как обычно в любой программе. На начальном этапе было четыре варианта макета архитектуры. Четвертый оказался наиболее удачным. На его кости уже и нарастили мясо. ____________________________ С уважением, Лисеев Дмитрий. http://private.peterlink.ru/dimik/ PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73 Posted via ActualForum NNTP Server 1.3 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2006, 21:44 |
|
|
start [/forum/topic.php?fid=33&msg=33954160&tid=1549276]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
278ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 18ms |
total: | 388ms |
0 / 0 |