<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=8840&amp;view=findpost&amp;p=88050</guid>
        <pubDate>Tue, 06 May 2003 17:57:18 +0000</pubDate>
        <title>Строим МНОГОтерминальную систему</title>
        <link>https://forum.sources.ru/index.php?showtopic=8840&amp;view=findpost&amp;p=88050</link>
        <description><![CDATA[the_Shadow: Мммммм... По первой части -- честно говоря, я не думал что все... Вот так вот... <strong class='tag-b'>ПЛОХО</strong>... На Delphi связываться с M$ Access... Мдааааа... Не всех дураков война унесла...  :-/ Тогда о чем мы тут? Любое решение, удешевляющее и ускоряющее работу будет принято на &quot;ура&quot; и, самое главное, оплачено. <br><br>А по репликациям все-таки стоит поразмыслить по-подробнее... Скажем, так (я беру абстрактный случай). Т.е. репликацию, IMHO, стоит отрабатывать отдельно и на основании реальных требований заказчика. Скажем, это -- опердень банка. Клиент приходит открывать счет, так? Может ли он появиться в двух филиалах одновременно? Вряд ли. А вот операции с его счетом могут производиться из нескольких точек. Причем, дебетование/кредитование его счета будет производиться на основании <strong class='tag-b'>текущего</strong> состояния счета... Т.е. возможна ситуация, когда приход должен быть, но он не совершон, а расход и надо бы, но в данный момент денег нет.... :( Думать, однако, надобно... Курить по этому поводу... :(<br><br>IMHO, стоит начать с минимума -- второй сервер -- только для сетевых нужд, а БД держать одну. А дальше смотреть по спецификации и по результатам работы. Как бы не пришлось на время репликации блокировать базы (записи), а это уже не есть гуд... :( Дело в том, что при <strong class='tag-b'>хороших</strong> объемах мы получим <strong class='tag-b'>хорошие</strong> тормоза на месте (т.е. сразу же)... :(<br><br><strong class='tag-b'>2 vot</strong>. А глянуть на спецификацию можно? Если по e-mail?]]></description>
        <author>the_Shadow</author>
        <category>Software Design</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=8840&amp;view=findpost&amp;p=88049</guid>
        <pubDate>Tue, 06 May 2003 17:28:19 +0000</pubDate>
        <title>Строим МНОГОтерминальную систему</title>
        <link>https://forum.sources.ru/index.php?showtopic=8840&amp;view=findpost&amp;p=88049</link>
        <description><![CDATA[vot: Как выяснилось - все еще хуже :)))<br>Половина клиентов работают не с SQL, а (не поверите :) - с базой на MS Access с доступом через ODBC :(<br>Программа-Клиент оказалась из-за этого достаточно толстой, <br>а кроме того, в ней же реализованы и все алгоритмы обработки данных, <br>т.е. база используется всего лишь как хранилище данных, не более того :(<br><br>Клиентская программа обрабатывает каждое вводимое поле и проверяет его валидность с помощью запросов к базе. Например, вводится код заказчика - программа ищет в базе введенный код, и выдает на экран все реквизиты заказчика.<br><br>Требование технологии - база должна быть единой для обеих удаленных друг от друга площадок. <br>Насколько эффективен будет механизм репликации баз, если основную базу продублировать на сервере второй (удаленной ) площадки?<br>Не получится ли так, что мы заведем одного и того же нового заказчика с двух площадок одновременно? И тем самым раздвоим записи?]]></description>
        <author>vot</author>
        <category>Software Design</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=8840&amp;view=findpost&amp;p=88048</guid>
        <pubDate>Tue, 06 May 2003 10:28:24 +0000</pubDate>
        <title>Строим МНОГОтерминальную систему</title>
        <link>https://forum.sources.ru/index.php?showtopic=8840&amp;view=findpost&amp;p=88048</link>
        <description><![CDATA[e-yes: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>vot, 04.05.03, 14:45:18</span><div class='quote '><br>Решение, уже имеющееся на сегодня, меня не слишком радует:<br><br>Используется MS SQL Server под W2K, на весьма шустрой тачке.<br>Клиенты ходят на сервер по VPN (виртуальная частная сеть) через интернет<br>(выделенный канал 2МБит). На клиентских машинах используется программа-клиент, написанная на Дельфи.<br>Недостатки существующего решения:<br>- Имеющийся SQL-сервер очень чувствительно тормозит<br>- Нерационально написанный клиент забивает канал трафиком так, что 2МБит уже не хватает...<br>- Слишком дорого каждому клиенту ставить целый компьютер<br><br>  Было уже предложено тупое решение - расширить канал до 20МБит,<br>но мне кажется, что это не улучшит ситуацию, поскольку количество клиентов вскоре должно возрасти до 500-600...<br></div></div><br><br>Конечно, можно подумать о переводе всех клиентов на терминалы (не важно, что за серверная часть будет - никсы или винда), но это долго и это хлопотно. Сразу за такую глобальную переделку мало кто возьмется. Имхо, самое дешевое и быстрое решение - поставить еще один SQL сервер у удаленных клиентов, завязать их на него, а уж серваки пускай сами разруливают синхронизацию (через репликацию или еще там чего), благо, что SQL2K это все добро поддерживает.<br>]]></description>
        <author>e-yes</author>
        <category>Software Design</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=8840&amp;view=findpost&amp;p=88047</guid>
        <pubDate>Tue, 06 May 2003 04:57:02 +0000</pubDate>
        <title>Строим МНОГОтерминальную систему</title>
        <link>https://forum.sources.ru/index.php?showtopic=8840&amp;view=findpost&amp;p=88047</link>
        <description><![CDATA[the_Shadow: Ладно... Подумав, продолжаем.<br><br>Ну, собственно, чего мы тут про Oracle да про Oracle... <br><br>Есть и альтернативный вариант, но только более трудоемкий в реализации. Хотя, и более &quot;бесплатный&quot; и, к стати, более быстродействующий.<br><br>Ингридиенты -- те же. Только БД меняем на любую другую -- от PostgreSQL до SAP DB. <br>К стати, в последней сам сейчас разбираюсь. MySQL не проходит -- он не для того создавался по определению.<br><br>Клиентская часть пишется на C или Pascal (в принципе, в Linux, в пакете девелопера есть даже прекомпилятор Pascal -&gt; C). Я прошу прощения, что пишу именно про С, но как под UNIX с Паскалем -- БМП... <br><br>Но в этом случае нам придется:<br>- делать интерфейс &quot;врукопашную&quot;, используя библиотеки curses/ncurses. Т.е. на базе этой либы создаем функции отрисовки/заполнения именно своих форм/меню, а только потом это дело собираем как из кубиков в свой проект.<br>- работу с SQL в данном случае целесообразней всего строить на базе Embedded SQL, который есть в составе любой уважающей себя базы данных. Прекомпиляторы SQL-&gt;C, как правило, там есть так же. Т.е. отрабатываем взаимодествие с БД на SQL (все операции прогоняем через интерпретатор команд соотв. БД -- они есть везде), проверяем работу скамих SQL-скриптов. Далее просто &quot;перегоняем&quot; эти скрипты в код, для увеличения скорости работы самого софта. Но никто не отменял именно хранимые процедуры и обработку транзакций, основанные на тех же принципах, что прописаны выше.<br>- отчеты. В данном случае это -- больное место... Придется делать их &quot;врукопашную&quot;. Т.е. каждый отчет делать в виде одного модуля и отдельно тестировать. Это -- реально больное место -- поверьте... :( Особенно, если их -- много. И в конце работ заказчик пламенно возжелает добавить еще десяточек... :(<br><br>Лирическое отступление. Здесь важно заметить, что для ускорения разработки придется собирать &quot;команду&quot;. Т.е. такая разработка водиночку просто не делается за разумные сроки... :( И нужна будет четкая синхронизация работ. <br><br>Так. Как грузить все это безобразие на клиента... Протоколы <strong class='tag-b'>bootp</strong> и <strong class='tag-b'>tftp</strong> нам помогут, хотя, более уродливый вариант -- <strong class='tag-b'>dhcp</strong> то же имеет право на жизнь. Суть в том, что diskless WS при включении будет в <strong class='tag-b'>широковещательном</strong> режиме (при наличии м.схемы удаленной загрузки) пытаться определить кто ей сможет дать адрес TCP/IP и откуда она сможет загрузить ядро (собственно, для загрузки ядра именно tftp -- по определению <strong class='tag-b'>Trivial File Transfer Protocol</strong> и разрабатывался). Самое противное во всем этом -- <strong class='tag-b'>дикая</strong> нагрузка на сеть в момент начала рабочего дня. Т.е. толпа народа врубает свои &quot;тачки&quot; и каждая начинает &quot;орать&quot; в сетку... Поэтому, и стоит разводить юзеров по разным подсегментам, иначе, они до обеда грузиться будут... <br><br>Сегменты можно сотворить на базе нескольких карточек в сервере на удаленной площадке (и это, к стати, лучшее решение) или на базе шустренького коммутатора Ethernet, up-linkованного на &quot;промежуточный&quot; сервер... Или как-то эти два решения скомбинировать... Надо <strong class='tag-b'>смотреть</strong> по месту.<br><br>Ладно, ежели еще чего в голову постучится -- отпишу.]]></description>
        <author>the_Shadow</author>
        <category>Software Design</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=8840&amp;view=findpost&amp;p=88046</guid>
        <pubDate>Mon, 05 May 2003 03:43:48 +0000</pubDate>
        <title>Строим МНОГОтерминальную систему</title>
        <link>https://forum.sources.ru/index.php?showtopic=8840&amp;view=findpost&amp;p=88046</link>
        <description><![CDATA[the_Shadow: Аааааа.... Ну, и согласен с тобой и не согласен. Обосную.<br>Конечно же, так можно сделать! И, к стати, именно lynx будет отлично справляться с работой.... НО!<br><br>В любом случае к серверу БД добавляется еще и Apache (ну, про IIS умолчим из скромности ;D, про остальных -- типа Netscape, NSCA -- даже не будем поминать. Не стоит тревожить мертвецов...). Туда же &quot;брякнется&quot; обработка SQL-транзакций, там же будет хранение самой БД, и... Короче, нагрузка возрастет, а скорость на терминалах резко (поверь -- опробировано) упадет... :(<br><br>Дело в том, что (если мне не изменяет моя шлюха-память), то в Oracle есть спец. средства для построения именно таких многотерминальных систем. Т.е. там есть:<br>- SQL*Forms -- построение форм (чтоб с curses/ncurses не мучиться, хотя, конечно, и можно, но сроки разработки возрастут -- и меню и формы и отчеты -- все придется ваять &quot;врукопашную&quot; -- сколько кофе выпить надо будет и сколько народа напрячь!).<br>- Далее -- там же -- SQL*Menu -- создание меню.<br>- SQL*Report -- отчеты.<br>И, самое главное, -- SQL*C и SQL*Net. Первое -- препроцессор С, который переделывает все, что наработано в пакетах выше в более-менее аккуратный код на С (с запросами, формами, меню, отчетами, короче, всей фигней). SQL*Net -- уровень абстрактного представления именно сети для данного ПО. <br><br>Таким образом, &quot;нарисовав&quot; прообраз софта, его можно оттестировать используя средства самого Оракла -- интерпретируя. Или, в оконцовке, &quot;собрать&quot; все это в кучу в виде компакнтого кода на С. Работает <strong class='tag-b'>очень</strong> шустро... И, к стати, все -- в терминальном режиме.<br><br>Правда, можно и на X11 графику &quot;прикрутить&quot;, но она здесь и близко не нужна.<br><br>Если у кого-то бродят мысли по поводу &quot;Terminal Edition&quot;, то лучше от них сразу отказаться, т.к. &quot;поверх&quot; тормозавра от M$, еще и слой этого д....ма накладывается -- т.н. косметика для &quot;типа_терминальных_устройств&quot;. Бред это. Лучше уж в таком случае использовать то, что от Бога было заточено под работу с терминалами, а не выдавать желаемое за действительное. Хотя, может, оно где-то (как-то, у кого-то) и работает, но я это в работе не видел. Хотя, &quot;отзывы&quot; -- слышал... Пересказывать не буду. ;D И не просите... ;D]]></description>
        <author>the_Shadow</author>
        <category>Software Design</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=8840&amp;view=findpost&amp;p=88045</guid>
        <pubDate>Sun, 04 May 2003 19:13:15 +0000</pubDate>
        <title>Строим МНОГОтерминальную систему</title>
        <link>https://forum.sources.ru/index.php?showtopic=8840&amp;view=findpost&amp;p=88045</link>
        <description><![CDATA[bin: к столь развернутому ответу могу только добавить, что можно клиентскую часть выполнить в виде server-side скриптов (perl/php/тот же С (cgi), но можно и на Delphi(cgi)), а в качестве базового терминала использовать любой(!) браузер под любой платформой, клиентская часть серьезно упадет в цене, если грузить Linux (по сети или с CD) и заюзать нетскейп или мозилу, или, если формы правда простые, то линкс<br>а все, что связанно с генерацией SQL скриптов на апдейты баз, проводить тоже на сервере (серверах)<br>или можно разнести стоимость клиентских машин следующим образом: несколько дешевых лезут телнетом по локаклке на что-то более мощное (&quot;типа_сервер&quot;), запускают там свои проги, колбасят операции, &quot;типа_сервер&quot; собирает транзакции в приличные пакеты и пересылает на SQL-сервак, один из минусов такого подхода: что делать, если упадет &quot;типа_сервер&quot;, т.е. все проблемы локального кэша<br><br>основной момент: в любом случае придется переписывать клиентские части &nbsp;;)]]></description>
        <author>bin</author>
        <category>Software Design</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=8840&amp;view=findpost&amp;p=88044</guid>
        <pubDate>Sun, 04 May 2003 13:12:29 +0000</pubDate>
        <title>Строим МНОГОтерминальную систему</title>
        <link>https://forum.sources.ru/index.php?showtopic=8840&amp;view=findpost&amp;p=88044</link>
        <description><![CDATA[the_Shadow: Если продолжать тему, то (в принципе, это можно уже сейчас попробовать) нужно, IMHO, еще транзакции подкорректировать. Т.е. после того, как мы <strong class='tag-b'>BEGIN TRANSACTION</strong>, мы должны вколотить в пределах <strong class='tag-b'>одной</strong> транзакции как можно больше данных, т.к. :<br>1. мы в сети и заведомо не получится разрыва соединения. Т.е. <strong class='tag-b'>ROLLBACK</strong> нам не &quot;светит&quot; -- канал-то надежный и проведено будет в БД все, что туда попадет.<br>2. <strong class='tag-b'>COMMIT</strong> всегда отличался прожорливостью к ресурсам сервера. Его можно делать, скажем, два раза за рабочее время -- в обед и по окончании рабочего для, перед архивацией данных за день. Причем, это я говорю о <strong class='tag-b'>каждом</strong> рабочем месте.<br>3. работать можно и с данными в буффере. <br><br>Далее. Можно в промежуточный сервер воткнуть несколько карточек и развести пользователей по нескольким сегментам ЛВС. Это даст меньшую загруженность магистрали именно на стороне удаленной площадки. На серверах -- врубить балансировку нагрузки на итерфейсах. Т.е. принудительно разделить 2048 (ISDN PRI) между разными субсегментами... <br><br>В принципе, как-то vot так... <br>]]></description>
        <author>the_Shadow</author>
        <category>Software Design</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=8840&amp;view=findpost&amp;p=88043</guid>
        <pubDate>Sun, 04 May 2003 12:09:35 +0000</pubDate>
        <title>Строим МНОГОтерминальную систему</title>
        <link>https://forum.sources.ru/index.php?showtopic=8840&amp;view=findpost&amp;p=88043</link>
        <description><![CDATA[the_Shadow: 1. Поставить какой-нибудь из UNIX-ов как головной сервер.<br>2. Поставить нормальный сервер БД -- Oracle вполне то, т.к. позволяет реализовать как терминального клиента, так и GUI-шного. Это на головном сервере.<br>3. На удаленной площадке ставим для клиентов, написанных под <strong class='tag-b'>терминальный</strong> режим какой-нибудь стервачок, обеспечивающий загрузку на бездисковые рабочие станции ОС+ПО. Клиенты -- diskless workstations.<br>4. Этот же стервачок является единой точкой доступа через VPN в &quot;головную&quot; сеть, на него собираются все клиенты на удаленной площадке.<br>5. При увеличении числа клиентов ставим на удаленной площадке более серьезный сервер, несущий уже БД и по каналу 2 MB/sec. &quot;гоняем&quot; только &quot;дельту&quot; от двух БД. Это заведомо меньше (при такой постановке задачи, как она есть), нежели гонять все записи по отдельности -- как сейчас.<br><br>Минусы такого подхода -- отказ от Delphi и перенос ПО на более прагматическую основу. Это нужно будет все переписать. Возрастают требования к администратору (нужны прямые <strong class='tag-b'>/dev/hands</strong> и <strong class='tag-b'>/dev/head</strong> != <strong class='tag-b'>/dev/ass</strong>) всего этого хозяйства. При написании кода нужно будет учитывать то, что основная обработка должна происходить на сервере БД и только! Т.е. никаких кэширований на стороне клиента быть не может! И никаких шибко сложных обработок. Все -- либо через код ПО на клиенте, либо -- через хранимые процедуры! <br><br>Плюсы -- вполне возможно использовать бесплатное программье (ОС и сервер БД), администрирование сильно упрощается -- самая поганая часть клиентская, а здесь все клиенты однотипны и, более того, грузятся однотипной ос с однотипным ПО из одного источника, причем, после старта ОС, она сама вытаскивает с серверка копию ПО и запускает его (ну, как в autoexec.bat'е стартовали проги в свое время). Гарантировано -- юзер ничего не снесет. Более того -- он работает только с тем, что у него стоит на машине. Еще -- инсталляция нового ПО будет проходить для пользователя полностью прозрачно и автономно -- с одного сервера (точнее -- на одном сервере ну, максимум, на двух). <br><br>Рабочие станции -- самое дешовое из того, что можно найти на рынке, плюс, сетевая карточка с микросхемой удаленной загрузки. Удешевление за счет отсутствия дисков, дисководов, крутых видеокарточек, CD-ROM'ов... только &quot;мама&quot;, проц, &quot;мозги&quot;, сетевушка и клава с монитором, ну да -- дохленькая видюшка. Все. <br><br>IMHO, сработает...]]></description>
        <author>the_Shadow</author>
        <category>Software Design</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=8840&amp;view=findpost&amp;p=88042</guid>
        <pubDate>Sun, 04 May 2003 10:45:18 +0000</pubDate>
        <title>Строим МНОГОтерминальную систему</title>
        <link>https://forum.sources.ru/index.php?showtopic=8840&amp;view=findpost&amp;p=88042</link>
        <description><![CDATA[vot: Прошу рассказать о нескольких разных методах построения много-терминальных систем.<br><br>Суть задачи - сотня операторов должна вводить инфу с однотипных бланков в базу данных на удаленном (150км) SQL-сервере. <br>Кроме того, есть еще сотня клиентов, которые должны делать то же самое по локальной сети рядышком с сервером.<br>Какие есть варианты построения такой системы?<br><br>Решение, уже имеющееся на сегодня, меня не слишком радует:<br><br>Используется MS SQL Server под W2K, на весьма шустрой тачке.<br>Клиенты ходят на сервер по VPN (виртуальная частная сеть) через интернет<br>(выделенный канал 2МБит). На клиентских машинах используется программа-клиент, написанная на Дельфи.<br>Недостатки существующего решения:<br>- Имеющийся SQL-сервер очень чувствительно тормозит<br>- Нерационально написанный клиент забивает канал трафиком так, что 2МБит уже не хватает...<br>- Слишком дорого каждому клиенту ставить целый компьютер<br><br> &nbsp;Было уже предложено тупое решение - расширить канал до 20МБит,<br>но мне кажется, что это не улучшит ситуацию, поскольку количество клиентов вскоре должно возрасти до 500-600...<br><br> &nbsp;Какие будут предложения?<br>]]></description>
        <author>vot</author>
        <category>Software Design</category>
      </item>
	
      </channel>
      </rss>
	