И еще о графах. Исследование операций.

Статья-ссылка о распределенных вычислениях и применении параллельных технологий при решении задач управления (в самом широком смысле).

Казалось бы, исследование операций – весьма отдаленная от интересов 1С-ников сфера. Попробуем показать, что это не всегда так. А скоро будет всегда не так.

Взглянем на публикацию о «страшных» трехбуквенных системах от anig99 и вспомним, что восьмерка позиционировалась как ERP. Типа «все в одном».

 Когда-нибудь человек приходит к тому, что ни «лоскутная автоматизация», ни монструозная система «все в одном» не справляются с требуемым объемом работы – первая, поскольку требует непомерных затрат на обмен данными, а вторая – поскольку не дает возможности гибко подстраиваться под ситуацию. Становится понятным, что комплексная автоматизация и конфигурация КА не очень-то друг с другом соотносятся.

Возьмем даже не очень многопрофильную фирму, скажем, сеть из трех магазинов стройматериалов и два цеха — по раскройке профлистов и по изготовлению заборных секций. Естественно, с соответствующим складским хозяйством, автопарком и непромсферой вроде санатория-профилактория и фитнес-центра. Справится с этим единая конфигурация – пусть даже проблем связи нет, все компьютеры в одной оптоволоконной сети? Вот УПП к примеру, ориентированный на «сборочное», а отнюдь не «разборочное» производство?

Тут мы и приходим к распределенным вычислениям. К разбиению общей задачи сбора и обработки информации на относительно самостоятельные подзадачи и упорядочиванию обмена информацией между подзадачами. Не экстенсивный подход 1С8, (неоправданное наращивание «железа», из пушки по воробьям), но интенсификация имеющихся вычислительных ресурсов. Ну, или, шаг на пути от WWW к GRID (стОит погуглить это словосочетание).

Еще один аргумент в пользу распределенных вычислений – известный принцип Оккама. Сформулируем его как «не умножай трафик без необходимости». Ну например, комплект кассовых чеков магазина никому не нужен, кроме самого магазина. Ну и пусть он остается в подсистеме фронт-офис этого магазина, подсистеме логистики передадим только итоговые данные за день.

Терминальная технология с мейнфреймами как-то слабо вяжется с ситуацией, когда вычислительная мощность терминала (ПК пользователя) отличается от вычислительной мощности мейнфрейма (сервера) всего на порядок. Скорее, следует рассматривать имеющиеся вычислительные мощности как мультимикропроцессорную систему, для которой, к сожалению, нет операционки, способной к автораспределению ресурсов.

Надо сказать, что с распределением/освобождением ресурсов и в существующей платформе не все гладко – можно хоть посмотреть обсуждение публикации Освобождение переменных в 1С .

На самом деле, не так уж сложно построить на мьютексах систему разделения вычислительных ресурсов «ручками». Вряд ли она будет оптимальной, но уж во всяком случае, в разы оптимальней, чем клиент-серверная технология, применяемая бездумно. Полной методики не существует (вернее, методики существуют, но нет их программной реализации). Поэтому вооружимся теоретическими навыками, и будем действовать интуитивно. Вот тут-то и появляются графы.

Посмотрите вот эту  лекцию, а там, глядишь, и весь курс. В далекие 80-е я занимался графическим представлением сложных вычислительных задач и автоматизацией распараллеливания вычислений под научным руководством автора. Поверьте на слово, впоследствии очень пригодилось!

 

Примечание: Текст анонса принадлежит Alraune  

39 Comments

  1. Арчибальд

    (1) Словоблудие, проистекающее от незнания терминологии.

    Вот распределенные вычисления http://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0­%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%87%D0%B8%D­1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F

    Если используется одна СУБД (конфигурация в нашем случае) — это уже не распределенные вычисления. А вот в случае БП+ЗУП+УчетПроизводства — возможно, распределенные. И в этом случае они должны взаимодействовать, не блокируя бруг друга — вот тут-то мьютексы и пригодятся.

    Клиент-серверная технология, конечно, не отстой. Просто идеологически она неотличима от систем разделения времени центральной (единственной) ЭВМ 60-х годов. И получается, что с полусотней компьютеров в сети, каждый из которых превосходит по производительности ту самую ЭВМ в десятки раз, мы имеем хорошо если двукратное увеличение скорости вычислений. Мы успешно снизили эффективность компьютеров на три порядка ради сомнительного удовольствия от посещения игровых и порносайтов, заодно отстегивая деньги, в том числе, из собственного кармана в пользу Билли и, в нашем случае, Бори. Не нравится мне это — вот и статья.

    И погугли все же от WWW к GRID

    Reply
  2. Ish_2

    Мой вопрос :

    Скажи , если в процессе использования УПП в клиент- серверном варианте использован отдельно стоящие сервер приложений 1с и сервер БД. Это распределенные вычисления ?

    Твой ответ :

    Если используется одна СУБД (конфигурация в нашем случае) — это уже не распределенные вычисления.

    Комментариев не будет .

    Reply
  3. tango

    (1) или ,например, три конфигурации БП+ЗУП+СпециализированныйУчетПроизводства ?

    иш, давай в личку, где ты это видел?

    если ответишь (содержательно), я в личку скажу, где я это видел

    Reply
  4. tango

    (0) не справляются с требуемым объемом работы

    извини, Арчи, изначальная кривизна целеполагания

    Reply
  5. Ish_2

    (4) Давай так . Если для тебя это чудо , кинь вопрос на Мисту :

    где вы видели БП+ЗУП+СпециализированныйУчетПроизводства ?

    Получишь уже полную,исчерпывающую картину.

    Теперь тебе вопрос на понимание :

    УПП работает в классической трехвенке «клиент-сервер приложений- сервер БД» . Разумеется, Сервер приложений и Сервер БД — отдельно стоящие.

    Можно ли считать это примером реализации распределенных вычислений ?

    Да или нет ?

    Reply
  6. Арчибальд

    (4)(6)Что-то я не понял вопроса. По-моему, это обычное дело — три конфы. У меня в межсезонье пять крутится, а в сезон добавляется еще три.

    Reply
  7. Ish_2

    (7) Я тоже не понял , чем его так напугало : БП+ЗУП+СпециализированныйУчетПроизводства ?

    Миша имел ввиду Ээ… опять что-то очень глубокое, что-то очень своё.

    Но это мелочи. Интереснее другое.

    Сможет ли он ответить на вопрос в (6)?

    Reply
  8. Арчибальд

    (8) Могу пока я ответить. И ответ — отрицательный.

    Reply
  9. Ish_2

    (9) В (3) я уже отказался комментировать такие заявления.

    Reply
  10. artbear

    Цитата из анонса «Освещаются две основные, взаимно обратные задачи исследования операций: нахождение минимального количества исполнителей для завершения комплекса работ за заданное время и нахождение плана выполнения работ за минимальное время заданным составом исполнителей.»

    А пишешь совершенно о другом 🙁

    Поменяй анонс,плиз, путаешь народ.

    Пока что минусую, хотя само содержание интересно.

    ЗЫ по анонсу я честно говоря подумал, что ты приводишь готовое решение на 1С с графами 🙂

    Его бы я с удовольствием изучил бы.

    Reply
  11. Арчибальд

    (11) Публикация имеет тип «ссылка» — на лекцию, которая в конце. И анонс — анонс этой лекции.

    Мой текст — это попытка разъяснить, почему это может потребоваться одноэсникам.

    Reply
  12. artbear

    ИМХО анонс нужно как-то поменять 🙁 сейчас идет путаница.

    Reply
  13. Арчибальд

    (13) Сейчас что-нибудь придумаю.

    Reply
  14. Арчибальд

    (13) Может быть, такой колор? © Мимино

    Reply
  15. MSensey

    Ужасная подача анонса. Все смешано в кучу, не понятно что с чем соотносить.

    Reply
  16. Lara.Builova

    > Взглянем на публикацию о «страшных» трехбуквенных системах от anig99 и вспомним, что восьмерка позиционировалась как ERP. Типа «все в одном».

    Вспомним? Речь шла только о «позиционировании» УПП как ERP, не просто восьмерки.

    Reply
  17. Rustig

    (1) Пожалуйста, если хвалите, то обращайтесь на «ты», на «вы» — как Вам хочется.

    Если критикуете, то лучше на «вы». А то как-то агрессивно получается.

    Скажу в защиту статьи: мало кто связывает разные технологии в одну целостную картину… для этого необходим как минимум широкий кругозор, продолжительный опыт работы и системное мышление. Идея статьи мне понравилась.

    Reply
  18. Ish_2

    (18) Э… с Арчибальдом тут старые счеты. Строго на «ты».

    А «агрессивность» — это напускное . От симпатии.

    Больно уж расстроил своими «семерочными» размышлизмами.

    («семерочный» — слово ругательное в данном контексте)

    Впрочем , если бы Арчибальд был знаком с «клиент-серверной технологией»

    — уверен, этой статьи бы не появилось.

    Когда Арчибальд все-таки перейдет на «восьмерку» — я обязательно подсуну ему эту статью

    и мы вместе похихикаем.

    Reply
  19. tango

    (0)УПП к примеру, ориентированный

    на торговлю оно ориентировано, а не на производство.

    на разборочное — ровно в той же мере, что и не сборочное (вход и выход спецификаций — в тч)

    Reply
  20. Asis

    Вариант названия статьи: «Параллельное программирование и 1С. Когда-нибудь они пересекутся…»

    Reply
  21. tango

    +(11) готовое решение на 1С с графами — сильно не хватает для + статье

    Reply
  22. Арчибальд

    (17) Вот цитата 2004 года

    Бизнес-софт от «1С» ERP-системой никто, и в первую очередь сам производитель, не считает. Директор фирмы Борис Нуралиев говорит, что «ERP-система производства «1С» звучит так же нелепо, как «Xerox производства Minolta», и отказывается от обсуждения терминологических вопросов. Однако аналитическая компания IDC уже включает «1С» в свои отчеты о распределении российского рынка бизнес-приложений (оценка его общего объема в 2004 году — более $195 млн.) наряду с SAP, Oracle и Microsoft.

    http://www.profile.ru/items/?item=16820

    Но речь идет чисто о терминологической разнице. БОрис и сейчас избегает термина «ERP». Но появление восьмерочной платформы анонсировалось как ответ западным системам комплексной автомотазации. Мало того, я тоже считаю, что задача построения полноченной КИС на восьмерке стала гораздо более решабельной. Только вот решений что-то не видно — методологии нет.

    (19) Суть (идеология) системы клиент-сервер приложений-сервер БД сугубо последовательная, только что с разделением времени. Клиент инициирует приложение, сервер приложений его выполняет, обращаясь время от времени к (серверу) БД, по завершении приложения клиент получает результат. Все клиенты при этом «толкутся» одновременно в пределах одной физической БД, и сколь хороша бы ни была СУБД, они друг другу мешают.

    Распределенные вычисления, напротив, подразумевают автономную работу (групп) клиентов с различными базами, в различных сегментах сети. Реляционные связи между базами гораздо «слабей», чем связи внутри баз, что позволяет актуализировать их гораздо реже, а не постоянно, именно, когда появляется возможность/необходимость актуализации, т.е. когда одной базе потребуются данные от другой, а в этой другой данные будут готовы (технология «dana flow»). Когда ты проникнешься идеей параллелизма, мы вместе похихикаем 😉

    Reply
  23. 1cNike

    😮

    Reply
  24. Арчибальд

    (24) Уж цитируешь, так цитируй полностью. Разделение времени пропустил, подменив тем самым реальный параллелизм псевдопараллелизмом. А заодно перепутал распределенные вычисления с распределенным вычислителем.

    Занятно, как ты ухитряешься смотреть на мир исключительно через замочные скважины? Как можно отвергать (вместе в Василь Иванычем) танк за отсутствие уздечки?

    Я толкую про распределение вычислительных ресурсов между подзадачами. Ты толкуешь о распределении серверного времени между клиентами. Твоя задача важная, конечно, и лежит в русле проблемы параллельных вычислений, но очень частная. Примерно как задача изготовления кирпичей в проблеме градостроительства.

    Reply
  25. Ish_2
    Уж цитируешь, так цитируй полностью. Разделение времени пропустил, подменив тем самым реальный параллелизм псевдопараллелизмом. А заодно перепутал распределенные вычисления с распределенным вычислителем.

    Речь идет не о псевдопараллельности вычислений (т.е. процессор попеременно выполняет то одну ,

    то другую задачу) , а речь идет о ЯВНОЙ ПАРАЛЛЕЛЬНОСТИ. В многопроцессорной системе ( а сервер приложений именно таков) В КАЖДЫЙ МОМЕНТ ВРЕМЕНИ ВЫПОЛНЯЕТСЯ НЕСКОЛЬКО ПРОЦЕССОВ ПАРАЛЛЕЛЬНО.

    То же самое в сервере БД. Несколько запросов могут выполняются параллельно — одновременно.

    А чтобы они чего -то не накуролесили в БД при одновременной работе с одними и теми же данными применен

    механизм блокировок : Раз я изменяю , ты — постой покури. ( в твоём понимании — это те самые семафоры-мьютексы)

    Так вот : клиент -серверная технология и есть воплощение идей распределенности и параллельности вычислений.

    Ты стучишься в открытую дверь.

    Reply
  26. tango

    примерно так:

    несколько машин, на каждой — своя база.

    в одной общие НСИ, другие — по подсистемам

    клиенты шуруют каждый в своей базе.

    общение между базами — только внутри скулей

    Reply
  27. Ish_2

    Поехали дальше :

    Я толкую про распределение вычислительных ресурсов между подзадачами.

    И я о том же . В УПП один клиент запустил какой либо расчет по себестоимости ,

    другой клиент проводит начисление зарплаты . И представь себе они друг другу совсем не мешают(не замедляют друг друга) . Вот что такое клиент-серверная технология в действии :

    происходит «распределение вычислительных ресурсов».

    В твоем же «семерочном» понимании распределение — это зарлата на одном компьютере , расчет на другом,

    а потом они где то сливаются. Такое понимание распределенности вычислений соответствует примерно 25-летней давности.

    Reply
  28. cool.vlad4

    Все смешалось в кучу кони, люди….Параллельные вычисления

    такой способ организации компьютерных вычислений, при котором программы разрабатываются как набор взаимодействующих вычислительных процессов, работающих параллельно. Термин охватывает совокупность вопросов параллелизма в программировании, а также создание эффективно действующих аппаратных реализаций.

    Существуют различные способы реализации параллельных вычислений. Например, каждый вычислительный процесс может быть реализован в виде процесса операционной системы, либо же вычислительные процессы могут представлять собой набор потоков выполнения внутри одного процесса ОС. Параллельные программы могут физически исполняться либо последовательно на единственном процессоре — перемежая по очереди шаги выполнения каждого вычислительного процесса, либо параллельно — выделяя каждому вычислительному процессу один или несколько процессоров (находящихся рядом или распределённых в компьютерную сеть).

    Подвид параллельных вычислений — распределенные, а подвид распределенных — клиент-сервер. Про какую параллельность идет речь — ежели она в одном из видов может быть на стареньком однопневом компе?


    Я толкую про распределение вычислительных ресурсов между подзадачами.

    Это какие ресурсы вычислительные? Они вроде все вычислительные(компьютерные equal вычислительные — по русски compute — вычислять)…Аппаратные?

    Reply
  29. shadowcpu

    Оффтоп.

    Продолжайте-продолжайте…

    Пойду еще за чипсами сбегаю…

    Reply
  30. Арчибальд

    (27) По моей ссылке в (2):

    В 1973 году Джон Шох и Джон Хапп из калифорнийского научно-исследовательского центра Xerox PARC написали программу, которая по ночам запускалась в локальную сеть PARC и заставляла работающие компьютеры выполнять вычисления

    Вот так то. А то

    В многопроцессорной системе ( а сервер приложений именно таков)

    — поздравляю Вас, сударь, соврамши. Распределенные вычисления не требуют вообще многопроцессорности (еще бы они требовали, будучи примененными еще в 18 веке, задолго до машины Беббиджа). А трехуровневая логическая архитектура «клиент-сервер приложений-сервер данных» в те же 70-е годы уже применялась на однопроцессорных ЭВМ.

    Тут не о семерочном понимании надо говорить, а о восьмерочной зашоренности (бедная восьмерка! Знай она, что у нее такие невежественные апологеты будут, она бы не родилась)

    Reply
  31. Ish_2

    (32) Исходная цитата , в которой я «соврамши» по твоему :

    В многопроцессорной системе ( а сервер приложений именно таков) В КАЖДЫЙ МОМЕНТ ВРЕМЕНИ ВЫПОЛНЯЕТСЯ НЕСКОЛЬКО ПРОЦЕССОВ ПАРАЛЛЕЛЬНО.

    1. В том , что сервер приложений — многопроцессорный ?

    2. В том , что «В КАЖДЫЙ МОМЕНТ ВРЕМЕНИ ВЫПОЛНЯЕТСЯ НЕСКОЛЬКО ПРОЦЕССОВ ПАРАЛЛЕЛЬНО» ?

    Из того, что «..трехуровневая логическая архитектура «клиент-сервер приложений-сервер данных» в те же 70-е годы уже применялась на однопроцессорных ЭВМ» — ЧТО СЛЕДУЕТ ? Что я «соврамши» в п.1. или 2 ?

    Фи.. логическая невежливость хуже грубости.

    Бросай ты «семерку» , и теоретизирование о «клиент-серверной технологии» — перейди на 8 , напиши хотя бы пару запросов — мы с тобой поговорим поплотнее. А сейчас — всё в пустоту…

    Reply
  32. Арчибальд

    (33) В том, что «сервер приложений именно таков» (многопроцессорный). Возможно, именно таков (единственный?) знакомый тебе сервер приложений. А у меня восьмерочная конфигурация (есть и такая с 9 года, и при внедрении пару запросов я написал для выгрузки) крутится на однопроцессорном сервере приложений, совмещенном с сервером БД.

    «Поговорим поплотнее» о запросах — совсем уж неинтересно. Может еще форматы операторов цикла обсудим?

    Reply
  33. hogik

    (33)

    1) «Бросай ты «семерку» , и теоретизирование о «клиент-серверной технологии» — перейди на 8″(с)

    Игорь. Это про «семерку» написано:

    …представляет собой расширение системы «1С:Предприятие», позволяющее организовать работу с базой данных в режиме «клиент-сервер».

    Вот тут: http://www.1c.ru/rus/products/1c/predpr

    2) «напиши хотя бы пару запросов»(с)

    Вот оно — «смотреть на мир исключительно через замочные скважины»(с). 😉

    Какая связь «запросов» с обсуждаемой темой?

    Но, даже, если говорить о «клиент-сервер», то бывают «запросы» без «клиент-сервер». А бывает «клиент-сервер» без «запросов».

    Reply
  34. Ish_2

    (36)

    1. Ну , на заборе много чего написано. А вы не читайте рекламные проспекты про 77 в SQL-варианте.

    2. Запросы приведены лишь в качестве примера практической работы. Так сказать ощутить «естество и плоть» клиент-серверного варианта работы. И ничего более не имелось ввиду.

    Вы по существу вопроса-то что можете сказать ?

    Прочитайте вопрос в (6).

    Миша струхнул отвечать , за него вступился Арчибальд в (9) , а Вы ответите ?

    На всякий случай . Я сам на него ответил в (24).

    Reply
  35. hogik

    (37)

    1) «А вы не читайте рекламные проспекты про 77 в SQL-варианте»(с)

    Игорь. Я читаю не только рекламные проспекты. И не только — читаю… 😉

    2) «Прочитайте вопрос в (6)»(с)

    Я прочитал внимательно всю тему.

    3) «… а Вы ответите ?»(с)

    На вопрос «Можно ли считать это примером…» — да. Это, действительно, только — «пример».

    На вопрос «…реализации распределенных вычислений» — нет, если в контексте обсуждаемой публикации.

    Т.к. эта «классическая трехвенка» является переходником между схемой БД и алгоритмами обработки информации потребными предметной области и убогими возможностями запросной/реляционной модели СУБД. Но при внимательном разглядыванием «трехзвенки» можно усмотреть элементы похожие на «распределенные вычисления». Они там появились случайно, как побочный продукт… 😉

    Мне представляется, что автор публикации сделал акцент на: «…приходим …к разбиению общей задачи … на … самостоятельные подзадачи и упорядочиванию обмена информацией между подзадачами». И, думаю, под словами «задача» и «подзадача» подразумевается не «ОДНОВРЕМЕННО выполнять несколько запросов от разных клиентов»(с).

    Т.е. в публикации идет речь о более высоком уровне распределенных вычислений.

    Хотя пример про «комплект кассовых чеков»(с), больше, в духе продуктов от 1С. Слишком упрощено. На самом деле мало передавать «только итоговые данные за день»(с). Требуется постоянно отслеживать остатки, «дисконт», возврат и т.д.

    Reply
  36. Ish_2

    (38) Угумс…

    Полный вопрос : Можно ли считать это примером реализации распределенных вычислений ?

    Ответ :

    На вопрос «Можно ли считать это примером…» — да. Это, действительно, только — «пример».

    На вопрос «…реализации распределенных вычислений» — нет, если в контексте обсуждаемой публикации.

    Ясный вопрос один , ответа два.

    Это чтоб Арчибальда не сильно обидеть ?

    Вроде да , но , вообщем -то нет…

    Тихо отползаю.

    Ок.

    Reply
  37. tango

    http://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0­%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%87%D0%B8%D­1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F

    как бы почитал, прикольно, если прикинуть к 1с

    таки одна конфа или несколько (более одной)?- две разницы

    обмен по почте — тогда можно попробовать что-то замутить офлайн

    Reply
  38. tango

    скажем, такая задача.

    две фирмы с разной ставкой на прибыль.

    два или более узла (это сколько участников наберем)

    в каждом узле ведется деятельность обеих фирм.

    надо иметь сумму налога «в реальном времени» — на любой машине

    расходы, для простоты, только прямые = цена закупа, прибыль = выручка — закуп.

    два документа, ПНК и РНК, оплата считается совершенной по факту отгрузки.

    Reply
  39. tango

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *