|
|
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
skmdevelopercarperЕсть, разумеется, еще чисто российский путь, когда некая система навязывается гос. органами, но тут уж о какой архитектуре речь :( Извините, но это из области мифологии неудачников. Во-первых, почему это вы сразу решили, что я про 1С ? :) Разве такая уважаемая компания, как 1С может позволить себе навязывание столь нечистоплотными методами ? Я, кое-где упомянал 1С, но нигде не говорил про ее ангажированность, или я ошибаюсь? Можно небольшую цитату из моих сообщений? Может я про сбербанковский Банк Клиент, или программу проверки отчетности при сдаче оной в пенсионный фонд? Вы видели это чудо в перьях (последний год значительно лучше, но прежние версии ...) ? Во-вторых, автор1С у него есть явное преимущество для пользователя - оно работает. Без привлечения высокооплачиваемых программистов, которые исправляют многочисленные ошибок. Без крутых SQL гуру, которых по крайней мере в наших краях километров на 500 нет ни одного. Без дорогостоящей поддержки. Вот это как раз миф (дикий оффтопик в этой теме, но ладно уж, не я начал): - из коробки оно работает, иногда, в ларьке, во всех серьезных случаях оно внедряется, долго и дорого; - специалисты, которые внедряют 1С вовсе не так уж дешевы, если конечно не обзывать специалистами тетечек с одномесячных курсов; - про цену поддержки и как без нее работается мне, пожалуйста, не рассказывайте, на наше несчастье опыт здесь у нас как бы не поболее вашего, если вы конечно не внедренец; - рассуждать про 1С, как программный продукт несколько некорректно по самой своей сути, т.к. на основе базового функционала, а иногда и переделывая даже его, создано множество никак не связанных друг с другом программ, иногда по своей цене и сложности значительно превосходящие базовый функционал. В общем-то обзывать программу "1С" это все равно, что обзывать любую программу, написанную с использованием Delphi - "Delphi" же. - не надо хаять Парус, я за него все равно заступаться особо не буду, разве что, на основе своего же опыта, скажу, что внедряется он обычно очень не плохо, и все у них работает, и намного стабильней, и в очень крупных организациях, но тоже дорог и, к тому же, потерял большую часть рынка, имеет меньше спецов его знающих и т.п. В-третьих, вы усмотрели в 1С какое-то интересное решение относящиеся к теме данного топика, или так, заступиться решили, услышав про некие нехорошие фирмы? авторПО 1С не лучшее ни по какому параметру, - Не верно, как минимум, оно лучшее по оперативности отражения изменений в российском законодательстве, лучшее по маркетингу и лидер по числу (не качеству) независимых решений созданных под ее эгидой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 18:23 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
VoDAЕгоров АлександрМассовая обработка данных - это, например, поток заявок покупателя, каждую позицию которых нужно проверить на корректность скидки? Представляете какой трафик поднимется между СП и БД, если таких заявок забивается тысячи в день, и в среднем состоят из десятков позиции, а некоторые и до сотни? ;) согласен, что оперирование массивом данных проще на СУБД. А я говорю не о массиве. Я говорю о нормальной рабочей ситуации - рабочий поток документов. Просто их много, они приходят из разных мест и упираются в СП. Ведь всё у нас делает он, и проверкой, и "проведением", и "пересчетом итогов", и получением данных для отчетов, и т.д. и т.п.... А СУБД просто занимается хранением данных в более удобном виде, чем куча отдельных dbf-ов, и возможностью бакапить эти данные в онлайне. VoDAВот пару лет назад нам аутсорсили софт для формацевтических лабораторий, а в прошлом году эм... софт для голосового управления / помощи работникам складов перепиливали под нужды ... сортировочного цеха. Системы совсем не связанные друг с другом. Только принципы остаются общие, да написаны на одних и тех же фреймворках (Java) + требуют одинаковые сервера. Ну как я и думал - разработка на заказ. И никаких тиражных систем "для среднего бизнеса". Везет Вам. :) Собсно и вопросы про поддержку тогда снимаются - у Вас просто не может возникнуть ситуации, когда один проект разваливается на две ветки из-за прихоти клиентов :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 18:42 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
В 1С в основном вся логика на клиенте. С точки зрения производительности (да и со многих прочих) это не оптимальный вариант. Но есть одно "но", решающее для пользователя. ПО без ошибок не бывает, тот кто утверждает обратное, мягко говоря лукавит. Но если в случае реализации логики в клиентской части найти ошибку, используя отладчик, и даже устранить ее может человек немного разбирающийся в программировании (я лично такой, не более), то в случае бизнес-логики на сервере это разгрести может только программист-гуру или скорее всего только тот, кто это написал. Столкнется с этим пользователь у кого под рукой нет гуру от программирования, а это почти весь мелкий и средний бизнес и плюнет на недостатки в функционале и заточенности под его бизнес и выберед средненькое, попсовое, но по крайней мере работает. Так что в большинстве случаев бизнес-логика на стороне клиента, по моему мнению наилучшее. Современные компьютеры уже достаточно мощные для этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 19:17 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
VoDAОпять же в совсем больших системах с сотнями апп-серверов переносить БЛ с Апп на СУБД... ИМХО убьет производительность.Давайте немного посчитаем. Огрубим понятие "трафик" до "запрос" и возьмем наш пример с проверками на скидки. Будем считать, что документ проверку пройдет. Обработка ошибок нам сейчас непринципиальна. Возьмем вырожденный случай - Клиент выписал 1 заявку с 1 позицией в ней. Вариант с логикой проверки и обработки на СП: 1. Клиент->СП = 2 запроса (передача заголовка заявки+строки товар\количество). 2. СП -> БД = запрос из "Таблица стоимости товара" по @ID 3. БД -> СП = Стоимость товара @ID 4. СП -> БД = запрос из "Таблица ввода товара впродажу" 5. БД -> СП = Дата ввода товара 6. СП -> БД = запрос из "Таблица разререшений менеджеров по товару" 7. БД -> СП = Флаг разрешения менеджера по товару @ID 8. СП -> БД = запрос из "Таблица свободных остатков по товару" 9. БД -> СП = количество свободных остатков тут СП убедился, что по текущей БЛ заявку можно принять. 11. СП -> БД = 2 запроса (записать шапку заяки + записать строку товар\количество) тут СП резервирует товар по текущей БЛ 12. СП -> БД = 1 запрос ("уменьшить количество свободных остатков") 13. СП -> Клиент= "Заявка принята". "Трафик СП<->БД" = " Д окументов" * (2 + 11 * " С трок"). Вариант с логикой проверки и обработки на БД: 1. Клиент->СП = 2 запроса (передача заголовка заявки+строки товар\количество). 2. СП -> БД = 2 запроса (заголовок+строка). 4. СП -> БД = exec RequestCheck(@IDDOC) 5. БД -> СП = Check passed. No Errors found. 6. СП -> БД = exec RequestApply(@IDDOC) 7. БД -> СП = Request applied successfully. 8. СП -> Клиент = "Заявка принята". "Трафик СП<->БД" = Д * (1 + С + 6) . Пускай в день выписывается 1000 заявок по 20 строк в каждой. Вариант 1 = 1000*(2+11*20) = 222000 "запросов" Вариант 2 = 1000*(1+20+6) = 27000 "запросов". Теперь добавляем условие "...а если клиент...": Вариант 1. Добавляются запросы 7.1 СП -> БД = запрос из "Таблица контрагентов" 7.2 БД -> СП = Тип контаргента @ID Формула меняется на Д * (2 + 13 * С). Дневной трафик увеличивается до 262000 "запросов" Вариант 2. Ничего не добавляется и трафик остается неизменным. Меняем документооборот на 1000 заявок по 50 строк: Вариант1: 1000*(2+13*50)=652000 "запросов" Вариант2: 1000*(1+50+6)=57000 "запросов" Понимаю, что цифры эти не более чем "попугаи", но стоит подумать о разнице нагрузки на порядок и геометрическую зависимость от сложности БЛ. Кластер из "сотни Апп-серверов" нас, конечно, выручит. ;) Но ведь кластер - это не только серверное железо, это еще и внешние дисковые массивы, и сверхскоростные межсерверные коммуникации. А это тянет за собой грамотного админа, дорогостоящего помещения с вентиляцией и кондиционированием. Да и бесперебойное питание всему эту делу понадобится немаленкое... И все потому, что разработчику невыгодно держать в штате БД-программиста?.. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 20:02 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
skmdeveloperВ 1С в основном вся логика на клиенте. С точки зрения производительности (да и со многих прочих) это не оптимальный вариант. Уже можно в 1С тот же самый код клиента выполнять и на сервере приложений. Не без ньюансов, но можно. Правда, на работу платформы с БД это никак не сказывается :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 20:18 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
alneoСвято верю, что бизнес-логика должна лежать в бизнес-слое, возможно частично в сервисном(API). Для нача определитесь что зверь такой бизнес-слой. Tier vs Layer многие путают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 20:27 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
skmdeveloperв случае реализации логики в клиентской части найти ошибку, используя отладчик, и даже устранить ее может человек немного разбирающийся в программировании (я лично такой, не более), то в случае бизнес-логики на сервере это разгрести может только программист-гуру или скорее всего только тот, кто это написал. кто о чем, а мы про грибы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 20:29 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
iscrafmalneoСвято верю, что бизнес-логика должна лежать в бизнес-слое, возможно частично в сервисном(API). Для нача определитесь что зверь такой бизнес-слой. Tier vs Layer многие путают. Это же верующий человек! :) Определяться - это же от лукавого! :) Странно только, почему апологеты "объктной бизнес-логики" в большинстве случаев используют именно РСУБД. При этом активно отрицая их возможности, делая из них простые "dbf-помойки", лепя костыли из ORMа и удивляясь, что это оно так медленно работает... Вместо использования готовых ООБД, которые под это дело самое оно и не нужно никаких костылей? Неужели только потому, что в MSVS нет нормально драйвера для Cache, а для MSSQL есть? ;) Или потому, что в Java о поддержки того же Cache что-то вообще не слыхать? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 21:34 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров Александр Вариант1: 1000*(2+13*50)=652000 "запросов" Вариант2: 1000*(1+50+6)=57000 "запросов" Все отлично. А теперь учтите, что все запросы из варианта 1 нужно выполнять и в варианте 2. Отличие только в том, что по сети их гонять не надо. И так имеем: "Нагрузка" на сервер базы данных: Вариант 1. 652000 Вариант 2. 709000 + еще некая математика "Нагрузка" на сеть: Вариант 1. 652000 Вариант 2. 57000 Остается только сравнить "пропускную способность" сети и сервера базы данных и понять в каком из двух вариантов мы раньше "упремся". Вряд ли ответ столь очевиден. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 22:17 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрСтранно только, почему апологеты "объктной бизнес-логики" в большинстве случаев используют именно РСУБД.Знаете любителе выпить пива на футболе вполне адекватно воспринимают кофе по утрам. Вас это не удивляет? Умные люди для разных задач используют разные инструменты. Для реализации бизнес-логики одни, для хранения данных - другие. И для каждой задачи стараются выбрать наиболее подходящий инструмент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 22:29 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
iscrafmskmdeveloperв случае реализации логики в клиентской части найти ошибку, используя отладчик, и даже устранить ее может человек немного разбирающийся в программировании (я лично такой, не более), то в случае бизнес-логики на сервере это разгрести может только программист-гуру или скорее всего только тот, кто это написал. кто о чем, а мы про грибы. Я о реальной жизни а не о грибах. ПО, какими бы замечательными характеристиками не обладало, но вокруг которого обязательно должны бегать с бубном SQL-гуру и еще толпа узких специалистов, обязательно будет занимать мизерную долю на рынке, за исключением специфических случаев - обработки больших объемов информации, высоконагруженных систем и т.д. И тем дальше, тем эта тенденция будет сильнее. Потребительские качества продукта важнее всех остальных вместе взятых. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 22:34 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey...для реализации бизнес-логики одни, для хранения данных - другие. И для каждой задачи стараются выбрать наиболее подходящий инструмент. думаю, что основная нить этого спора (или милой беседы) как раз в том, чтобы исключить крайности. Реализовать всю БЛ только средствами СП с одной стороны, реализовать все только средствами СУБД - с другой. Имхо, большая ошибка изначально делать ставку на такие ортодоксальные варианты. Гибче, гибче... и мягче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 23:23 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
skmdeveloperПО, какими бы замечательными характеристиками не обладало, но вокруг которого обязательно должны бегать с бубном SQL-гуру и еще толпа узких специалистов, обязательно будет занимать мизерную долю на рынке нельзя сказать, что SQL является узкой специализацией. Даже, судя по этому форуму, русский язык является гораздо более специализированным знанием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 23:25 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрКакая такая поддержка? :) Сказано же - "новый контракт + новая разработка + новое внедрение" ;) Вопросы про поддержку я задавал тут , тут и тут. Ответов пока нет :)вероятно вопросы ко мне авторСкажите, у Вас большая служба поддержки? Что происходит у Вас, когда одному клиенту внедрена система с аудитом, а другому - без?размер "служб поддержки" мне не известен. вероятно она есть по сути мы разрабатываем конкретные решения и разработчики сами их "поддерижвают". У нас конкретные решения, пока я не сталкивался с "Что происходит у Вас, когда одному клиенту внедрена система с аудитом, а другому - без?". Хотя у одного из заказчиков было подобное. Решено было интересно: было сделано ядро системы имеющее ВЕСЬ функционал. Дальше, в случае необходимости, через IoC любая логика перекрывалась кастомизацией. Хотя БЛ для некоторых заказчиков перепахивала пол-системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 23:54 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрСобсно и вопросы про поддержку тогда снимаются - у Вас просто не может возникнуть ситуации, когда один проект разваливается на две ветки из-за прихоти клиентов :)Был такой проект - у него было 8+1 ветки: ядро (базовая БЛ) и 8 несвязанных кастомизаций (БЛ под конкретного заказчика / страну / законы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 23:57 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрПонимаю, что цифры эти не более чем "попугаи", но стоит подумать о разнице нагрузки на порядок и геометрическую зависимость от сложности БЛ. Кластер из "сотни Апп-серверов" нас, конечно, выручит. ;) Но ведь кластер - это не только серверное железо, это еще и внешние дисковые массивы, и сверхскоростные межсерверные коммуникации. А это тянет за собой грамотного админа, дорогостоящего помещения с вентиляцией и кондиционированием. Да и бесперебойное питание всему эту делу понадобится немаленкое... И все потому, что разработчику невыгодно держать в штате БД-программиста?.. ;)я привел несколько другой пример возьмем к примеру ebay - вы думаете у них логика в СУБД живет? А почему? А если вы будете проектировать систему типа ebay куда вы вынесите логику? PS у нас в одном из проектов БД мелко нашинкована между Oracle-овыми инстансами. СУБД-хи уже затыкаются на записи. зареганых пользователей у системы вроде около 0,5 млн. И DBA у них пачка сидит и программеров целый штат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 00:03 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрМеняем документооборот на 1000 заявок по 50 строк: Вариант1: 1000*(2+13*50)=652000 "запросов" Вариант2: 1000*(1+50+6)=57000 "запросов"теперь прикинем что есть устройства генерирующие эти "запросы". Сама обработка запроса имеет нагрузку эм... 100 MHz и длительность 10 секунд, обращения каждые 30 секунд, CPU на СУБД - 2 000 MHz. Тогда какие то 60 устройств выведут СУБД из строя ибо CPU на управление данными уже не останется - все уйдет на обработку запросов клиентов. Ставим 2 АппСервера той же мощности CPU и СУБД опять дышит свободно Причем мы имеем гарантию что не нужно апгрейдить железо если клиентов станет больше - будем докупать компьютеры и линейно масштабировать систему. PS на указание про загрузку сети скажу, что и 1Gbit уже существует и распределенные кэши придуманы чтобы лишний раз СУБД не дергать когда ответ и так известен. Так что не все однозначно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 00:13 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyОстается только сравнить "пропускную способность" сети и сервера базы данных и понять в каком из двух вариантов мы раньше "упремся". Вряд ли ответ столь очевиден.А почему Вы считаете, что на SQL сервере будет выполняться "построчная" проверка? В выбранном примере проверка всех условий по всем строкам одного документа - это один "запрос". Выполненный приложением, которая оптимизирована на такие запросы. И почему Вы считаете, что "+еще некая математика" на сервере БД потребует бОльшей нагрузки, чем на сервере приложений? Bogdanov AndreyУмные люди для разных задач используют разные инструменты. Для реализации бизнес-логики одни, для хранения данных - другие. И для каждой задачи стараются выбрать наиболее подходящий инструмент.Умные люди по-максимому используют возможности РСУБД. А не используют их только для хранения данных. Вопрос-то почему другие умные люди не используют по-максимому возможности ООБД? Или Вы считаете, что РСУБД - это самый подходящий инструмент для ОО-работы с данными? Или Вы считаете, что ООБД не лучший инструмент для ОО-работы с данными? Или Вы сомневаетесь, что РСУБД имеет какие-либо преимущества перед ООБД в умении хранить данные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 03:54 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
VoDAтеперь прикинем что есть устройства генерирующие эти "запросы". Сама обработка запроса имеет нагрузку эм... 100 MHz и длительность 10 секунд, обращения каждые 30 секунд, CPU на СУБД - 2 000 MHz. Тогда какие то 60 устройств выведут СУБД из строя ибо CPU на управление данными уже не останется - все уйдет на обработку запросов клиентов. Я вроде нигде не говорил, что все нужно делать в БД. "Вся логика только в БД" это такая же крайность, как и "Вся логика только на СП" или "Вся логика только на клиенте". Я говорю лишь о том, что "бизнес-логика" имеет вполне разделяемые части. Одну из которых, "манипуляцию данными", лучше всего размещать в СУБД, которая для этого и предназначена. И давайте посмотрим Ваш вариант: CPU на СУБД - 2000Mhz, CPU на СП - тоже 2000MHz. Обработка Клиент<->СП - 3 "запроса", обработка БД<->СП в первом варианте - 13 "запросов", во втором - 5 запросов. То есть использование варианта "обработка данных на СП" в два раза больше грузит и СУБД, и СП. СУБД имеет даже больший чем в два раза увеличенный поток "клиентских запросов" (ведь СП для СУБД тоже клиент), СП в два раза больше занят "отправкой запросов к БД и обработкой ответов"... И при усложнении "бизнес-логики" эти лишние "вопросы-ответы" растут геометрически, хотя могли бы расти арифметически... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 04:49 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
VoDAPS у нас в одном из проектов БД мелко нашинкована между Oracle-овыми инстансами. СУБД-хи уже затыкаются на записи. зареганых пользователей у системы вроде около 0,5 млн. И DBA у них пачка сидит и программеров целый штат. Я правильно выделил? ;) Помимо оплаты самого проекта, клиенту пришлось прикупить еще пачку DBА с программерами? Или они там были изначально? Если это ваш проект, значит именно так Вы и спроектировали. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 04:56 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
skmdeveloperЯ о реальной жизни а не о грибах. ПО, какими бы замечательными характеристиками не обладало, но вокруг которого обязательно должны бегать с бубном SQL-гуру и еще толпа узких специалистов, обязательно будет занимать мизерную долю на рынке Вот странно, почему вокруг 1С "бегающие с бубном SQL-гуру и еще толпа узких специалистов" позволяют 1Су даже расширять свой рынок? :) Вы же вроде сами работаете с 1С? Когда столкнетесь с проблемами быстродействия и масштабируемости 1С, особенно после того, как владелец начнет задавать вопросы типа "как это опять сервер надо покупать??? в прошлом году только купили, тебе опять мало???" - сами быстро станете и "SQL-гуру", и "узким специалистом", и с бубном танцевать научитесь. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 05:08 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Наоборот, в случае реализации бизнес логики на клиенте мы разгружаем сервер и нового сервера ежегодно уже не нужно покупать. Нельзя делать предположения о причинах потери на основе эмпирических умозаключений. Зачастую потери в быстродействии в 1С по причине неэффективно написанного кода. Посмотрите исходный код 1С-вских конфигураций. Местами складывается впечатление, что там писали студенты-первокурсники. Простой пример. Раньше в 1С Бухгалтерии 7.7 не было акта сверки с контрагентами. Я году так примерно в 2001 написал. Все довольны. Со временем акт сверки появился и в типовой конфигурации. У одних моих клиентов в довольно большой по нашим масштабам организации получалось, что акт сверки формируется непозволительно долго - до 10 минут. Я поставил свой, написанный давным давно отчет. Формируется меньше минуты. Роб Пайк Роб Пайк (англ. Rob Pike) предложил следующие «правила» в качестве аксиом программирования.[1] Одновременно эти правила могут выражать точку зрения на философию UNIX: * Правило 1: Вы не знаете, где программа начнёт тормозить. Узкие места возникают в неожиданных местах, поэтому не стройте догадки и изучайте скорость работы программы до тех пор, пока не удостоверитесь, что узкое место найдено. * Правило 2: Измерение. Не оптимизируйте скорость до тех пор, пока её не измерите, и даже если вы проверили какую-то часть кода с узким местом, проверьте остальные. * Правило 3: Изощрённые алгоритмы являются медленными, если n мало, а n обычно мало. В изощрённых алгоритмах присутствуют большие константы. До тех пор, пока вы не убедитесь, что n часто становится большим, избегайте изощрённости (даже если n становится большим, вначале используйте правило 2). * Правило 4: Изощрённые алгоритмы чаще подвержены ошибкам, чем их простые аналоги, также их гораздо сложнее реализовать. Используйте простые алгоритмы наряду с использованием простых структур данных. * Правило 5: Данные преобладают. При правильной и хорошо организованной структуре данных, алгоритмы становятся очевидными. Структуры данных, а не алгоритмы, являются центральной частью в программировании. * Правило 6: Правила 6 нет. http://ru.wikipedia.org/wiki/%D0%A4%D0%B8%D0%BB%D0%BE%D1%81%D0%BE%D1%84%D0%B8%D1%8F_UNIX]http://ru.wikipedia.org/wiki/Философия_UNIX] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 07:30 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрVoDAPS у нас в одном из проектов БД мелко нашинкована между Oracle-овыми инстансами. СУБД-хи уже затыкаются на записи. зареганых пользователей у системы вроде около 0,5 млн. И DBA у них пачка сидит и программеров целый штат. Я правильно выделил? ;) Помимо оплаты самого проекта, клиенту пришлось прикупить еще пачку DBА с программерами? Или они там были изначально? Если это ваш проект, значит именно так Вы и спроектировали. ;)выделили правильно я работаю в компании которая ко всему прочему аутсосер. Сколько в сумме компаний пилит ту систему и сколько ДБА сидит на подержке - ХЗ. По сути вся компания-заказчик это разработчики&DBA + разработчики&DBA от нас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 09:41 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрА почему Вы считаете, что на SQL сервере будет выполняться "построчная" проверка? В выбранном примере проверка всех условий по всем строкам одного документа - это один "запрос". Выполненный приложением, которая оптимизирована на такие запросы. И почему Вы считаете, что "+еще некая математика" на сервере БД потребует бОльшей нагрузки, чем на сервере приложений? Одна строчка в описании запросов еще не значит одного запроса. И чтобы объяснить оптимизатору, как правильно построить план запроса все разработчики должны досконально разбираться с используемой СУБД ( а если их несколько ? ). Второй момент - и запросы, и логика выполняются на одной и той же системе. То есть как минимум ( считая что язык процедур СУБД как минимум столь же эффективен, как на сервере приложений ), требования к системе суммируются. Об этом ниже. Егоров АлександрУмные люди по-максимому используют возможности РСУБД. А не используют их только для хранения данных. Умным людям еще и деньги считать приходится. Поэтому кроме технических требований, к системе накладываются еще и финансовые. В приведенном вами примере, все рассчитано из предположения, что за каждой порцией данных сервер приложений лезет в базу. Но любой продавец сразу скажет - есть небольшое количество ходовых товаров, которые берут все, а экзотические заказы случаются достаточно редко. В плане приведенного примера это значит что информация о таких товаров попадает в кеш сервера, и количество запросов чтения будет на порядок а то и два меньше взятого "в лоб". Сервера могут работать паралельно, обслуживая своих клиентов или свои кусочки пакетного задания. В результате, при логике на сервере - имеем несколько относительно дешевых машин, в противном случае - многопроцессорную суперсистему, или кластер из таких монстров, еще и требующий скоростной storage. Стоимость и железа, и лицензий во втором случае будет куда как выше... Ну и разрабатывать систему разделенную на относитьельно слабо связанные части, которые можно распределить между разными людьми и тестировать отдельно тоже дешевле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 09:48 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
когда о СУБД и бизнес-логике системы говорят как о "слабо связанных частях", возникает естественный вопрос: а о каких системах вообще речь идет, в которых логика слабо связана с данными. Похоже, что это интернет-проекты, в принципе имеющие косвенное отношение к бизнес-приложениям. Похоже просто сошлись разработчики интернет-порталов и разработчики учетных, производтсвенных и аналитических систем. Первым естественно не очень понятно, почему вторые так привязались к базе данных, что они там ценного нашли. Зато понятна причина java-мании. Так можно до бесконечности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 10:20 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36443344&tid=1542824]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
171ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 216ms |
| total: | 505ms |

| 0 / 0 |
