Форум: "Базы";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
ВнизЗачем нужны многозвенки ? Найти похожие ветки
← →
Juice © (2005-10-28 19:16) [0]Это серьезный вопрос, я без шуток :)
← →
Джо © (2005-10-28 20:58) [1]Чтобы оправдать завышенную цену за выполнения проекта, например :)
← →
Desdechado © (2005-10-28 21:11) [2]Есть один серьезный аргумент в их пользу - легкая масштабируемость. Если бизнес-логику положить в БД (ХП, например), то при необходимости увеличить число пользователей приводит к серьезным затратам на апгрейд сервера БД. Если же бизнес-логика лежит в промежуточном звене, то сервер БД занимается только вводом/выводом, но не расчетами. А промежуточное звено можно легко и дешево распараллелить при необходимости на несколько серверов приложений, а потом добавлять к ним еще и т.д.
← →
tesseract © (2005-10-28 21:18) [3]А ты ни разу юзеров из 1с не выгонял :-)
Они нужны для исключения конфликтов в запросах изменения/чтения данных, кэширования результатов, репликации данных, масштабируемости тд.
← →
Sergey Masloff (2005-10-28 21:35) [4]Desdechado © (28.10.05 21:11) [2]
>Есть один серьезный аргумент в их пользу - легкая масштабируемость. >Если бизнес-логику положить в БД (ХП, например), то при необходимости >увеличить число пользователей приводит к серьезным затратам на апгрейд >сервера БД.
Это в теории. А на практике... совсем наоборот. Масштабирование на порядок (с тысяч до десятков тысяч пользователей) систем где логика вся в базе я видел. Проблем не было. А вот логигу с наращиванием за счет масштабирования серверов приложений - увы, успешных не видел. Неуспешные видел. Так что не все так просто ;-))
Кстати логика в базе совсем не исключает трехзвенки и наоборот - очень широко используется.
← →
tesseract © (2005-10-28 21:54) [5]
> А вот логигу с наращиванием за счет масштабирования серверов
> приложений - увы, успешных не видел. Неуспешные видел.
Я честно говоря видел. Lotus Notes например, 1с 8.x
> Кстати логика в базе совсем не исключает трехзвенки и наоборот
> - очень широко используется.
Да и сама база данных является мощным приложеним, взять хотя бы язык JSQL. В таком случае действительно немного смысла.
← →
Desdechado © (2005-10-28 22:00) [6]2 Sergey Masloff
> логика в базе совсем не исключает трехзвенки и наоборот
Согласен. Не вижу смысла тянуть на среднее звено много данных при необходимости переколбасить всю БД для аналитического отчета, например.
> успешных не видел
Это пока только начало. Специалистов мало, технология еще не обкатана да и рекламный прессинг присутствует. Да и хорошо работающие 2-звенки не вижу смысла перетаскивать на 3 и более. А вот новые вполне можно сразу грамотно на многозвенку сажать.
← →
Zacho © (2005-10-29 00:06) [7]Desdechado © (28.10.05 22:00) [6]
технология еще не обкатана
Так сколько её можно обкатывать ? :) Технологии уже лет 10, если не больше.
По сабжу:
Ещё 3-x звенка весьма полезна при доступе к БД по медленным и ненадёжным каналам (например, dial-up).
← →
Anatoly Podgoretsky © (2005-10-29 11:46) [8]Любая технология должна применяться там, где в ней есть необходимость, но может применяться и из моды или для прекрытия недостатоков дизайна, например как в 1С, чтобы прикрыть неправильную работу с SQL, там поставили третье звено, чтобы как то прикрыть сильные просчеты.
← →
Polevi © (2005-10-29 17:28) [9]просто еще один уровень абстракции
куда нам без них в нашем деле
← →
tesseract © (2005-10-30 00:20) [10]
> как в 1С, чтобы прикрыть неправильную работу с SQL, там
> поставили третье звено, чтобы как то прикрыть сильные просчеты.
>
В этом случае этим достигается независимость от базы данных и снижается опасность повреждения данных. Да и иерархические данные в релятивных базах данных хранить по прежнему весьма накладно.
← →
Reindeer Moss Eater © (2005-10-30 10:22) [11]По сабжу:
Ещё 3-x звенка весьма полезна при доступе к БД по медленным и ненадёжным каналам (например, dial-up).
<Цитата>
Трехзвенка никогда не решала проблему тонких каналов.
У нее вообще такой задачи не было.
← →
Zacho © (2005-10-30 11:57) [12]Reindeer Moss Eater © (30.10.05 10:22) [11]
У нее вообще такой задачи не было.
Мало ли чего не было.. :) Главное, что 3-х звенка с успехом используется именно для решения части проблем тонких каналов. По крайней мере, при использовании IB. С другими СУБД - не знаю, может и правда ничего не даёт.
Если хочешь подробности - спроси на news://forums.demo.ru/epsylon.public.interbase
А я участвовал в разработке системы на IB с доступом по тонким каналам довольно давно, и уже смутно помню, какие именно проблемы решались именно 3-х звенкой.
← →
Piter © (2005-10-30 12:11) [13]Anatoly Podgoretsky © (29.10.05 11:46) [8]
а вы много работали с 1C?
← →
Anatoly Podgoretsky © (2005-10-30 12:34) [14]Piter © (30.10.05 12:11) [13]
Чур, чур меня.
← →
Piter © (2005-10-30 12:57) [15]Anatoly Podgoretsky © (30.10.05 12:34) [14]
Чур, чур меня
тогда на основании чего говорите о непродуманности?
← →
sniknik © (2005-10-30 13:08) [16]> Чур, чур меня.
;)
> а вы много работали с 1C?
я работал, довольно много. и именно с 1С а не на ;). (COM обьекты(пару) под нее делал, обмен, помогал 1С-никам в нее ADO вставлять(вернее не вставлять, поддержка COM там есть, а писал код для его использования на 1С, хотя язык и не знаю ;о), но тут они мне помогали), запросы им же делал...)
в общем из первых рук(своих ;) знаю, что проблема неправильной работы с базой(mssql) там есть, она работает с mssql также как и с собственным dbf движком... от чего всех начинающих так предостерегают ;)), т.е. там как раз присутствуют отборы всей таблици в милион записей, чтобы потом наложить фильтр и получать 10 значимых, перетаскивание данных и общет на клиенте вместо запроса на сервер и т.д. сервер практически не используется. (можеш сам открыть профайлер и посмотреть).
а с чего, и как думаеш делают оптимизацию на порядки (отчет считается 3 часа, переписываем тоже но с помощью ADO там же (в 1С), и он считается 20сек)? именно поэтому, обходя убого реализованный механизм работы с mssql.
да ето все касается 1С семерки, с восьмеркой не работал практически, разошлись у нас путя...
но по сути понятно, всетаки не совсем без инфы..., там трезвенка (одна из задач) для того чтобы в самой 1С все оставить как есть, а с базой работу сделать пооптимальнее. но вот тут еще вопрос получилось у них или нет... (сам не разбирался, естественно, раз больше не работаю с ним, но вот отдел рядом, через картонную стенку ;)... только недавно слышал, ругали его, там чтото с выполнение запроса не так было (есть компонент показывает ход выполнения запроса... (мечта некоторых сдесь ;), так вот ставят они его и вычисление с 9сек увеличивается до 30мин... ну примерно), думаю это тоже не от хорошей работы с базой. и это не единственное, хотя в общем говорят получше стало)
← →
Anatoly Podgoretsky © (2005-10-30 13:10) [17]Piter © (30.10.05 12:57) [15]
Интернет большой
← →
sniknik © (2005-10-30 13:12) [18]> тогда на основании чего говорите о непродуманности?
а что обязательно много работать с ним чтобы узнать недостатки?
по моему достаточно почитать по теме, посмотреть с какими проблемами люди сталкиваются, проверить, потестить.... и не использовать если оправдалось и есть возможность не использовать.... ;о) (у нас не такой ;()
← →
Anatoly Podgoretsky © (2005-10-30 13:16) [19]sniknik © (30.10.05 13:08) [16]
работает с mssql также как и с собственным dbf движком
Про подобное и говорю, вот в версии 8 чтобы скрыть это сделали трехзвенку, вместо того чтобы написать правильно (хотя врядли это уже возможно на данной стадии) и перенесли просто проблему на другой уровень, но хоть так.
Кроме перекачки всех данных на клиента и там фильтрации и другие операции делается также одним местом, что бы удалить подряд например в интервале дат, делается удаление каждой записи отдельно. И конечно никаких понятий об тразакциях и прочем.
Что у них великолепно, так это высочайшего уровня маркетинг, надо же суметь так раскрутить систему и всучивать ее на всех уровнях, от отдельных компьютеров, до корпоративного уровня.
При выборе системы у нас одним из кандидатов был и 1С, славо богу руководство поняло, что это такое.
← →
Anatoly Podgoretsky © (2005-10-30 13:17) [20]Да, для мелких контор оно самое то для них, учитывая большой парк инсталяторов и поддержки, народу много от ламеров до действительно редких специалистов и контор.
← →
Piter © (2005-10-30 14:18) [21]tesseract © (28.10.05 21:54) [5]
взять хотя бы язык JSQL
а что это такое? Вроде T-SQL слышал, об PL/SQL тоже. А что такое JSQL? Тоже типа того?
← →
Piter © (2005-10-30 14:20) [22]Нда-а-а-а, не знал, что у 1C такие огрехи. Странно, ну не дураки же там работают...
Тем более, вам не кажется, что вводить трехзвенку это сложнее, чем переписать на нормальном SQL все?
← →
Anatoly Podgoretsky © (2005-10-30 14:23) [23]Piter © (30.10.05 14:18) [21]
Это разные языки, разных SQL серверов.
← →
Anatoly Podgoretsky © (2005-10-30 14:24) [24]Piter © (30.10.05 14:20) [22]
Написать переходник проще, чем переписать полностью всю систему, изначально бардачно построеную.
Даже если ее писать паралельно, системы подобго класса требуют годы и гамма тестирование.
← →
Anatoly Podgoretsky © (2005-10-30 14:28) [25]Piter © (30.10.05 14:20) [22]
Нда-а-а-а, не знал, что у 1C такие огрехи. Странно, ну не дураки же там работают...
На это и рассчитано, что покупатели об этом не знают и никогда не узнаю. При этом маркетинг от 1С весьма великолепно убивает нормальные решения и покупатель покупает не стоящий продукт, а 1С, даже так где он по сути не применим.
← →
Anatoly Podgoretsky © (2005-10-30 14:30) [26]Кстати тут неоднакратно приводили жизненые примеры, как 1С-ники окучивают рынок.
← →
Piter © (2005-10-30 15:49) [27]Anatoly Podgoretsky © (30.10.05 14:23) [23]
Это разные языки, разных SQL серверов
я в курсе. И что? :)
← →
Anatoly Podgoretsky © (2005-10-30 16:01) [28]А то и есть, другой язык и все.
← →
Reindeer Moss Eater © (2005-10-30 16:21) [29]Главное, что 3-х звенка с успехом используется именно для решения части проблем тонких каналов.
Это заблуждение
← →
Piter © (2005-10-30 17:49) [30]Anatoly Podgoretsky © (30.10.05 16:01) [28]
А то и есть, другой язык и все
что другой язык?
Если про T-SQL и Pl/SQL - знаю, расширение от MS и Oracle соответственно.
А JSQL это тоже расширение от кого-то? КТо-то ведь придумал? :)
Reindeer Moss Eater © (30.10.05 16:21) [29]
Это заблуждение
ну почему??? Может там реализована докачка данных.
Например, выполняется здоровенный INSERT, если в обычной ситуации у тебя разорвется связь - надо все сначала. А с трехзвенкой можно докачку сделать :)
Плюс даныне можно сжимать ZLIB"ом каким-нибудь, они будут меньше занимать, что для медленного канала выгоднее, верно?
← →
Sergey Masloff (2005-10-30 21:24) [31]Reindeer Moss Eater © (30.10.05 16:21) [29]
>>Главное, что 3-х звенка с успехом используется именно для решения >части >проблем тонких каналов.
>Это заблуждение
...А мужики то и не знают ;-) Мы вот пользуем для этой цели именно. Уже много лет ;-))) Вроде полет нормальный. Просто не знали что оно не для этого ;-)
← →
Piter © (2005-10-30 21:37) [32]Sergey Masloff (30.10.05 21:24) [31]
а каким образом используете для этой цели? Как я написал? Или чего еще?
← →
Reindeer Moss Eater © (2005-10-30 21:49) [33]Допустим в приложении есть форма с гридом.
Если приложение двузвенное, на клиента в грид приедет Х байт данных.
Если приложение трехзвенное, в грид приедет примерно то же самое кол-во данных.
Вы скажете, что в трехзвенках у вас нет гридов?
Я скажу что и в двухзвенке гриды не обязательны.
Вы скажете, что прикрутили компрессию данных в трехзвенке?
Я скажу, что и к двухзвенке прикрутить можно.
Именно поэтому я и говорю, что многозвенка непосредственно сама по себе на снижает требования к ширине канала данных.
А то что у вас все в шоколаде работает, так я не сомневаюсь.
← →
Reindeer Moss Eater © (2005-10-30 21:56) [34]Компрессия данных в трехзвенных приложениях - это не фича непосредственно трехзвенки.
Я, например, могу соединиться диалапом с сервером БД и у меня в двузвенном приложении будет компрессия данных. Мопед будет жать их.
Это только один пример.
Можно привести пример и чисто программного решения компрессии в двузвенных приложениях.
← →
Piter © (2005-10-30 22:18) [35]Reindeer Moss Eater © (30.10.05 21:56) [34]
Можно привести пример и чисто программного решения компрессии в двузвенных приложениях
например???
Если сама база данных не поддерживает компрессии?
По любому будешь ставить некую прослойку, разве нет? А это и суть есть трехзвенка.
← →
Reindeer Moss Eater © (2005-10-30 23:57) [36]Да например шлюз, работающий на уровне TCP/IP.
Он ни малейшего понятия не имеет ни о сервере БД ни о клиенте.
И он не может считаться звеном многозвенной системы.
Он просто жмет поток и все.
Либо я начну утверждать что любой коммутатор/свитч/маршрутизатор между сервером и клиентом это тоже звено многозвенки.
Нету у многозвенных приложений задачи экономии трафика. Нету и все.
Никогда не было таких задач.
А все что вы прикручиваете к своим трехзвенным системам точно так же прикручивается к двузвенным.
← →
Zacho © (2005-10-31 00:11) [37]Reindeer Moss Eater © (30.10.05 21:56) [34]
Дело не только и не столько в компрессии. В основном, с помощью 3-х звенки решаются проблемы с обрывами соединения. Я же специально написал "медленным и ненадёжным каналам (например, dial-up)."
← →
Reindeer Moss Eater © (2005-10-31 00:12) [38]Вот более конкретный пример сжатия данных в двузвенной системе:
1.Рабочая станция с клиентом Оракла 172.1.1.1
2.Сервер Оракл 172.1.1.2
На клиента ставим сервис, который слушает порт 1522 и все что выслушает там жмет и посылает на тот же порт хоста 172.1.1.2
На 172.1.1.2 такой же сервис все что принял с 1522 расжимает и посылает в порт 1521 локальной машины, а все что прочитал оттуда шлет сжимая обратно на порт 1522 хоста 172.1.1.1
Клиент Оракла настраивается на localhost порт1522
Получили в итоге:
двузвенная Клиент-серверная система со сжатием потока данных.
← →
Reindeer Moss Eater © (2005-10-31 00:13) [39]В основном, с помощью 3-х звенки решаются проблемы с обрывами соединения.
Ну а я говорю, что трехзвенка не решает проблемы тонких каналов сама по себе.
Никакого противоречия.
← →
Zacho © (2005-10-31 00:35) [40]Reindeer Moss Eater © (31.10.05 0:13) [39]
Ну а я говорю, что трехзвенка не решает проблемы тонких каналов сама по себе
Полностью согласен.
> Reindeer Moss Eater © (30.10.05 16:21) [29]
> Это заблуждение
А вот с этим - нет. Проблемы обрывов решает ? Решает. Так в чём же заблуждение ?
Но, в общем, я не имею особого желания спорить на эту тему. Как уже говорил, сам я этим занимался давно и подробности плохо помню.
А если есть желание пообщаться с людьми, которые могут подробно и аргументированно объяснить зачем нужна 3-х звенка именно для решения проблем тонких каналов - стоит спросить в e.p.i, там такие люди есть. Да и здесь, возможно, найдутся. Вот, Сергей Маслов, например.
← →
Reindeer Moss Eater © (2005-10-31 00:39) [41]Обрывы и плохие каналы - они не обязательно медленные каналы.
Когда-то давно имел печальный опыт работы с Ораклом по спутникому каналу. Сам канал широкий, а пинг большой, к тому же нестабильный.
Сессии постоянно рвались.
← →
Reindeer Moss Eater © (2005-10-31 00:40) [42]которые могут подробно и аргументированно объяснить зачем нужна 3-х звенка
Я знаю для чего она предназначена и активно её испорьзую сам.
← →
Zacho © (2005-10-31 00:49) [43]Reindeer Moss Eater © (31.10.05 0:39) [41]
Обрывы и плохие каналы - они не обязательно медленные каналы.
Вот и консенсус :) Похоже, мне сразу нужно было указать только ненадёжные каналы, не приплетая медленные, и спора бы не было :)
Reindeer Moss Eater © (31.10.05 0:40) [42]
Я знаю для чего она предназначена и активно её испорьзую сам.
Да я, собственно, это не столько тебе предлагал, сколько остальным интересующимся.
← →
Piter © (2005-10-31 01:02) [44]Reindeer Moss Eater © (30.10.05 23:57) [36]
Да например шлюз, работающий на уровне TCP/IP
да, но это ведь отдельная программа, верно? Верно...
Это и есть как бы звено ТВОЕЙ ЦЕПОЧКИ. Третье звено :)
Reindeer Moss Eater © (30.10.05 23:57) [36]
Либо я начну утверждать что любой коммутатор/свитч/маршрутизатор между сервером и клиентом это тоже звено многозвенки
если бы ты в процессе написания базы сделал бы маршрутизатор - то это имхо и было бы звеном, несомненно.
Reindeer Moss Eater © (30.10.05 23:57) [36]
Нету у многозвенных приложений задачи экономии трафика. Нету и все
нету и все. Хех... Нету и все...
Авторитетно! Ничего не скажешь :)
Это тебе Билли Гейтс сказал?
Reindeer Moss Eater © (31.10.05 0:13) [39]
Ну а я говорю, что трехзвенка не решает проблемы тонких каналов сама по себе
САМА ПО СЕБЕ трехзвенка, имхо, вообще никаких проблем не решает :)
← →
Reindeer Moss Eater © (2005-10-31 08:22) [45]Piter, стек протоколов по которым ты общаешся с сервером - это тоже отдельная программа.
И маршрутизатор стоящий между вами это то же отдельная программа (даже несколько)
Только все это не звенья многозвенки в том понимании в каком о ней говорят в этом форуме.
Иначе с таким же успехом розетка rj45 становится звеном многозвенной цепи.
← →
Anatoly Podgoretsky © (2005-10-31 09:14) [46]Piter © (30.10.05 22:18) [35]
Ты не представляешь, сколько таких прослоек, пока сигнал от клиента дойдет до сервера, но это не дает основания называть это многозвенкой, это понятие логическое, а не физическое.
← →
Polevi © (2005-10-31 10:57) [47]автор сабжа задал вопрос используя тонкий клиент многозвенной системы
← →
Anatoly Podgoretsky © (2005-10-31 11:00) [48]Пусть задает вопрос используя толстый клиент :-)
← →
Polevi © (2005-10-31 11:14) [49]ктож его на сервер пустит :)
← →
Piter © (2005-10-31 11:35) [50]Anatoly Podgoretsky © (31.10.05 9:14) [46]
Ты не представляешь, сколько таких прослоек
откуда такая уверенность?
Reindeer Moss Eater © (31.10.05 8:22) [45]
Piter, стек протоколов по которым ты общаешся с сервером - это тоже отдельная программа
стек протоколов - это программа? :)
Я знаю о промежуточных звеньях.
По-моему, звено - это программа, так сказать фильтр, ТВОЯ программа, которая стоит между непосредственно базой данных и клиентским приложением.
То, о чем ты говоришь - НЕ ТВОИ программы, поэтому и не являются звенов ТВОЕЙ цепи.
Если бы ты изобрел для какой-то базы данных некое аппаратное устройство - то это тоже было бы звеном твоей цепи.
А иначе что такое многозвенка?
Опять же рассмотрим программу, о которой ты упоминал - сидит на порту на сервере, преобразует данные и пеерправляет на порт сервера.
И в каком случае ее можно считать звеном, а?
Если она значит просто сжимает трафик - это значит не многозвенка, ок.
А если она допустим удаляет символы перевода строки #13#10, которые ошибочно посылает клиент (ну вот такое решение сделали) - то это звено?
А если она расширяет SQL, допустим поддерживает комманду LIMIT X, которая ограничивает число возвращаемых результатов в SELECT"е - то это как, звено уже?
А если эта программа реализует некий язык программирования, что-то типа хранимых процедур (допустим, сервер хранимые процедуры не поддерживает) - то это уже звено?
А если она каким-то образом бизнесс логику применяет - это звено?
Где грань?
Я уже ответил, что звено - это любая ТВОЯ программа между сервером и клиентом. И не важно что она делает. Имхо, так.
По умолчанию, трехзвенка вообще ничего не делает, просто пропускает данные.
Вполне может быть другое определение - слушаю.
← →
Polevi © (2005-10-31 11:45) [51]>звено - это любая ТВОЯ программа
IE - это по твоему не звено чтоли ?
← →
Piter © (2005-10-31 11:58) [52]Polevi © (31.10.05 11:45) [51]
IE - это по твоему не звено чтоли ?
немного не понял
← →
Reindeer Moss Eater © (2005-10-31 12:33) [53]Питер, а если этот жмущий шлюз - не моя программа, а программа третьего лица. Она понятия не имеет ни о моем оракле, ни о моем клиенте.
Она просто жмет трафик. Любой трафик. Не только клиента Оракла, а вообще любой.
И не является она звеном многозвенки.
← →
Курдль © (2005-10-31 12:34) [54]Я раньше был ярым противником трехзвенок. Но потом перековался.
На первом же проекте, где потребовался равнозначный доступ клиентов, как из локалки, так и из инета.
Кроме того, для проектов, где существует возможность смены СУБД по желанию заказчиков.
← →
Reindeer Moss Eater © (2005-10-31 12:34) [55]Опять же как быть с модемом и аппаратным жимом потока?
Считать что это звено многозвенки что ли?
← →
Reindeer Moss Eater © (2005-10-31 12:34) [56]Удалено модератором
← →
Курдль © (2005-10-31 12:35) [57]Я раньше был ярым противником трехзвенок. Но потом перековался.
На первом же проекте, где потребовался равнозначный доступ клиентов, как из локалки, так и из инета.
Кроме того, для проектов, где существует возможность смены СУБД по желанию заказчиков.
← →
Reindeer Moss Eater © (2005-10-31 12:37) [58]Я раньше был ярым противником трехзвенок. Но потом перековался.
Здесь никто и не говорит что многозвеньевые системы - это ацтой.
Кроме того, для проектов, где существует возможность смены СУБД по желанию заказчиков.
У меня был успешный проект в котором тип сервера БД менялся кнопкой по желанию юзера.
Двузвенка то была.
← →
Sergey13 © (2005-10-31 12:42) [59]ИМХО многозвенка нужна, что бы разгрузить сервер БД не нагружая этим клиента. 8-)
← →
Курдль © (2005-10-31 12:50) [60]
> Sergey13 © (31.10.05 12:42) [59]
> ИМХО многозвенка нужна, что бы разгрузить сервер БД не нагружая
> этим клиента. 8-)
А вот это мне не понятно! Сервера БД от качественных СУБД сами по себе могут оптимизировать свою производительность так, что доморощенным "примочкам" и не снилось. Напр., в отсутствие ОС, толково работающих с многопроцессорными серверами, оракл умеет с такими работать без какой либо ОС. Умеет сам создавать под себя оптимальную дисковую структуру, управлять ею напрямую, поддерживая RAID и т.д.
← →
Juice © (2005-10-31 12:58) [61]
> автор сабжа задал вопрос используя тонкий клиент многозвенной
> системы
> Пусть задает вопрос используя толстый клиент :-)
После этих слов наступило тотальное просветление "автора" в данном вопросе :)
← →
Курдль © (2005-10-31 13:00) [62]
> Reindeer Moss Eater © (31.10.05 12:37) [58]
> Здесь никто и не говорит что многозвеньевые системы - это
> ацтой.
Я говорю, что это ацтой. Но иногда без него не обойтись.
> У меня был успешный проект в котором тип сервера БД менялся
> кнопкой по желанию юзера.
> Двузвенка то была.
Это как? Утром заносил данные в оракл, а вечером решил их вытащить из информикса? 8-()
← →
Sergey13 © (2005-10-31 13:06) [63]2 [60] Курдль © (31.10.05 12:50)
Существуют, например, задачи, где надо перелопатить большой объем инфы с активным перерасчитыванием (например сложный отчет за год). Т.е. проц занят на 100%, а БД (как хранилище данных) фактически простаивает. И при этом плохо откликается на других пользователей. Вот для подобного, я считаю, и следует применять АПП сервер.
← →
Курдль © (2005-10-31 13:13) [64]
> Т.е. проц занят на 100%, а БД (как хранилище данных) фактически
> простаивает.
Типа "мощный сервак, но слабенькая СУБД"?
← →
Reindeer Moss Eater © (2005-10-31 13:14) [65]Это как? Утром заносил данные в оракл, а вечером решил их вытащить из информикса? 8-()
На удаленных участках стоял IB
В ЦО был MSSQL.
Программа была одна и та же.
Тип сервера менялся в настройках.
Все это было двузвенным.
← →
Курдль © (2005-10-31 13:22) [66]
> Reindeer Moss Eater © (31.10.05 13:14) [65]
И как достигалась целостность данных, например которая в БД решается триггерами?
Логикой работы клиента?
← →
Sergey13 © (2005-10-31 13:25) [67]2[64] Курдль © (31.10.05 13:13)
Ну представь - таблица в 100000 записей содержит входные параметры для некой (абстрактной) процедуры которая к БД (по большому счету) не имеет отношения. Зачем выполнять эту процедуру на сервере БД?
← →
Курдль © (2005-10-31 13:36) [68]
> Sergey13 © (31.10.05 13:25) [67]
> Ну представь - таблица в 100000 записей содержит входные
> параметры для некой (абстрактной) процедуры которая к БД
> (по большому счету) не имеет отношения. Зачем выполнять
> эту процедуру на сервере БД?
Вполне допускаю. Это действительно оправдано. Но мне что-то никогда не приходилось выполнять таких отчетов. Всегда приходится лопатить связанные данные, лезть рекурсиями в БД и т.п.
← →
Sergey13 © (2005-10-31 13:52) [69]2[68] Курдль © (31.10.05 13:36)
>Всегда приходится лопатить связанные данные, лезть рекурсиями в БД и т.п.
Так даже если так, то прикинь. Например ты 1000000 раз запрашиваешь одни и те-же данные, но с разными коэффициентами (из главной таблицы). Вопрос - а зачем каждый раз запрашивать, если возвращается всегда одно и то-же? Может стОит один раз запросить, а потом вертеть на АПП сервере как хочется.
Я не говорю, что так надо делать. Я говорю, что так можно делать. И это будет оправдано в некоторых случаях.
← →
SL (2005-10-31 16:13) [70]Reindeer Moss Eater, ты как-то упомянул о том, что знаешь для чего нужна трехзвенка и сам ее активно используешь.
Может я читал невнимательно, но не нашел твоей версии ответа - для чего же?
Будь добр, если это конечно не военная тайна...
← →
Reindeer Moss Eater © (2005-10-31 16:21) [71]И как достигалась целостность данных, например которая в БД решается триггерами?
Логикой работы клиента?
Это уже десятый вопрос.
Приложение было двузвенным и могло работать с двумя типами серверов.
← →
Курдль © (2005-10-31 16:26) [72]
> Reindeer Moss Eater © (31.10.05 16:21) [71]
> Это уже десятый вопрос.
> Приложение было двузвенным и могло работать с двумя типами
> серверов.
Да как же "десятый", если для меня - это первый вопрос при альтернативе двухзвенка/трехзвенка для разнобазовых систем!
Одно дело - слегка адаптировать логику сервера приложений под новую СУБД.
Другое - переписывать всю серверную логику БД с PL/SQL на TSQL (к примеру).
А если заказчик попросит вовсе неизвестную мне СУБД подключить?
← →
Reindeer Moss Eater © (2005-10-31 16:35) [73]Ну само собой, серверный код БД значительно отличался на этих двух серверах. А клиент был минимально завязан на особенности той или иной платформы.
← →
Piter © (2005-10-31 17:48) [74]Reindeer Moss Eater © (31.10.05 12:33) [53]
Она просто жмет трафик. Любой трафик. Не только клиента Оракла, а вообще любой.
И не является она звеном многозвенки
тогда да - не является. А как иначе?
Если несогласен - прошу дать свое определение многозвенки.
← →
Reindeer Moss Eater © (2005-10-31 19:46) [75]Раз не является, то и система получается классическая клиент-серверная, двузвенная. Но в которой присутствует сжатие потоков данных.
Я про это и говорил.
← →
Anatoly Podgoretsky © (2005-10-31 19:56) [76]Траспорт и разъемы прошу оставить в покое.
← →
Polevi © (2005-11-01 08:13) [77]да что транспорт тут некоторые слой представления не считают звеном
← →
Reindeer Moss Eater © (2005-11-01 09:52) [78]Ну если этот мой компрессирующий шлюз является звеном трехзвенной системы, то я наверное должен иметь возможность реализовать на нем хоть какое-нибудь бизнес правило своей системы.
Так или нет?
И какое же бизнес правило можно реализовать в этом шлюзе или модеме?
← →
ANB © (2005-11-01 09:57) [79]
> Одно дело - слегка адаптировать логику сервера приложений
> под новую СУБД.
> Другое - переписывать всю серверную логику БД с PL/SQL на
> TSQL (к примеру).
> А если заказчик попросит вовсе неизвестную мне СУБД подключить?
>
Трехзвенка в этом все равно не помошник. SQL у оракла и MS SQL настолько разный (особенно хранимок), что чтобы обеспечить совместимость хотя бы на уровне запросов, придется перейти на ANSI и жестоко потерять в производительности и возможностях. Или писать сразу 2 ветки, что явно не снижает трудоемкости. Видел 2 очень отрицательньных примера : ИНФИН (универсальность убила гибкость), новая система для налоговых - ЭОД "АИС Налог" - трехзвенка на MS SQL, которую переносят на оракл уже 6 лет.
ЗЫ. А не пойти ли нам по этому поводу в "потрепаться" ?
← →
Anatoly Podgoretsky © (2005-11-01 10:06) [80]ANB © (01.11.05 09:57) [79]
Не знаю как сейчас, но на старых Ораклах об ANSI не приходилось говорить, там же даже [*] JOIN не был поддержан.
А как сейчас с этим у Оракла?
← →
Juice © (2005-11-01 10:15) [81]Курдль © (31.10.05 13:00) [62]
> Reindeer Moss Eater © (31.10.05 12:37) [58]
> Здесь никто и не говорит что многозвеньевые системы - это
> ацтой.
Я говорю, что это ацтой. Но иногда без него не обойтись.
Меня, как автора вопроса, интересовало именно это "иногда". Коллеги, приведите лучше примеры ситуаций когда без многозвенки просто не обойтись! И на чем по вашему мнению их лучше создавать - CORBA, DataSnap или что-то VS-нетовское? Слышал, что используя .NET многозвенки пишутся НАМНОГО быстрее и качественнее. Это так или просто маркетинг?
← →
Reindeer Moss Eater © (2005-11-01 10:25) [82]Вот пример из личного опыта.
Необходимо предоставить клиенту доступ к данным распределенным по корпоративной филиальной сети.
Клиент не должен заморачиваться с вопросом где какой сервер находится, клиент должен соединившись с одним сервером приложений получить нужные данные. При написании не использовалась ни одна из перечисленных выше технологий.
← →
Курдль © (2005-11-01 10:25) [83]
> Juice © (01.11.05 10:15) [81]
> Меня, как автора вопроса, интересовало именно это "иногда".
> Коллеги, приведите лучше примеры ситуаций когда без многозвенки
> просто не обойтись! И на чем по вашему мнению их лучше создавать
> - CORBA, DataSnap или что-то VS-нетовское? Слышал, что используя
> .NET многозвенки пишутся НАМНОГО быстрее и качественнее.
> Это так или просто маркетинг?
Готов забожиться, что круче, чем "VS-нетовское" я еше не видел!
Изучите книжку "Microsoft .NET Remoting" (Скотт Маклин, Джеймс Нафтел, Ким Уильямс) и вопросов не будет.
← →
Juice © (2005-11-01 10:37) [84]
> Изучите книжку "Microsoft .NET Remoting" (Скотт Маклин,
> Джеймс Нафтел, Ким Уильямс) и вопросов не будет.
Оно и было, вспомнил. Штука действительно волшебная судя по описанию. Но все таки скажите свое веское слово в сторону DataSnap, стоит ли тратить время и практиковаться в ней или нет ? Думаю что нет, но хочу услышать подтверждение своим словам. Этим я закрою для себя тему "технологии Borlanda", не в том плане что забью на них :) а просто наконец-таки все станет на свои места - что когда и в каких случаях использовать.
← →
Курдль © (2005-11-01 10:52) [85]
> Но все таки скажите свое веское слово в сторону DataSnap
К сожалению не могу сказать от себя, т.к. не работал с ней. Но мои коллеги, которые работали с DataSnap, ни в какое сравнение с .NET Remoting ее не ставят.
Лучше я скажу свое слово в сторону .NET Remoting.
С ее помошью можно создать весьма эффективную распределенную систему, даже не углубляясь в ее изучение, а используя примеры на уровне "Hello? World!"
Основа ее идеологии - создание объекта (класса), который реализован и "установлен, активирован..." на одном домене, а используется приложениями на других доменах (компах, хостах и т.п.).
Т.е. описываете класс с методами типаFillSubjectsDataSet(out DataSet ds)
так, что в его теле происходит доступ к БД (это сторона сервера приложения).
А со стороны клиента вызываете эти методы "как родные".
Т.е. вызов со стороны клиента метода навродеRemoteObject1.FillSubjectsDataSet(out ds);
вернет датасэт ds, заполненный нужными данными. (А датасэты в .NET - многотабличны и включают в себя релэйшны и констрэйнты).
← →
Курдль © (2005-11-01 13:11) [86]
> ANB © (01.11.05 09:57) [79]
> Трехзвенка в этом все равно не помошник. SQL у оракла и
> MS SQL настолько разный (особенно хранимок), что чтобы обеспечить
> совместимость хотя бы на уровне запросов, придется перейти
> на ANSI и жестоко потерять в производительности и возможностях.
Это что за догма про потерю производительности?
Зачем нужны ХП, если бОльшую часть работы по защите целостности данных в процессе их ввода, модификации и удаления берет на себя ADO.NET? Насчет триггеров еще можно поспорить, но без ХП отлично работается!
← →
TohaNik © (2005-11-01 13:56) [87]
> А датасэты в .NET - многотабличны и включают в себя релэйшны
> и констрэйнты
Может у меня мозги уже высохли, но толку от многотабличности не увидел.
А связи и ограничения - так за ними и так база следит
> Зачем нужны ХП, если бОльшую часть работы по защите целостности
> данных в процессе их ввода, модификации и удаления берет
> на себя ADO.NET?
Как по мне, так защищать как то надежней средствами самой базы, ну а если с нервами не в порядке так еще и в приложении можно затычек наставить:).
Все ИМХО - .NET этот только пощупал и расстроился, один фиг само не кодится :(
:)
← →
ANB © (2005-11-01 14:06) [88]
> Зачем нужны ХП, если бОльшую часть работы по защите целостности
> данных в процессе их ввода, модификации и удаления берет
> на себя ADO.NET?
Может это и справедливо для MS SQL, т.к. T-SQL довольно ограниченная штука и на клиенте(сервере приложения) многое проще реализовать (ИМХО). Однако на PL/SQL реализуют полностью логику бизнес приложений, используя в качестве клиента обычный браузер. Плюс - хранимки в оракл таки быстрее клиентской обработки.
← →
Курдль © (2005-11-01 15:30) [89]
> TohaNik © (01.11.05 13:56) [87]
> Может у меня мозги уже высохли, но толку от многотабличности
> не увидел.
> А связи и ограничения - так за ними и так база следит
Мы тут про трехзвенку?
Ну так прикинь, к примеру:
На клиентском приложении открылось окно ввода юридического лица. А к нему "привязан" датасэт. В этом датасэте штук пять таблиц - собственно субъект, его адреса, его счета, руководители и ответственные лица и т.п. Причем все связано релэйшнами, дополнены индексами и проверочными условиями.
И на самом первом этапе ввода данных юзером уже пройдут проверки типа "не заданы ли два юр.адреса", "не введено ли более одного главбуха" и т.п.
В результате - чистые данные, готовые к отправке на сервер приложений, который имеет описание дого же датасэта и готов принять эти данные "всем списком". И на его стороне есть класс - наследник от дата-адаптера, который без какого либо ручного программирования заносит данные в БД в нужной последовательности, со всеми доп. проверками, записью в журнал логов и т.п.
> Как по мне, так защищать как то надежней средствами самой
> базы, ну а если с нервами не в порядке так еще и в приложении
> можно затычек наставить:).
А защиту целостности базы никто и не отменял! Но для этого вполне достаточно правильной структуры БД и в сложных местах - парочку-тройку триггеров.
← →
ANB © (2005-11-01 16:28) [90]
> который без какого либо ручного программирования заносит
> данные в БД в нужной последовательности, со всеми доп. проверками,
> записью в журнал логов и т.п.
Хочу .Net !!!. Вообще то гуляла у меня мысля занятся этим в делфи. Но если .Net так крута, то зачем изобретать велосипед. Хотя берут меня жмуткие сомнения, что это все корректно работает и без ручного программирования. Иначе зачем бы народ покупал дорогущий Oracle Application, в котором без ручного программирования все равно не обойтись ? Все имхо.
← →
Val © (2005-11-01 16:31) [91]Но для этого вполне достаточно правильной структуры БД и в сложных местах - парочку-тройку триггеров.
...а в триггерах дублирование кода :) зачем вслепую отказываться от предлагаемых возможностей сервера? все равно ведь в теле триггера на диалекте писать будете :)
← →
Курдль © (2005-11-01 16:41) [92]
> ANB © (01.11.05 16:28) [90]
Без ручного программирования - никак! Я этот пример про трехзвенку прям с открытого проекта привожу. Точнее с решения (solution), которое включает 11 проектов (около 4000 файлов). Но в VS это настолько запросто живет и поддерживается, что не замечаешь масштабности.
Однозначно скажу, что есть предел глобализации проекта, когда уже усложнять невозможно - все рушится, друг с другом не согласуется, конфликтует и т.п.
У Делфей этот порог гораздо ниже.
А на "Oracle Application, forms, discoverer..." или на САП любят себя автоматизировать крупные монстроидальные корпорации. Во-первых, бабло удобно списывать, во-вторых - штат невдолбенно дорогих спецов "из своих" прикармливать и понты бросать. Есть предубеждение, что на "полупрограммируемых полуфабрикатах" типа перечисленных или даже совсем убогонькой 1С, поддерживать и совершенствовать систему проще. Типа "не в исходниках копаться, а модулями ворочать и скрипты подстраивать".
← →
Курдль © (2005-11-01 16:48) [93]
> Val © (01.11.05 16:31) [91]
> ...а в триггерах дублирование кода :) зачем вслепую отказываться
> от предлагаемых возможностей сервера? все равно ведь в теле
> триггера на диалекте писать будете :)
Не поверишь - сейчас рабочая база (с которой компания активно работает больше 2-х лет), в которой около 100 таблиц, многие из которых содержат более миллиона записей, не имеет ни одного триггера. Есть одна хранимая процедура - возвращает версию последнего апгрэйда базы.
← →
TohaNik © (2005-11-01 16:59) [94]
> Курдль © (01.11.05 15:30) [89]
Ну допустим с главбухами и юр. адресами так тут нужно понятие актуальной записи завести по дате смены оных, но дело не в этом.
Например есть у нас ИНН на тыщ 20 контрагентов, ну не вижу я смысла проверять ни на каком уровне кроме как самой базой, тоже со счетами в комбинации с МФО.
Ну всеравно это "всем списком" не приведет ни к чему хорошему, тем более чем больше связей в сущности(многотабличном датасете) тем быстрее и не приведет.
← →
Val © (2005-11-01 16:59) [95]почему же не поверю, всякое бывает :) мне все-равно сколько у вас там триггеров, только непонятно, к чему вы это...я оспариваю ваше высказывание о ненужности хп вообще-то :)
← →
TohaNik © (2005-11-01 17:06) [96]
> Не поверишь - сейчас рабочая база (с которой компания активно
> работает больше 2-х лет), в которой около 100 таблиц, многие
> из которых содержат более миллиона записей, не имеет ни
> одного триггера. Есть одна хранимая процедура - возвращает
> версию последнего апгрэйда базы.
Ну почему не поверим, охотно поверим, наверняка причины были.
Оч интересно какие?
← →
Курдль © (2005-11-01 17:09) [97]
> TohaNik © (01.11.05 16:59) [94]
> Ну всеравно это "всем списком" не приведет ни к чему хорошему,
> тем более чем больше связей в сущности(многотабличном датасете)
> тем быстрее и не приведет.
Разве не прЭлЭстно, когда датасэт копирует часть модели БД? Уверяю, что это весьма упрощает понимание БД, пограммирование доступа к БД и служит дополнительной защитой целостности данных.
> Val © (01.11.05 16:59) [95]
> непонятно, к чему вы это...я оспариваю ваше высказывание о ненужности хп вообще-то :)
А я не говорил о не нужности ХП в глобальном масштабе. Я говорил, что без них легко можно обойтись на уровне сервера приложений, если требуется проект, который может быть приспособлен к какой угодно СУБД на выбор заказчика. И это все вытекало из пользы трехзвенки, что напрямую связано темой топика! :)
← →
Val © (2005-11-01 17:12) [98]>[97] Курдль © (01.11.05 17:09)
сорри тогда, не врулил. с этим согласен.
← →
TohaNik © (2005-11-01 17:32) [99]
> Разве не прЭлЭстно, когда датасэт копирует часть модели
> БД? Уверяю, что это весьма упрощает понимание БД, пограммирование
> доступа к БД и служит дополнительной защитой целостности
> данных.
Неужели без понимания БД стоит этот датасет создавать.
Что значит дополнительная защита целостности? Если она дополнительная в приложении к защите в базе то ее смысл наверняка в пояснительных диалогах и т.п., если нет то она не дополнительная, а основная т.к. база эту целостность не обеспечивает.
Я не придираюсь, просто был свидетелем и потенциальным участником проекта с использованием этих самых многотабличных датасетов.
Ну если на вводе данных с относительно постоянными справочниками все было еще нормально, то ввод данных требующий контроля по активно изменяющимся данным приводил к неадекватным результатам.
Кривизны рук не исключаю, скорее даже кривизны головы руководителя проекта.
← →
Курдль © (2005-11-01 17:43) [100]
> Я не придираюсь, просто был свидетелем и потенциальным участником
> проекта с использованием этих самых многотабличных датасетов.
А я не могу понять, разве работа с сущностью, которая предполагает использование пяти таблиц, легче происходит с пятью разрозненными делфевыми датасэтами, чем с одним пятитабличным ADO.NET-овским?
> Неужели без понимания БД стоит этот датасет создавать.
Я в конкретный момент работаю над окном ввода и редактирования документа определенного типа. Передо мною, как всегда в таких случаях, напечатанная физическая субмодель БД, содержащая все таблицы касающиеся работы с документами, их связи, первичные и внешние ключи, поля, их типы и т.п. И как же удобно, когда на экране открыта схема датасэта, являющегося фрагментом этой субмодели!
← →
TohaNik © (2005-11-01 17:58) [101]
> И как же удобно, когда на экране открыта схема датасэта,
А никто и не спорит что видеть удобно, я про "всем списком" из [89], тем более для пяти таблиц. Для того же контрагета, в чем преимущество вставки скопом шапки и и списка банковских реквизитов?
> пятью разрозненными делфевыми датасэтами
Разрозненный он и один может быть, смотря что понимать по разрозненностью.
← →
TohaNik © (2005-11-01 17:59) [102]
> И как же удобно, когда на экране открыта схема датасэта,
А никто и не спорит что видеть удобно, я про "всем списком" из [89], тем более для пяти таблиц. Для того же контрагета, в чем преимущество вставки скопом шапки и и списка банковских реквизитов?
> пятью разрозненными делфевыми датасэтами
Разрозненный он и один может быть, смотря что понимать по разрозненностью.
← →
Polevi © (2005-11-02 10:03) [103]непонятно нафига тащить схему хранилища на клиента
клиенту вообще по барабану в каком виде это все хранится
я сторонник того чтобы максимально логику на сервере держать
и сопровождать удобнее, на лету, без перекомпиляций и остановки работы юзерей
а что касается метода который датасет возвращает так это отлично работает на мидас
← →
Курдль © (2005-11-02 10:28) [104]
> Polevi © (02.11.05 10:03) [103]
> непонятно нафига тащить схему хранилища на клиента
> клиенту вообще по барабану в каком виде это все хранится
Ты не работал с VS.
Повторю свой пример - датасэт с таблицей юриков, их сотрудников и их банковских счетов.
"Бросаешь" такой датасэт на форму, бросаешь туда же DataGrid а лучше - dxControlGrid и получаешь таблицу с раскрывающимися нодами (типа аутлук), в которых на верхнем уровне иерархии юрики, а на следующем - все остальные.
Кроме того, я считаю бесценной возможность "гулять" по релэйшнам типа GetChildRows, GetParentRow. Есть и другие приятные возможности, которые на "однотабличном" датасэте реализовывать затибидохаешься.
← →
TohaNik © (2005-11-02 10:49) [105]
> "Бросаешь" такой датасэт на форму, бросаешь туда же DataGrid
> а лучше - dxControlGrid и получаешь таблицу с раскрывающимися
> нодами (типа аутлук), в которых на верхнем уровне иерархии
> юрики, а на следующем - все остальные.
Ой насмотрелся я этих гридов.
Ну неужели это удобно, от плюсиков и минусиков в глазах рябит, а в известном мне проекте еще и меню (типа аутлук) на четверть экрана сбоку, как жертва рекламы
← →
Polevi © (2005-11-02 10:50) [106]>Курдль © (02.11.05 10:28) [104]
это все круто конечно, но
клиенту должно быть по барабану в каком виде это все хранится
← →
Курдль © (2005-11-02 10:58) [107]Ну все, мне уже тяжко спамить на эту тему :)
Я сам раньше очень любил программировать на ассемблере, но винды всю малину испортили. А теперь еще эта поганая .NET! :)
← →
freejack (2005-11-02 11:07) [108]>TohaNik © (02.11.05 10:49) [105]
Если не секрет какой проект имелся в виду? Что-то до боли знакомое...
← →
TohaNik © (2005-11-02 12:12) [109]
> Если не секрет какой проект имелся в виду? Что-то до боли
> знакомое...
Не думаю что знакомое...
Просто на одно из предприятий приехали бывшие советские граждане и решили показать как надо работать чтобы за год создать систему управления предприятием. А за год потому что VS и NET, а еще потому что они официальные представители MS. :)
← →
ali_tash (2005-11-02 19:54) [110]они нужны чтоб откатать бабки за сервер приложений.
ГЫ ГЫ
Страницы: 1 2 3 вся ветка
Форум: "Базы";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
Память: 0.8 MB
Время: 0.017 c