Программирование
промышленных контроллеров,
роботов, hmi, scada-систем,
разработка БД, проектирование
и автоматизация под ключ

Есть вопросы? Звони!

Полезное

Полезное

« Назад

Программирование и изучение основ удаленного доступа.  19.10.2011 05:59

Программирование и изучение основ удаленного доступа.

1. Основные подходы к проектированию распределенных баз данных


1.1 Основные понятия теории реляционных баз данных

В узком смысле слова, база данных - это некоторый набор данных, необходимых для работы (актуальные данные). Данные - это отражение объектов реального мира. В традиционной терминологии объекты реального мира, сведения о которых хранятся в базе данных, называются сущностями - entities, а их актуальные признаки - атрибутами (attributes). Каждый признак конкретного объекта есть значение атрибута.

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

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

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

Традиционно все СУБД классифицируются в зависимости от модели данных, которая лежит в их основе. Принято выделять иерархическую, сетевую и реляционную модели данных. Иногда к ним добавляют модель данных на основе инвертированных списков. Соответственно говорят об иерархических, сетевых, реляционных СУБД или о СУБД на базе инвертированных списков.

Самыми распространенными на сегодняшний день являются реляционные
СУБД. Они стали фактическим промышленным стандартом. Кратко рассмотрим реляционную модель данных, не вникая в ее детали.

Она была разработана Коддом еще в 1969-70 годах на основе математической теории отношений и опирается на систему понятий, важнейшими из которых являются таблица, отношение, строка, столбец, первичный ключ, внешний ключ.

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

Значения атрибутов выбираются из множества допустимых значений, которое называется доменом (domain).

Каждый столбец имеет имя, которое обычно записывается в верхней части таблицы. Оно должно быть уникальным в таблице, однако различные таблицы могут иметь столбцы с одинаковыми именами. Любая таблица должна иметь по крайней мере один столбец; столбцы расположены в таблице в соответствии с порядком следования их имен при ее создании. В отличие от столбцов, строки не имеют имен; порядок их следования в таблице не определен, а количество логически не ограничено.

Так как строки в таблице не упорядочены, невозможно выбрать строку по ее позиции. Кроме того, привязка к номеру строки некорректна в многопользовательских СУБД. Любая таблица имеет один или несколько столбцов, значения в которых однозначно идентифицируют каждую ее строку.
Такой столбец (или комбинация столбцов) называется первичным ключом
(primary key). Если таблица удовлетворяет этому требованию, она называется отношением (relation).

Взаимосвязь таблиц является важнейшим элементом реляционной модели данных. Она поддерживается внешними ключами (foreign key).

Таблицы невозможно хранить и обрабатывать, если в базе данных отсутствуют "данные о данных", например, описатели таблиц, столбцов и т.д.
Их называют обычно метаданными. Метаданные также представлены в табличной форме и хранятся в словаре данных (data dictionary).

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

Для пользователей информационной системы недостаточно, чтобы база данных просто отражала объекты реального мира. Важно, чтобы такое отражение было однозначным и непротиворечивым. В этом случае говорят, что база данных удовлетворяет условию целостности (integrity).

Для того, чтобы гарантировать корректность и взаимную непротиворечивость данных, на базу данных накладываются некоторые ограничения, которые называют ограничениями целостности (data integrity constraints).

Существует несколько типов ограничений целостности. Требуется, например, чтобы значения в столбце таблицы выбирались только из соответствующего домена. На практике учитывают и более сложные ограничения целостности, например, целостность по ссылкам (referential integrity). Ее суть заключается в том, что внешний ключ не может быть указателем на несуществующую строку в таблице. Ограничения целостности реализуются с помощью специальных средств, таких как привила (rules), триггеры (triggers) и домены (domains).

Сами по себе данные в компьютерной форме не представляют интерес для пользователя, если отсутствуют средства доступа к ним. Доступ к данным осуществляется в виде запросов к базе данных, которые формулируются на стандартном языке запросов. Сегодня для большинства СУБД таким языком является SQL.

Появление и развития этого языка как средства описания доступа к базе данных связано с созданием теории реляционных баз данных. Прообраз языка
SQL возник в 1970 году в рамках научно-исследовательского проекта System/R, работа над которым велась в лаборатории Санта-Тереза фирмы IBM. Ныне SQL - это стандарт интерфейса с реляционными СУБД. Популярность его настолько велика, что разработчики нереляционных СУБД (например, Adabas или
Betrieve), снабжают свои системы SQL-интерфейсом.

Язык SQL имеет официальный стандарт - ANSI/ISO. Большинство разработчиков СУБД придерживаются этого стандарта, однако часто расширяют его для реализации новых возможностей обработки данных. Новые механизмы управления данными могут быть использованы только через специальные операторы SQL, в общем случае не включенные в стандарт языка.

SQL не является языком программирования в традиционном представлении.
На нем пишутся не программы, а запросы к базе данных. Поэтому SQL - декларативный язык. Это означает, что с его помощью можно сформулировать, что необходимо получить, но нельзя указать, как это следует сделать. В частности, в отличие от процедурных языков программирования (Си, Паскаль,
Ада), в языке SQL отсутствуют такие операторы, как if...then...else, for, while, хотя следует указать, что в расширении SQL для хранимых процедур и триггеров (SQL/PTL - SQL/Procedure And Trigger Language) они присутствуют.

Запрос на языке SQL состоит из одного или нескольких операторов, следующих один за другим и разделенных точкой с запятой.

Ниже в таб. 2.1 перечислены наиболее важные операторы, которые входят в стандарт ANSI/ISO SQL.

|Синтаксис оператора |Выполняемое действие |
|SELECT |Выбрать данные из базы данных |
|INSERT |Вставить данные в таблицу |
|DELETE |Удалить данные из таблицы |
|UPDATE |Изменить данные в таблице |
|GRANT |Передать права на действие над |
| |объектом |
|REVOKE |Отобрать права на действие над |
| |объектом |
|COMMIT |Подтвердить транзакцию |
|ROLLBACK |Откатить транзакцию |
|CREATE |Создать объект базы данных |
|DROP |Удалить объект базы данных |

Таб. 2.1. Основные операторы языка SQL.

В запросах на языке SQL используются имена, которые однозначно идентифицируют объекты базы данных. Наряду с простыми, используются также сложные имена - например, квалификационное имя столбца (qualified column name) определяет имя столбца и имя таблицы, которой он принадлежит.

Каждый столбец в любой таблице хранит данные определенных типов.
Различают базовые типы данных - строки символов фиксированной длины, целые и вещественные числа, и дополнительные типы данных - строки символов переменной длины, денежные единицы, дату и время, логические данные (два значения - "ИСТИНА" и "ЛОЖЬ"). В языке SQL можно использовать числовые, строковые, символьные константы и константы типа "дата" и "время".

Одним из средств, обеспечивающих быстрый доступ к таблицам, являются индексы. Индекс - это структура базы данных, представляющая собой указатель на конкретную строку таблицы. Индекс содержит значения, взятые из одного или нескольких столбцов конкретной строки таблицы, и ссылку на эту строку.
Значения в индексе упорядочены, что позволяет СУБД выполнять быстрый поиск в таблице.

Если индексов для таблицы не существует, то для выполнения запроса
СУБД должна просмотреть всю таблицу, последовательно выбирая из нее строки и проверяя для каждой из них условие выбора. Для больших таблиц такой запрос будет выполняться очень долго.

Если же был предварительно создан индекс по столбцам, входящим у условие WHERE запроса, то время поиска в таблице будет сокращено до минимума. Индекс создается оператором SQL CREATE INDEX (СОЗДАТЬ ИНДЕКС).

Для пользователя СУБД интерес представляют не отдельные операторы языка SQL, а некоторая их последовательность, оформленная как единое целое и имеющая смысл с его точки зрения. Каждая такая последовательность операторов языка SQL реализует определенное действие над базой данных. Оно осуществляется за несколько шагов, на каждом из которых над таблицами базы данных выполняются некоторые операции. Так, в банковской системе перевод некоторой суммы с краткосрочного счета на долгосрочный выполняется в несколько операций. Среди них - снятие суммы с краткосрочного счета, зачисление на долгосрочный счет.

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

Обработка транзакций опирается на журнал, который используется для отката транзакций и восстановления состояния базы данных


1.2 Сервер базы данных


1.2.1 Технология и модели "клиент-сервер"

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

В сети один и тот же компьютер может выполнять как роль клиента, так и роль сервера. Например, в информационной системе, включающей персональные компьютеры, большую ЭВМ и мини-компьютер под управлением UNIX, последний может выступать как в качестве сервера базы данных, обслуживая запросы от клиентов - персональных компьютеров, так и в качестве клиента, направляя запросы большой ЭВМ.

Этот же принцип распространяется и на взаимодействие программ. Если одна из них выполняет некоторые функции, предоставляя другим соответствующий набор услуг, то такая программа рассматривается в качестве сервера. Программы, которые пользуются этими услугами, принято называть клиентами. Так, ядро реляционной SQL-ориентированной СУБД часто называют сервером базы данных или SQL-сервером, а программу, обращающуюся к нему за услугами по обработке данных - SQL-клиентом.

Первоначально СУБД имели централизованную архитектуру. В ней сама СУБД и прикладные программы, которые работали с базами данных, функционировали на центральном компьютере (большая ЭВМ или мини-компьютер). Там же располагались базы данных. К центральному компьютеру были подключены терминалы, выступавшие в качестве рабочих мест пользователей. Все процессы, связанные с обработкой данных: поддержка ввода, осуществляемого пользователем, формирование, оптимизация и выполнение запросов, обмен с устройствами внешней памяти и т.д., выполнялись на центральном компьютере, что предъявляло жесткие требования к его производительности. Особенности
СУБД первого поколения напрямую связаны с архитектурой больших ЭВМ и мини- компьютеров и адекватно отражают все их преимущества и недостатки.

В настоящее время фактическим стандартом для многопользовательских
СУБД, стала архитектура "клиент-сервер".

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

Основной принцип технологии "клиент-сервер" заключается в разделении функций стандартного интерактивного приложения на четыре группы, имеющие различную природу. Первая группа - это функции ввода и отображения данных.
Вторая группа объединяет чисто прикладные функции, характерные для данной предметной области.

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

. компонент представления, реализующий функции первой группы;

. прикладной компонент, поддерживающий функции второй группы;

. компонент доступа к информационным ресурсам, поддерживающий функции третьей группы;

. протокол взаимодействия.

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

Выделяются четыре подхода, реализованные в следующих моделях:

. модель файлового сервера (File Server - FS);

. модель доступа к удаленным данным (Remote Data Access - RDA);

. модель севера базы данных (DataBase Server - DBS);

. модель сервера приложений (Application Server - AS).

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

[pic]

Рис.1.1. Модель файлового сервера.

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

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

Более технологичная RDA-модель существенно отличается от FS-модели характером компонента доступа к информационным ресурсам. Это, как правило,
SQL-сервер. В RDA-модели коды компонента представления и прикладного компонента совмещены и выполняются на компьютере-клиенте. Последний поддерживает как функции ввода и отображения данных, так и чисто прикладные функции. Доступ к информационным ресурсам обеспечивается либо операторами специального языка (языка SQL, если речь идет о базах данных) или вызовами функций специальной библиотеки (если имеется соответствующий интерфейс прикладного программирования - API).

[pic]

Рис 2.2. Модель доступа к удаленным данным.

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

RDA-модель избавляет от недостатков, присущих как системам с централизованной архитектурой, так и системам с файловым сервером.

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

Основное достоинство RDA-модели заключается в унификации интерфейса
"клиент-сервер" в виде языка SQL. Действительно, взаимодействие прикладного компонента с ядром СУБД невозможно без стандартизованного средства общения.
Запросы, направляемые программой ядру, должны быть понятны обеим сторонам.
Для этого их следует сформулировать на специальном языке. Но в СУБД уже существует язык SQL, о котором речь шла выше. Поэтому было бы целесообразно использовать его не только в качестве средства доступа к данным, но и как стандарта общения клиента и сервера.

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

Наряду с RDA-моделью все большую популярность приобретает перспективная DBS-модель. Последняя реализована в некоторых реляционных
СУБД (Informix, Ingres, Sybase, Oracle, InterBase). Ее основу составляет механизм хранимых процедур - средство программирования SQL-сервера.
Процедуры хранятся в словаре базы данных, разделяются между несколькими клиентами и выполняются на том же компьютере, где функционирует SQL-сервер.
Язык, на котором разрабатываются хранимые процедуры (SQL/PTL), представляет собой процедурное расширение языка запросов SQL и уникален для каждой конкретной СУБД.

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

[pic]

Рис.1.3. Модель сервера баз данных.

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

В AS-модели процесс, выполняющийся на компьютере-клиенте, отвечает, как обычно, за интерфейс с пользователем (то есть реализует функции первой группы). Обращаясь за выполнением услуг к прикладному компоненту, этот процесс играет роль клиента приложения (Application Client - AC).
Прикладной компонент реализован как группа процессов, выполняющих прикладные функции и называется сервером приложения (Application Server -
AS). Все операции над информационными ресурсами выполняются соответствующим компонентом, по отношению к которому AS играет роль клиента. Из прикладных компонентов доступны ресурсы различных типов - базы данных, очереди, почтовые службы и др.

[pic]

Рис.1.4. Модель сервера приложений.

RDA- и DBS-модели опираются на двухзвенную схему разделения функций. В
RDA-модели прикладные функции приданы программе-клиенту, в DBS-модели ответственность за их выполнение берет на себя ядро СУБД. В первом случае прикладной компонент сливается с компонентом представления, во втором - интегрируется в компонент доступа к информационным ресурсам. В AS-модели реализована трехзвенная схема разделения функций, где прикладной компонент выделен как важнейший изолированный элемент приложения, для его определения используются универсальные механизмы многозадачной операционной системы, и стандартизованы интерфейсы с двумя другими компонентами. AS-модель является фундаментом для мониторов обработки транзакций (Transaction Processing
Monitors - TPM), или, проще, мониторов транзакций, которые выделяются как особый вид программного обеспечения.

В период создания первых СУБД технология "клиент-сервер" только зарождалась. Поэтому изначально в архитектуре систем не было адекватного механизма организации взаимодействия такого типа, в современных же системах он жизненно необходим.

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

Проблемы, возникающие в модели "один-к-одному", решаются в архитектуре систем с выделенным сервером, способным обрабатывать запросы от многих клиентов. Сервер единственный обладает монополией на управление данными и взаимодействует одновременно со многими клиентами. Логически каждый клиент связан с сервером отдельной нитью (thread) или потоком, по которому пересылаются запросы. Такая архитектура получила название многопотоковой
(multi-threaded).

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

Однако такое решение создает новую проблему. Так как сервер может выполняться только на одном процессоре, возникает естественное ограничение на применение СУБД для мультипроцессорных платформ. Если компьютер имеет, например, четыре процессора, то СУБД с одним сервером используют только один из них, не загружая оставшиеся три.

В некоторых системах эта проблема решается заменой выделенного сервера на диспетчер или виртуальный сервер (virtual server), который теряет право монопольно распоряжаться данными, выполняя только функции диспетчеризации запросов к актуальным серверам. Таким образом, в архитектуру системы добавляется новый слой, который размещается между клиентом и сервером, что увеличивает трату ресурсов на поддержку баланса загрузки (load balancing) и ограничивает возможности управления взаимодействием "клиент-сервер". Во- первых, становится невозможным направить запрос от конкретного клиента конкретному серверу, во-вторых, серверы становятся равноправными - невозможно устанавливать приоритеты для обслуживания запросов.

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

1.2.2 Механизмы реализации активного ядра

Профессиональные СУБД обладают мощным активным сервером базы данных.
Идея активного сервера принципиально изменяет представление о роли, масштабах и принципах использования СУБД, а в чисто практическом плане позволяет выбрать современные, эффективные методы построения глобальных информационных систем.

Объекты реального мира, помимо непосредственных, прямых связей, имеют друг с другом иные, более сложные причинно-следственные связи. Эти связи и процессы должны каким-то образом отражаться в базе данных, если мы имеем в виду не статичное хранилище, а информационную модель части реального мира.
Иными словами, в базе, помимо собственно данных и непосредственных связей между ними, должны храниться знания о данных, а она сама должна адекватно отражать процессы, происходящие в реальном мире. Следовательно, необходимо иметь средства хранения и управления такой информацией.

Данные требования выливаются в решение следующих задач.

1. Необходимо, чтобы база данных в любой момент времени правильно отражала состояние предметной области - данные должны быть взаимно непротиворечивыми.

2. База данных должна отражать некоторые правила предметной области, законы, по которым она функционирует (business rules).

3. Необходим постоянный контроль за состоянием базы данных, отслеживание всех изменений, и адекватная реакция на них.

4. Необходимо, чтобы возникновение некоторой ситуации в базе данных четко и оперативно влияло на ход выполнения прикладной программы.

Многие программы требуют оперативного оповещения о всех происходящих в базе данных изменениях.

Важная проблема СУБД - контроль типов данных. Тип данных определяется при создании таблицы. Каждому столбцу присваивается один из стандартных типов данных, разрешенных в СУБД. Как правило, это данные стандартных типов
- числа, целые и вещественные, строки символов, а также данные типа "дата",
"время" и "денежная единица".

Идеи, реализованные в СУБД третьего поколения, заключаются в том, что знания выносятся за рамки прикладных программ и оформляются как объекты базы данных. Функции применения знаний начинает выполнять непосредственно сервер баз данных.

Такая архитектура является воплощением концепции активного сервера.
Она реализуется четырьмя сущностями:

. процедурами базы данных;

. правилами (триггерами);

. событиями в базе данных;

. типами данных, определяемыми пользователем;


1.2.3 Хранимые процедуры

В различных СУБД они носят название хранимых (stored), присоединенных, разделяемых и т.д. Ниже будем пользоваться терминологией, принятой в СУБД
InterBase.

Использование процедур базы данных преследует четыре цели:

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

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

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

. Процедуры базы данных в сочетании с правилами, предоставляют администратору мощные средства поддержки целостности базы данных.

В современных СУБД процедура хранится непосредственно в базе данных и контролируется ее администратором. Она имеет параметры и возвращает значение. Процедура базы данных создается оператором CREATE PROCEDURE
(СОЗДАТЬ ПРОЦЕДУРУ) и содержит определения переменных, операторы SQL
(например, SELECT, INSERT), операторы проверки условий (IF/THEN/ ELSE) операторы цикла (FOR, WHILE), а также некоторые другие.


1.2.4 Правила (триггеры)

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

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

Таким образом, правило позволяет определить реакцию сервера на любое изменение состояния базы данных. Правила (так же, как и процедуры) хранятся непосредственно в базе данных независимо от прикладных программ. Одна из целей механизма правил - отражение некоторых внешних правил деятельности организации.
Важнейшая цель механизма правил - обеспечение целостности базы данных. Один из аспектов целостности - целостность по ссылкам (referential integrity) - относится к связи двух таблиц между собой. Эта связь поддерживается внешними ключами. Механизм правил позволяет реализовать и более общие ограничения целостности.


1.2.5 Механизм событий

Механизм событий в базе данных (database events) позволяет прикладным программам и серверу базы данных уведомлять другие программы о наступлении в базе данных определенного события и тем самым синхронизировать их работу.
Операторы языка SQL, обеспечивающие уведомление, называют сигнализаторами событий в базе данных (database event alerters). Функции управления событиями целиком ложатся на сервер базы данных.

Механизм событий используется следующим образом. Вначале в базе данных для каждого события создается флажок, состояние которого будет оповещать прикладные программы о том, что некоторое событие имело место (оператор
CREATE DBEVENT - СОЗДАТЬ СОБЫТИЕ). Далее, во все прикладные программы, на ход выполнения которых может повлиять это событие, включается оператор
REGISTER DBEVENT (ЗАРЕГИСТРИРОВАТЬ СОБЫТИЕ), который оповещает сервер базы данных, что программа заинтересована в получении сообщения о наступлении события. Теперь любая прикладная программа или процедура базы данных может вызвать событие оператором RAISE DBEVENT (ВЫЗВАТЬ СОБЫТИЕ). Как только событие произошло, каждая зарегистрированная программа может получить его, для чего она должна запросить очередное сообщение из очереди событий
(оператор GET DBEVENT - ПОЛУЧИТЬ СОБЫТИЕ) и запросить информацию о событии, в частности, его имя (оператор SQL INQUIRE_SQL).


1.3 Обработка распределенных данных

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

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

Ответом на задачи реальной жизни стали две технологии: технология распределенных баз данных (Distributed Database) и технология тиражирования данных (Data Replication).

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

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

Ранее были рассмотрены четыре модели технологии "клиент-сервер".
Традиционной и наиболее популярной является модель доступа к удаленным данным (RDA-модель). В соответствии с этой моделью, имеется компьютер, на котором запускаются программы переднего плана (в которых реализованы как функции интерфейса с пользователем, так и прикладные функции) - клиент
(называемый обычно локальным узлом - local node), соединенный в сети с компьютером, на котором выполняется сервер базы данных и находится сама база данных (обычно его называют удаленным узлом - remote node). Все проблемы, возникающие при взаимодействии клиента и сервера, должен решать специальный компонент СУБД, называемый коммуникационным сервером
(Communication Server, DBMS Server Net). Для поддержки взаимодействия клиента и сервера он должен функционировать на удаленном узле; в то же время на локальном узле должна выполняться программа связи, взаимодействующая с коммуникационным сервером (DBMS Client Net).

В основу взаимодействия прикладных программ - клиентов и сервера базы данных, положен ряд фундаментальных принципов, определяющих функциональные возможности современных СУБД в части, касающейся сетевого взаимодействия и распределенной обработки данных, среди которых:

. Прозрачность расположения;

. Прозрачность сети;

. Автоматическое преобразование форматов данных;

. Автоматическая трансляция кодов;

. Межоперабельность;

. Прозрачность расположения.

Прозрачный (для пользователя) доступ к удаленным данным предполагает использование в прикладных программах такого интерфейса с сервером БД, который позволяет переносить данные в сети с одного узла на другой, не требуя при этом модификации текста программы. Иными словами, доступ к информационным ресурсам должен быть полностью прозрачен относительно расположения данных.

Любой пользователь или любая прикладная программа оперирует с одной или несколькими базами данных. В том случае, когда прикладная программа и сервер БД выполняются на одном и том же узле, проблемы расположения не возникает. Для получения доступа к базе данных, пользователю или программе достаточно указать имя базы.

Однако в том случае, когда прикладная программа запускается на локальном узле, а база данных находится на удаленном, возникает проблема идентификации удаленного узла. Для того, чтобы получить доступ к базе данных на удаленном узле, необходимо указать имя удаленного узла и имя базы данных. Если использовать жестко фиксированное имя узла в паре "имя_узла, имя_БД", то прикладная программа становится зависимой от расположения БД.
Например, обращение к БД "host::stock", где первый компонент есть имя узла, будет зависимым от расположения.

Одно из возможных решений этой проблемы состоит в использовании виртуальных имен узлов. Управление ими обеспечивается специальным программным компонентом СУБД - сервером имен (Name Server), который адресует запросы клиентов к серверам.

При установке компонентов DBMS Client Net на локальных узлах выполняется процедура идентификации узлов, когда реальному имени удаленного узла ставится в соответствие виртуальное имя, которое затем используется при обращении к базе данных. Если база данных перенесена на другой узел, то никаких изменений в прикладную программу вносить не нужно - достаточно лишь поставить в соответствие виртуальному имени имя нового узла.

Клиент и сервер взаимодействуют по сети с конкретной топологией; для поддержки взаимодействия всегда используется определенный протокол.
Следовательно, оно должно быть организовано таким образом, чтобы обеспечивать независимость как от используемого сетевого аппаратного обеспечения, так и от протоколов сетевого обмена. Чтобы обеспечить прозрачный доступ пользователей и программ к удаленным данным в сети, объединяющей разнородные компьютеры, коммуникационный сервер должен поддерживать как можно более широкий диапазон сетевых протоколов (TCP/IP,
DECnet, SNA, SPX/IPX, NetBIOS, AppleTalk, и др.).

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

В неоднородной компьютерной среде при взаимодействии клиента и сервера возникает также задача трансляции кодов. Сервер может работать с одной кодовой таблицей (например, EBCDIC), клиент - с другой (например, ASCII), при этом происходит рассогласование трактовки кодов символов. Поэтому, если на локальном узле используется одна кодовая таблица, а на удаленном - другая, то при передаче запросов по сети и при получении ответов на них необходимо обеспечить трансляцию кодов. Решение этой задачи также ложится на коммуникационный сервер.

В реальной жизни сервер базы данных должен обслуживать одновременно множество запросов от клиентов - следовательно, в один момент времени таких пар «клиент-сервер» может быть несколько. Таким образом, все проблемы взаимодействия должны решаться коммуникационным сервером для всех этих взаимодействующих пар.

Системы с архитектурой "один-к-одному" для обслуживания сервером базы данных одновременно множества клиентов вынуждены загружать отдельный коммуникационный сервер для каждой пары "клиент-сервер". В результате нагрузка на операционную систему увеличивается, резко возрастает общее число ее процессов, расходующих вычислительные ресурсы. Это - один из недостатков архитектуры "один-к-одному".

Именно поэтому для современных распределенных СУБД важно иметь многопотоковый коммуникационный сервер, который берет на себя задачи сетевой поддержки множества клиентов, одновременно обращающихся к серверу.
На каждом узле сети он поддерживает множество пар соединений "клиент- сервер" и позволяет существовать одновременно множеству независимых сеансов работы с базами данных.

С точки зрения клиента доступ к распределенной базе данных должен выглядеть точно так же, как доступ к централизованной БД. При организации прозрачного доступа к распределенной базе данных возникают следующие задачи:

. Управление именами в распределенной среде;

. Оптимизация распределенных запросов;

. Управление распределенными транзакциями.

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

Глобальный словарь данных - это механизм отслеживания расположения объектов в распределенной БД. Данные могут храниться на локальном узле, на удаленном узле, или на обоих узлах - их расположение должно оставаться прозрачным как для конечного пользователя, так и для программ. Не нужно явным образом указывать место расположения данных - программа должна быть полностью независима от того, на каких узлах размещаются данные, с которыми она оперирует.

Что касается второй задачи, то она требует интеллектуального решения.
Распределенный запрос затрагивает несколько баз данных на различных узлах, причем объемы выборки могут быть весьма различными. Возможны ситуации, когда результирующая таблица запроса представляет собой объединение (join) двух таблиц, причем одна из них находится на локальном узле, а другая - на удаленном. Данный запрос - распределенный, так как затрагивает таблицы, принадлежащие различным базам данных. Для его нормального выполнения необходимо иметь обе исходные таблицы на одном узле. Следовательно, одна из таблиц должна быть передана по сети. Очевидно, что это должна быть таблица меньшего размера. Поэтому оптимизатор распределенных запросов обязательно должен учитывать размеры таблиц. В противном случае запрос будет выполняться непредсказуемо долго.

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

Решение всех трех задач, возложено на специальный компонент СУБД - сервер распределенных баз данных (Distributed Database Server).

Если база данных расположена на одном узле, а сервер БД и прикладная программа выполняются там же, то не требуется ни коммуникационный сервер, ни сервер распределенной БД. Когда же прикладная программа выполняется на локальном узле, БД находится на удаленном узле и там же выполняется сервер
БД, то на удаленном узле необходим коммуникационный сервер, а на локальном
- сервисная коммуникационная программа.

Если локальные БД расположены на нескольких узлах, то для доступа к распределенной БД необходим и сервер распределенной БД, и коммуникационный сервер.

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

Для СУБД это качество означает следующее:

. способность приложений, созданных средствами разработки данной СУБД, оперировать над базами данных в "чужом" формате так, как будто это собственные базы данных;

. свойство СУБД, позволяющее ей служить в качестве поставщика данных для любых приложений, созданных средствами разработки третьих фирм, поддерживающих некоторый стандарт обращения к базам данных.

Первое достигается использованием шлюзов, второе - использованием интерфейсов ODBC (Open Database Connectivity) и BDE (Borland Database
Engine).

Современные информационные системы требуют доступа к разнородным базам данных. Это означает, что в прикладной программе для реализации запросов к базам данных должны быть использованы такие средства, чтобы запросы были понятны различным СУБД, как реляционным, так и опирающимся на другие модели данных. Одним из возможных путей является обобщенный набор различных диалектов языка SQL.

Существует альтернатива технологии распределенных БД - тиражирование данных. Принципиальное отличие технологии тиражирования данных от технологии распределенных баз данных (которую часто для краткости называют технологией STAR) заключается в отказе от распределенных данных. Ее суть состоит в том, что любая БД (как для СУБД, так и для работающих с ней пользователей) всегда является локальной; данные всегда размещаются локально на том узле сети, где они обрабатываются; все транзакции в системе завершаются локально.

Тиражирование данных - это асинхронный перенос изменений объектов исходной базы данных (source database) в БД, принадлежащие различным узлам распределенной системы. Функции тиражирования данных выполняет специальный модуль СУБД - сервер тиражирования данных, называемый репликатором
(replicator). Его задача - поддержка идентичности данных в принимающих базах данных (target database) данным в исходной БД. Сигналом для запуска репликатора служит срабатывание триггера, перехватывающего любые изменения тиражируемого объекта БД. Возможно и программное управление репликатором посредством сигнализаторов о событиях в базе данных.

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

Детали тиражирования данных полностью скрыты от прикладной программы; ее функционирование никак не зависит от работы репликатора, который целиком находится в ведении администратора БД. Следовательно, для переноса программы в распределенную среду с тиражируемыми данными не требуется ее модифицировать.

Особенность технологии распределенных БД - синхронное завершение транзакций одновременно на нескольких узлах распределенной системы, то есть синхронная фиксация изменений в распределенной БД. Недостаток технологии
STAR - жесткие требования к производительности и надежности каналов связи.
Если БД распределена по нескольким территориально удаленным узлам, объединенным медленными и ненадежными каналами связи, а число одновременно работающих пользователей составляет десятки и выше, то вероятность того, что распределенная транзакция будет зафиксирована в обозримом временном интервале, становится чрезвычайно малой. В таких условиях обработка распределенных данных практически невозможна.

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

Преимущества технологии тиражирования данных:

1. Данные всегда расположены там, где они обрабатываются - следовательно, скорость доступа к ним существенно увеличивается.

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

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

4. Никакой продолжительный сбой связи не в состоянии нарушить передачу изменений. Дело в том, что тиражирование предполагает буферизацию потока изменений (транзакций); после восстановления связи передача возобновляется с той транзакции, на которой тиражирование было прервано.

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

1.4 Взаимодействие с PC-ориентированными СУБД

Первоначально профессиональные СУБД создавались для мощных высокопроизводительных платформ - IBM, DEC, Helwett-Packard, Sun. Но затем, учитывая все возрастающую популярность и широкое распространение персональных компьютеров, разработчики приступили к переносу (портированию)
СУБД в операционные среды desktop-компьютеров (OS/2, NetWare, UnixWare, SCO
UNIX).

В настоящее время большинство компаний - поставщиков СУБД развивает три направления своих систем. Во-первых, совершенствование СУБД для корпоративных информационных систем, которые характеризуются большим числом пользователей (от 100 и выше), базами данных огромного объема (их часто называют сверхбольшими базами данных - Very Large Data Base - VLDB), смешанным характером обработки данных (решение задач оперативной обработки транзакций и поддержки принятия решений) и т.д. Это - традиционная область mainframe-систем и приближающихся к ним по производительности RISC- компьютеров.

Другое направление - СУБД, поддерживающие так называемые рабочие группы. Это направление характеризуется относительно небольшим количеством пользователей с сохранением, тем не менее, всех "многопользовательских" качеств. Системы этого класса ориентированы преимущественно на "офисные" применения, не требующие специальных возможностей. Так, большинство современных многопользовательских СУБД имеют версии системы, функционирующие в сетевой операционной системе Novell NetWare. Ядро СУБД оформлено здесь как загружаемый модуль NetWare (NetWare Loadable Module -
NLM), выполняющийся на файловом сервере. База данных также располагается на файловом сервере. SQL-запросы поступают к ядру СУБД от прикладных программ, которые запускаются на станциях сети - персональных компьютерах (отметим, что, несмотря на использование файлового сервера, здесь мы имеем дело с RDA- моделью).

Наконец, новый импульс в развитии получило направление настольных
(desktop) версий СУБД, ориентированных на персональное использование - преимущественно в операционной среде MS Windows (системы этого класса получили неформальное определение "light" или "local").

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

В последние годы (1987-94) в нашей стране было разработано множество программ, ориентированных на использование СУБД типа PARADOX, FoxPRO, dBASE
IV, Clipper. При переходе на более мощную многопользовательскую СУБД у пользователей возникает естественное желание интегрировать уже существующие разработки в эту среду. Например, может возникнуть потребность хранить локальные данные на персональном компьютере и осуществлять к ним доступ с помощью системы FoxPRO, и одновременно иметь доступ к глобальной базе данных под управлением СУБД Oracle. Организация такого доступа, когда программа может одновременно работать и с персональной, и с многопользовательской СУБД, представляет собой сложную проблему по следующей причине.

Как известно, разработчики PC-ориентированных СУБД первоначально использовали свой собственный интерфейс к базам данных, никак не учитывая требования стандарта языка SQL. Лишь впоследствии они стали постепенно включать в свои системы возможности работы с базой данных при помощи SQL. В то же время для истинно многопользовательских СУБД интерфейс SQL - фактический стандарт. При этом возникла задача согласования интерфейсов
СУБД различных классов. Она может решаться несколькими способами, но большинство из них имеют частный характер. Рассмотрим наиболее общее решение этой задачи.

Специалисты фирмы Microsoft разработали стандарт Open Database
Connectivity (ODBC). Он представляет собой стандарт прикладного программного интерфейса прикладных (Application Programming Interface -
API) и позволяет программам, работающим в среде Microsoft Windows, взаимодействовать (посредством операторов языка SQL) с различными СУБД, как персональными, так и многопользовательскими, функционирующими в различных операционных системах. Фактически, интерфейс ODBC универсальным образом отделяет чисто прикладную, содержательную сторону приложений (обработка электронных таблиц, статистический анализ, деловая графика) от собственно обработки и обмена данными с СУБД. Основная цель ODBC - сделать взаимодействие приложения и СУБД прозрачным, не зависящим от класса и особенностей используемой СУБД (мобильным с точки зрения используемой
СУБД).

Отметим, что стандарт ODBC является неотъемлемой частью семейства стандартов, облегчающих написание и обеспечивающих вертикальную открытость приложений (WOSA - Windows Open Services Architecture - открытая архитектура сервисов системы Windows).

Интерфейс ODBC обеспечивает взаимную совместимость серверных и клиентских компонентов доступа к данным. Для реализации унифицированного доступа к различным СУБД было введено понятие драйвера ODBC
(представляющего собой динамически загружаемую библиотеку).

ODBC-архитектура содержит четыре компонента:

. приложение;

. менеджер драйверов;

. драйверы;

. источники данных.

Роли среди них распределены следующим образом. Приложение вызывает функции ODBC для выполнения SQL-инструкций, получает и интерпретирует результаты; менеджер драйверов загружает ODBC-драйверы, когда этого требует приложение; ODBC-драйверы обрабатывают вызовы функций ODBC, передают операторы SQL СУБД и возвращают результат в приложение; источник данных
(data source) - объект, скрывающий СУБД, детали сетевого интерфейса, расположение и полное имя базы данных и т.д.

Действия, выполняемые приложением, использующим интерфейс ODBC, сводятся к следующему. Для начала сеанса работы с базой данных приложение должно подключиться к источнику данных, ее скрывающему. Затем приложение обращается к базе данных, посылая SQL-инструкции, запрашивает результаты, отслеживает и реагирует на ошибки и т.д., то есть имеет место стандартная схема взаимодействия приложения и сервера БД, характерная для RDA-модели.
Важно, что стандарт ODBC включает функции управления транзакциями (начало, фиксация, откат транзакции). Завершив сеанс работы, приложение должно отключиться от источника данных.

Слой доступа к данным, подобный ODBC использует в своих продуктах компания Borland. Эта система носит название Borland Database Engine (BDE) и имеет некоторые преимущества по сравнению с ODBC.


1.5 Обработка транзакций

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

Существуют различные модели транзакций, которые могут быть классифицированы на основании различных свойств, включающих структуру транзакции, параллельность внутри транзакции, продолжительность и т.д. Чаще всего имеют в виду традиционные транзакции, характеризуемые четырьмя классическими свойствами: атомарности, согласованности, изолированности, долговечности (прочности) - ACID (Atomicity, Consistency, Isolation,
Durability). Иногда традиционные транзакции называют ACID-транзакциями.
Упомянутые выше свойства означают следующее:

1. Свойство атомарности выражается в том, что транзакция должна быть выполнена в целом или не выполнена вовсе.

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

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

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

(даже в случае последующих ошибок).

Расширенные транзакции допускают формирование из ACID-транзакций иерархических структур. Если конкретная модель ослабляет некоторые из требований ACID, то речь идет об ослабленной транзакции.

Возможны два варианта завершения транзакции. Если все операторы выполнены успешно, и в процессе выполнения транзакции не произошло никаких сбоев программного или аппаратного обеспечения, транзакция фиксируется.

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

Если в процессе выполнения транзакции произошла ошибка, база данных должна быть возвращена в исходное состояние. Откат транзакции - это действие, обеспечивающее аннулирование всех изменений данных, которые были сделаны операторами SQL в теле текущей незавершенной транзакции.

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

В стандарте ANSI/ISO SQL определены модель транзакций и функции операторов COMMIT и ROLLBACK. Стандарт определяет, что транзакция начинается с первого SQL-оператора, инициируемого пользователем или содержащегося в программе. Все последующие SQL-операторы составляют тело транзакции. Транзакция завершается одним из четырех возможных способов:

. оператор COMMIT означает успешное завершение транзакции; его использование делает постоянными изменения, внесенные в базу данных в рамках текущей транзакции;

. оператор ROLLBACK прерывает транзакцию, отменяя изменения, сделанные в базе данных в рамках этой транзакции; новая транзакция начинается непосредственно после использования ROLLBACK;

. успешное завершение программы, в которой была инициирована текущая транзакция, означает успешное завершение транзакции (как будто был использован оператор COMMIT);

. ошибочное завершение программы прерывает транзакцию (как будто был использован оператор ROLLBACK).

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

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

При выполнении любого оператора SQL, который модифицирует базу данных,
СУБД автоматически заносит очередную запись в журнал транзакций. Запись состоит из двух компонентов: первый - это состояние строки до внесения изменений, второй - ее же состояние после внесения изменений. Только после занесения записи в журнал транзакций (идеология «write ahead log»), СУБД действительно модифицирует базу данных. Если после данного оператора SQL был выполнен оператор COMMIT, то в журнале транзакций делается отметка о завершении текущей транзакции. Если же после оператора SQL следовал оператор ROLLBACK, то СУБД просматривает журнал транзакций и отыскивает записи, отражающие состояние измененных строк до модификации. Используя их,
СУБД восстанавливает те строки в таблицах базы данных, которые были модифицированы текущей транзакцией - таким образом аннулируются все изменения в базе данных.

Важные проблемы многопользовательских СУБД связаны с организацией с помощью механизма транзакций одновременного доступа множества пользователей к одним и тем же данным. Они кратко могут быть сформулированы как потеря изменений, незафиксированные изменения и ряд других, более сложных проблем.

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

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

1. В процессе выполнения транзакции пользователь (или программа)

"видит" только согласованные состояния базы данных. Пользователь

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

2. Если две транзакции, A и B, выполняются параллельно, то СУБД полагает, что результат будет такой же, как если бы:

. транзакция A выполнялась первой, а за ней была выполнена транзакция B;

. транзакция B выполнялась первой, а за ней была выполнена транзакция A.

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

Транзакции могут попасть в тупиковую ситуацию, состояние неразрешимой взаимоблокировки. Для её предотвращения СУБД периодически проверяет блокировки, установленные активными транзакциями. Если СУБД обнаруживает взаимоблокировки, она выбирает одну из транзакций, вызвавшую ситуацию взаимоблокировки, и прерывает ее. Это освобождает данные для внесения изменений конкурирующей транзакцией, разрешая тупиковую ситуацию.
Программа, которая инициировала прерванную транзакцию, получает сообщение об ошибке, информирующее ее о причине прерывания (имела место тупиковая ситуация). Избежать их может и правильная стратегия внесения изменений в базу данных. Одним из наиболее простых и эффективных правил может быть следующее: все программы, которые обновляют одни и те же таблицы, должны, по мере возможности, делать это в одинаковой последовательности.

В современных СУБД предусмотрен так называемый протокол двухфазовой
(или двухфазной) фиксации транзакций (two-phase commit). Фаза 1 начинается, когда при обработке транзакции встретился оператор COMMIT. Сервер распределенной БД (или компонент СУБД, отвечающий за обработку распределенных транзакций) направляет уведомление "подготовиться к фиксации" всем серверам локальных БД, выполняющим распределенную транзакцию. Если все серверы приготовились к фиксации (то есть откликнулись на уведомление и отклик был получен), сервер распределенной БД принимает решение о фиксации. Серверы локальных БД остаются в состоянии готовности и ожидают от него команды "зафиксировать". Если хотя бы один из серверов не откликнулся на уведомление в силу каких-либо причин, будь то аппаратная или программная ошибка, то сервер распределенной БД откатывает локальные транзакции на всех узлах, включая даже те, которые подготовились к фиксации и оповестили его об этом.

Фаза 2 - сервер распределенной БД направляет команду "зафиксировать" всем узлам, затронутым транзакцией, и гарантирует, что транзакции на них будут зафиксированы. Если связь с локальной базой данных потеряна в интервал времени между моментом, когда сервер распределенной БД принимает решение о фиксации транзакции и моментом, когда сервер локальной БД подчиняется его команде, то сервер распределенной БД продолжает попытки завершить транзакцию, пока связь не будет восстановлена.


1.6 Средства защиты данных в СУБД

Существенным аспектом современных СУБД является защита данных. В самом общем виде требования к безопасности реляционных СУБД формулируются так:

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

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

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

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

. Пользователи СУБД рассматриваются как основные действующие лица, желающие получить доступ к данным. СУБД от имени конкретного пользователя выполняет операции над базой данных, то есть добавляет строки в таблицы (INSERT), удаляет строки (DELETE), обновляет данные в строках таблицы (UPDATE). Она делает это в зависимости от того, обладает ли конкретный пользователь правами на выполнение конкретных операций над конкретным объектом базы данных.

. Объекты доступа - это элементы базы данных, доступом к которым можно управлять (разрешать доступ или защищать от доступа). Обычно объектами доступа являются таблицы, однако ими могут быть и другие объекты базы данных - формы, отчеты, прикладные программы и т.д.

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

. Привилегии (priveleges) - это операции, которые разрешено выполнять пользователю над конкретными объектами.

Таким образом, в СУБД авторизация доступа осуществляется с помощью привилегий. Установление и контроль привилегий - задача администратора базы данных.

Привилегии устанавливаются и отменяются специальными операторами языка
SQL - GRANT (ПЕРЕДАТЬ) и REVOKE (ОТОБРАТЬ). Оператор GRANT указывает конкретного пользователя, который получает конкретные привилегии доступа к указанной таблице.

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

Некоторые СУБД (Oracle, Sybase, InterBase) используют собственную систему паролей, в других (Ingres, Informix, MS SQL Server) применяется идентификатор пользователя и его пароль из операционной системы.

Для облегчения процесса администрирования большого количества пользователей их объединяют в группы. Традиционно применяются два способа определения групп пользователей:

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

"обобщенного" пользователя. Однако такой способ в основном предполагает разрешение на просмотр, быть может, на включение, но ни в коем случае - на удаление и обновление. Как только идентификатор

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

2. Конкретному физическому лицу присваивается уникальный идентификатор.

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

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

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

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

В СУБД Ingres и Oracle это решение обеспечивается механизмом ролей
(role). Роль представляет собой именованный объект, хранящийся в базе данных. Роль связывается с конкретной прикладной программой для придания последней привилегий доступа к базам данных, таблицам, представлениям и процедурам базы данных. Роль создается и удаляется администратором базы данных, ей может быть придан определенный пароль. Как только роль создана, ей можно предоставить привилегии доступа к объектам базы данных.

Современные информационные системы обеспечивают также другую схему безопасности - обязательный или принудительный контроль доступа (mandatory access control). Он основан на отказе от понятия владельца данных и опирается на так называемые метки безопасности (security labels), которые присваиваются данным при их создании. Каждая из меток соответствует некоторому уровню безопасности. Метки служат для классификации данных по уровням.

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

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

Это означает, например, что строки таблицы, отмеченные как строки уровня максимальной безопасности, может увидеть только тот пользователь, у которого уровень безопасности - наивысший. Пользователи определенного уровня секретности могут видеть строки таблицы, отмеченные для их уровня безопасности, равно как и для всех уровней ниже данного. СУБД проверяет уровень безопасности пользователя и, в ответ на его запрос, возвращает только те строки таблицы, которые удовлетворяют запросу и соответствуют этому уровню.

По оценкам экспертов, концепция многоуровневой безопасности в ближайшие годы будет использована в большинстве коммерческих СУБД.


1.7 Применение CASE-средств для информационного моделирования в системах обработки данных .

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

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

Computer Aided Software Engineering (CASE) - это технология автоматизированного проектирования информационных систем, позволяющая значительно ускорить процесс их разработки, сократить затраты труда, а также повысить качество проектирования.

Под этим следует понимать совокупность методов и средств, применяемых в программной инженерии.

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

Стандартный подход выделяет в жизненном цикле программной разработки несколько этапов:

. анализ;

. проектирование;

. программирование;

. тестирование;

. сопровождение.

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

Такое возможно только с использованием CASE-средств.

На этапах анализа и проектирования принимаются решения, которые оказывают решающее влияние на конечный продукт. Поэтому обычно CASE- средства применяют прежде всего на этих этапах.

Основной частью этапа проектирования является построение информационной модели объекта. При разработке прикладной системы по схеме
“сверху - вниз”, информационная модель постепенно дополняется и детализируется.

На завершающий стадии этапа проектирования на основе информационной модели выполняется генерация объектов БД: таблиц, индексов, ключей последовательностей и т.д.

2. Реализация распределенной базы данных с удаленным доступом

В качестве примера реализации распределенной базы данных рассмотрим информационную систему для автоматизации расчетов с абонентами АО
«Связьинформ» РМ.

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

Основные требования к системе таковы:

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


2.1 Анализ существующей системы

Для определения потребностей в построении системы расчета с абонентами и определения её структуры проведем анализ уже существующей схемы обмена данными.

Схема функционирования организации в первом приближении такова:

1. АО «Связьинформ» оказывает своим клиентам услуги в области связи.

2. Клиенты оплачивают оказанные услуги.

[pic]

Рис.2.1. Схема функционирования в первом приближении.

Внутренняя структура предприятия в самом общем виде может быть представлена следующим образом:

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

2. В каждом районе Республики Мордовия функционируют районные узлы связи (РУС) или эксплуатационно-технические узлы связи (ЭТУС), которые напрямую подчиняются управлению связи.

3. Существуют филиалы АО «Связьинформ», такие как ГТС, МТС, СТС и т.д.

4. Каждое из подразделений направляет в управлений связи ежемесячные отчеты.

Существующая система обмена информацией и её хранения такова:

1. Расчет за услуги связи каждый клиент проводит с РУС или ЭТУС по месту установки телефона.

2. В каждом из РУС или ЭТУС установлен персональный компьютер, на котором функционирует программный комплекс «Парус». В конце каждого месяца проводится расчет за услуги связи, в соответствие с которым выставляются счета клиентам.

3. Отчеты по проведенным расчетам пересылаются по электронной почте в управление связи.

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


2.2 Новая схема обмена информацией

Учитывая перечисленные недостатки возникла необходимость организации единого информационного пространства для решения поставленных задач. Суть решения в следующем:

1. Провести установку в каждом из РУС или ЭТУС серверов для обработки и хранения данных по отдельно взятому району.

2. В управлении связи установить сервер, который будет хранить данные расчетов с абонентами по всей республике Мордовия.

3. Наладить каналы связи между районными узлами и управлением.

4. Построить распределенную базу данных по расчетам за услуги связи по всей Мордовии.

5. Разместить полученную базу на районных серверах с репликацией данных на сервер управления связи.

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

[pic]

Рис. 2.2. Идеология информационной системы расчетов с абонентами.

Данная схема обладает следующими достоинствами по сравнению с предыдущей:

1. За счет использования выделенных серверов резко возрастает нагрузочная способность системы.

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

3. Появляется возможность централизованного администрирования полученной системы.

4. Возможно гибкое распределение прав пользователей на доступ к данным.

5. За счет реализации принципа избыточности при хранении данных повышается надежность хранения. (В любой момент времени в системе существует две копии данных: одна на сервере управления связи, другая распределена между районными серверами).

6. Возможно практически неограниченное масштабирование системы.


2.3 Выбор операционной системы

В данное время на рынке операционных систем широко представлены несколько продуктов:

. UNIX-системы

. Системы семейства Novell NetWare

. Системы на основе Windows NT

К достоинствам систем UNIX (Solaris, AIX, Linux, BSD UNIX, UNIX System
V) относится вытесняющая многозадачность, стабильность, высокая производительность, поддержка мультипроцессорных систем и систем с массовым параллелизмом. Эти системы представлены на рынке очень давно, что позволяет говорить об их надежности. К их недостаткам относится высокая стоимость программного и аппаратного обеспечения (большинство систем функционируют на
RISC платформах). Кроме того, системы на базе UNIX сложны в администрировании и слабо стандартизованы, что затрудняет построение на их основе интегрированных решений.

Системы на основе Novell NetWare построены на основе корпоративной многозадачности, что делает практически невозможным их применение в качестве серверов приложений и баз данных. Длительная транзакция со стороны одного из клиентов сервера Novell NetWare приводит к невозможности доступа других клиентов к ресурсам сервера. Все процессы на сервере выполняются в нулевом кольце защиты процессора, таким образом ошибка в одном из них с большой вероятностью приводит к краху всей системы вплоть до потери файлов. Это приводит к невозможности выполнения пользовательских процессов на сервере. В настоящее время системы на базе Novell NetWare используются в большинстве случаев как файл-серверы.

Системы Windows NT появились на рынке достаточно давно, но широкое распространение они получили только с момента выхода версии 3.5.
В них реализована вытесняющая многозадачность, что делает эти системы хорошей основой для серверов приложений. Системы на базе Windows NT отвечают требованиям уровня безопасности C2 Министерства обороны США, что позволяет их использовать в самых ответственных приложениях. Windows NT функционирует как на платформе Intel, так и на RISC платформах, что дает возможность легко наращивать мощность системы по мере увеличения потока данных. Так как в качестве клиентских мест в системе будут использоваться компьютеры под управлений Windows 95/Windows 3.11, использование Windows NT в качестве сервера позволит создать целостную информационную систему.
Следует учитывать также и наличие достаточно большого количества программистов, имеющих опыт работы с Windows 95, которые могут после дополнительной подготовки разрабатывать серверные части приложений под управлением Windows NT.

Учитывая тенденции развития рынка операционных систем в качестве платформы для реализации информационной системы выбрана Windows NT 4.0.


2.4 Выбор сервера баз данных

Основные требования, предъявляемые к серверу баз данных таковы:

. Хорошая масштабируемость

. Высокая производительность

. Легкость в администрировании

. Наличие мощных инструментов для разработки приложений

. Низкая цена рабочего места

В настоящее время на рынке серверов баз данных представлено множество систем. Среди них Oracle, Informix, Sybase, Open Ingres, IBM DB2, Borland
InterBase, Microsoft SQL Server и др.

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

Исходя из сравнительных характеристик данных серверов баз данных в качестве платформы для реализации корпоративной информационной системы был выбран сервер Borland InterBase 4.0 для Windows NT.

Borland InterBase Workgroup Server - сервер реляционных баз данных, оптимизированный для реализации технологии upsizing (укрупнения) многопользовательских приложений.

Версия InterBase 4.0 - сервера, традиционно доступного на всех основных UNIX-платформах (IBM, Sun, HP), оптимизирована для использования на Novell NetWare и Windows NT и обладает рядом функций, обязательных для современного SQL-сервера баз данных. К таким функциям относятся наличие хранимых процедур, расширенная поддержка триггеров, декларативная ссылочная целостность и т.д. Эти функции соответствуют стандарту ANSI/ISO SQL92 или, где возможно, проекту SQL3.

Важной особенностью InterBase является поддержка технологии C/S
Express. Это особенно полезно при использовании InterBase 4.0 в качестве upsizing средства, т.к. позволяет сохранить привычную навигационную нотацию файл-серверной модели при переходе к архитектуре C/S.

Возможность обеспечивать как навигационный, так и SQL доступ к данным, является уникальной и делает InterBase 4.0, привлекательным средством для построения информационных систем различного масштаба - от небольшой рабочей группы до целого предприятия.

Borland InterBase Workgroup Server обладает рядом свойств, позволяющих решать задачи оперативной обработки транзакций и обеспечивать режим поддержки принятия решений. Среди таких свойств важнейшими являются технология многоверсионности (Versioning Engine), поддержка распределенных баз данных и наличие нестандартных типов данных.

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

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

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

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

Технология построения InterBase позволяет создавать распределенные базы данных и обеспечивает возможность для приложения-клиента открыть необходимое количество БД, что обеспечивается механизмом двухфазной фиксации транзакций (two-phase commit).

Помимо общепринятых типов данных, таких как алфавитно-цифровая информация, даты и т.д., InterBase обладает возможностью работы с неструктурированными данными, сохраняя их в виде объектов типа BLOB (Binary
Large Objects - большие двоичные объекты). В виде BLOB может быть сохранена любая двоичная информация: изображения, оцифрованный звук, исполняемые модули программ. Особенностью реализации BLOB в InterBase является сегментированный доступ к ним, что позволяет увеличить производительность прикладных систем.

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

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

Декларативная целостность обеспечивает непротиворечивость данных на сервере. В отличие от реализации целостности с помощью триггеров декларативная целостность проще в применении и отладке. Существуют четыре категории средств обеспечения декларативной целостности:

. Unique and Primary Key (уникальный первичный ключ) - гарантирует уникальность значения ключевого поля записи;

. Referential Integrity (ссылочная целостность) - гарантирует соответствие значения ключевого поля записи подчиненной таблицы значению ключевого поля в главной таблице;

. Check Constraint (ограничение допустимости) - гарантирует, что правило допустимости, связанное с данным ограничением, истинно для каждой записи в таблице;

. Domain (домен) - позволяет создать новые подтипы с описанием допустимых значений и значений по умолчанию.

. Хранимые процедуры - хранимые процедуры InterBase соответствуют проекту ANSI/ISO SQL 3. В хранимых процедурах допустимы конструкции begin....end, if...then...else, while, for, when и т. д. Внутри хранимых процедур может быть предусмотрена обработка исключений.

Исключения затем могут быть обработаны, используя оператор WHEN.

Хранимые процедуры могут быть вложенными, а также рекурсивными, т.е. вызывать сами себя.

Триггеры - В InterBase возможно явное указание порядка выполнения триггеров, если триггерное условие выполняется для нескольких триггеров одновременно.

Сигнализаторы событий. InterBase полностью поддерживает механизм оповещения о событиях в базе данных.

PC-клиенты подключаются к InterBase 4.0 с помощью технологии интегрированного интерфейса к базам данных (Integrated Database Application
Programming Interface - IDAPI) фирмы Borland, которая является общей технологией промежуточного уровня, используемой в таких программных продуктах Borland, как Paradox и dBASE. Сегодня IDAPI поддерживает связь c dBASE и Paradox через ориентированный на интерактивную работу интерфейс, а подключение к InterBase, Oracle и Sybase - через ориентированный на работу с наборами интерфейс SQL (Borland SQL Link).

Альтернативным способом доступа к данным InterBase может быть технология ODBC. В комплект поставки InterBase входит ODBC драйвер, а все
IDAPI-приложения имеют возможность взаимодействовать с ODBC-совместимым источником данных.

С появлением InterBase 4.0 средства IDAPI поддерживают для InterBase
4.0 специальную технологию связи с базой данных, которая называется Express
Link. Являясь частью технологии IDAPI фирмы Borland, Express Link, минуя собственные средства персонального приложения, обеспечивает через IDAPI прямую связь между персональными приложениями и сервером InterBase.

Подобные функциональные возможности требуют наличия двух компонентов: драйвера и сервера, который может отвечать на команды персонального приложения. С помощью InterBase 4.0 сервер базы данных поддерживает две модели взаимодействия с сервером. С использованием Express Link, InterBase
4.0 может функционировать, как подлинный сервер для клиентов Paradox и dBASE с непосредственной поддержкой в механизме базы данных таких средств, как перемещение по записям и их обновление. Через динамические и встроенные вызовы SQL InterBase 4.0 может также поддерживать операционную среду для традиционных SQL-приложений.

Таким образом, InterBase 4.0 поддерживает две интерфейсных операционных среды:

. Технологию Express Link (использующую IDAPI) с поддержкой таких персональных инструментов, как dBASE, Paradox и другие продукты

Windows на базе IDAPI.

. SQL, позволяющую реализовать доступ на базе статических или динамических операторов SQL.

Основываясь на конкретных потребностях, приложение может свободно сочетать эти модели.

Для взаимодействия с сервером персональное приложение на PC, включая
Paradox и dBASE, может вызывать администратор IDAPI. Сами функции IDAPI по характеру выполняемой ими работы подразделяются на функции перемещения и функции SQL. Вызовы SQL в IDAPI основаны на спецификации X-Open Call Level
Interface, в то время как расширения вызовов персональных приложений IDAPI предназначены для реализации характерной технологии программирования персональных приложений. Для получения общей рабочей среды некоторые вызовы используются совместно как в режиме SQL, так и в режиме перемещения. Режим взаимодействия приложения с сервером InterBase 4.0 обычно определяется режимом текущего вызова IDAPI. Использование SQL или режима перемещения прозрачно для пользователя.

Для поддержки ориентированного на записи доступа обычно требуется выполнение на промежуточном уровне трансляции, преобразующей запросы персонального приложения в команды SQL. Например, чтобы открыть индексный курсор, транслирующий уровень строит оператор SQL с предложением Order By, соответствующим столбцам индекса, а затем выполняет его на сервере.
Фильтрующие выражения завершаются предложением Where сгенерированного оператора SQL. Сервер реляционной базы данных эмулирует через SQL семантику данных работающего с упорядоченной информацией персонального приложения, что ведет к заметному снижению производительности.

Позволяя открывать курсоры для таблиц и индексов без использования операторов SQL, InterBase 4.0 с помощью многопользовательской среды клиент- сервер обеспечивает производительность, близкую к производительности локального персонального приложения. Это означает, что когда курсор открывается для таблицы, то записи возвращаются в естественном порядке, а когда он открывается для индекса, то они возвращаются в отсортированном порядке.

Важным аспектом дизайна InterBase 4.0 является прямая, осуществляемая на уровне механизма базы данных поддержка подобных операций перебора. Для более быстрой выборки записей из таблиц и индексов InterBase 4.0 использует специальные структуры данных, алгоритмы и протоколы. Для подготовки и выполнения таких операций операторы SQL не требуются, поэтому отпадает необходимость в промежуточных транслирующих модулях, а буферизация результирующего набора сводится с минимуму. Кроме того, к данным параллельно могут обращаться как пользователи Express Link, так и SQL.

Закладка - это метка записи относительно ее позиции среди других записей. Механизм InterBase 4.0 поддерживает закладки непосредственно на уровне сервера, позволяя использовать вызовы для установки, получения и сравнения закладок. Закладка действует в течение всего подключения к базе данных и допустима даже после закрытия исходного курсора и завершения первоначальной транзакции. Используя внутренние идентификаторы записи,
InterBase 4.0 поддерживает быстрые операции с закладками.

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

С этой целью в InterBase 4.0 поддерживается сохранение контекста курсора. Это позволяет поддерживать текущий курсор даже после завершения транзакции.

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

Для обеспечения потребностей пользователей персональных приложений PC,
InterBase 4.0 поддерживает явные блокировки, но следует также и стандартной модели сервера, которая обеспечивает явные блокировки для традиционных пользователей SQL.

Персональные приложения часто позволяют пользователю просматривать большие объемы данных. Устанавливать для таких записей блокировки по чтению непрактично. В типичной системе клиент-сервер клиентское приложение выводит пользователю набор данных, не устанавливая на сервере никаких блокировок.
Для поддержки целостности и согласованности данных клиентское приложение вынуждено следовать одним из путей:

. Через регулярные интервалы обновлять данные путем опроса сервера.

. Игнорировать изменения и продолжать выводить старые данные.

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

. Блокировать все кэшируемые данные

В InterBase 4.0 предусмотрена специальная технология, которая называется обновлением кэша. Используя это средство, приложение IDAPI может идентифицировать диапазон интересующих его записей и регистрирует это на сервере. Когда в записи из этого диапазона происходит изменение (например, параллельно работающий пользователь модифицирует запись), сервер инициирует событие, которое уведомляет клиентское приложение с помощью механизмов уведомления о событиях - InterBase 4.0 Event Alerters. Клиентское приложение получает это событие и может либо игнорировать его, либо запросить изменение записей в данном диапазоне.

InterBase 4.0 допускает использование для хранения данных и работы с ними нескольких национальных наборов символов. Для всех строковых операций и операций с объектами BLOB поддерживаются как 8-битовые, так и 16-битовые наборы. Заданный по умолчанию набор символов и порядок сравнения можно определить для базы данных в целом. Сравнение можно также определить с помощью предложения Order By в операторе Select. Для спецификации символов национальных алфавитов можно использовать строковые литералы с префиксом имени набора символов. В стандартный комплект поставки включена поддержка кодовой таблицы ANSI 1251, являющейся стандартом при работе с русским языком в среде Windows.


2.5 Выбор средств разработки

В качестве CASE-средства использован программный продукт ERWin 2.5 фирмы Logic Works. ERwin - средство разработки структуры базы данных. ERwin сочетает графический интерфейс Windows, инструменты для построения ER- диаграмм, редакторы для создания логического и физического описания модели данных и прозрачную поддержку ведущих реляционных СУБД и настольных баз данных. С помощью ERwin можно создавать или проводить обратное проектирование (реинжиниринг) баз данных.

Предыдущие версии ERwin - 1.5 и 2.1 - завоевали все возможные призы среди программ своего класса, в том числе DBMS Readers' Choice в 1992,
1993, 1994, 1995 годах, Software Development Productivity Award 1993, Data
Based Advisor Readers' choice 1992 и 1994. Текущая версия продукта - 2.6.

ERWin позволяет проводить анализ системы как в стандарте IDEF1X, так и в стандарте IE, что увеличивает удобство работы с продуктом. ERwin объединяет логический и физический уровни представления модели в единую диаграмму, что позволяет провести анализ предметной области и полностью разработать структуры базы данных используя только один программный продукт. Выбор этого продукта обусловлен также возможностью легкого переноса разработанной модели на другой сервер баз данных.

Для написания клиентской части приложений использована среда разработчика Borland Delphi C/S 2.01. Delphi относится к средствам быстрой разработки приложений (RAD - Rapid Applications Development). Определяющим фактором при выборе Delphi в качестве средства разработки клиентской части является наличие большой библиотеки объектов для быстрого построения приложений, работающих с базами данных. Кроме того, Delphi поддерживает интерфейс PVCS, что позволяет вести параллельную разработку проекта несколькими программистами.

Для разработки процессов, функционирующих на стороне сервера использована среде разработки Microsoft Visual C 4.2 из пакета Microsoft
Developer Studio. Эта среда сочетает в себе мощь языка C++, удобные средства отладки программ и навигации по тексту. Кроме того, она позволяет использовать в программах все возможности операционной системы (RPC, RAS,
TAPI, сервисы Windows NT).


2.6 Организация взаимодействия между серверами


2.6.1 Выбор модели распределенной базы данных

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

2.6.2 Модель взаимодействия

Для организации репликации данных и удаленного администрирования серверов в районах необходимо предусмотреть средства взаимодействия между серверами. При анализе процесса взаимодействия серверов можно выделить следующие компоненты системы:

. Процесс-клиент (сервер 1)

. Среда передачи данных

. Процесс-сервер (сервер 2)

В этой схеме в каждый конкретный момент времени в качестве клиента выступает один из взаимодействующих серверов. Таким образом, на каждом из серверов в любой момент времени должен быть запущен процесс, отвечающий за взаимодействие с удаленным узлом сети. В Windows NT в качестве такого процесса может выступать специально разработанный сервис операционной системы (system service). Он должен «уметь» обслуживать подключения удаленных клиентов, а также при необходимости сам выступать в роли клиента.
Кроме того, на него можно возложить функции удаленного администрирования и резервного копирования данных.

Для организации обмена информацией в общем случае необходимо разработать протокол этого обмена, что само по себе является достаточно сложной задачей. Кроме того, необходимо реализовать поддержку сервисом различных транспортных протоколов (TCP/IP, NetBIOS, IPX/SPX), что выливается в многократное дублирование программного кода. Для решения этой задачи использован слой вызова удаленных процедур Microsoft RPC (Microsoft
Remote Procedure Call).


2.6.3 Использование слоя RPC для распределенной обработки данных на платформе Windows NT

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

Слой Microsoft RPC - только часть стандарта среды для распределенных вычислений, названной OSF (Open Software Foundation), разработанной группой компаний для определения компонентов сетевой среды, которая поддерживает распределенные вычисления.

2.6.4 Компоненты Microsoft RPC

Microsoft RPC включает следующие основные компоненты:

. Компилятор MIDL (Microsoft IDL)

. Библиотеки времени выполнения и заголовочные файлы.

. Модули транспортного интерфейса

. Сервис разрешения имен

. Сервис поддержки конечной точки

В модели PRC можно формально определить интерфейс для удаленной процедуры, используя язык, специально разработанный для этой цели. Этот язык – IDL (Interface Definition Language - язык определения интерфейсов).
Диалект языка, реализованный фирмой Microsoft, назван MIDL (Microsoft IDL).

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


2.6.5 Механизм работы RPC

RPC позволяет клиенту напрямую вызывать процедуры, находящиеся в программе на удаленном сервере. Клиент и сервер имеют различные адресные пространства; так, каждый имеет свою собственную память, в которой распределены данные, используемые процедурами. Следующий рисунок иллюстрирует архитектуру RPC:

[pic]

Рис.2.3. Механизм работы RPC.

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

. Запрашивает необходимые параметры из адресного пространства клиента

. Переводит параметры в стандартную форму представления данных в сети

(NDR - standard network data representation)

. Вызывает необходимые функции из библиотеки времени выполнения RPC для отсылки запроса с параметрами на сервер.

Заглушка сервера выполняет следующие шаги:

. Библиотека времени выполнения RPC принимает запрос и вызывает процедуру заглушки сервера

. Заглушка сервера принимает параметра из буфера и конвертирует их из формата NDR в формат, процедуры сервера.

. Заглушка вызывает необходимую процедуру на сервере.

Удаленная процедура выполняется, генерирует выходные параметры и возвращаемое значение. Когда процедура завершена, следующие шаги возвращают данные клиенту:

. Удаленная процедура возвращает данные заглушке сервера

. Заглушка сервера конвертирует возвращаемые параметры в формат NDR и возвращает их функции библиотеки времени выполнения RPC

. Библиотечные функции передают данные через сеть на клиентский компьютер

Клиент завершает процесс принятием данных из сети и их возвратом вызывающей функции:

. Клиентская библиотека времени выполнения RPC принимает значения, возвращаемые удаленной процедурой и возвращает их заглушке

. Заглушка клиента конвертирует данные из формата NDR в формат, используемый клиентским приложением

. Приложение клиента продолжает свою работу.

Для Microsoft Windows и Windows NT библиотеки времени выполнения используются двумя путями: как статическая библиотека, линкуемая в приложение; и библиотека, реализованная как DLL.

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

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

2.6.6 Организация логического канала передачи данных

Другой компонент модели - среда передачи данных может быть реализована несколькими способами. В простейшем случае она может быть построена на базе асинхронных каналов связи с использованием протоколов PPP
(Point to Point Protocol), а также на базе существующих сетей X.25. На системный сервис можно также возложить ответственность за установление логического канала между серверами.

В случае каналов X.25 для установления соединения используется специальная каналообразующая аппаратура (коммутаторы X.25).

Решением начального уровня может служить удаленный доступ по протоколу
PPP (Point to Point Protocol). Организация удаленного доступа по асинхронным каналам связи по протоколу PPP рассмотрена ниже.


2.7 Организация доступа удаленных пользователей


2.7.1 Необходимость удаленного доступа

При реализации данной системы экономически целесообразно устанавливать серверы баз данных только в тех районах республики, в которых количество абонентов достаточно велико. Для районов с малым числом абонентов наилучшим решением является использование сервера баз данных ближайшего РУС. Для этого необходимо организовать доступ операторов к территориально удаленному серверу. Средой передачи данных в этом случае являются телефонные линии, протоколом передачи на сетевом уровне - PPP (или SLIP).

2.7.2 Использование слоя RAS для удаленного доступа на платформе

Windows NT

На платформе Windows NT задача удаленного доступа по протоколу PPP решается с помощью сервера RAS (Remote Access Server - сервер удаленного доступа). Сервер RAS - это процесс, который принимает и обрабатывает запросы клиентов на подключение через асинхронные линии и передачу данных.
Схема взаимодействия удаленного клиента с сервером RAS приведена на рис.2.4.

[pic]

Рис.2.4. Схема удаленного доступа с использованием RAS.

В качестве транспортного протокола могут использоваться протоколы
TCP/IP, IPX/SPX, NetBIOS. Подключение клиента через сервер удаленного доступа абсолютно прозрачно, т.е. клиент может работать с удаленными серверами так, как если бы он находился в локальной сети.

В системе Windows NT существует программный интерфейс приложений
(Application Program Interface), который позволяет установить логический канал с удаленной сетью по асинхронному соединению. Он носит название RAS
API (Remote Access Service API).

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

Win32 RAS позволяет RAS-клиенту установить соединение, получить информацию о существующих соединениях и завершить соединение. Связь осуществляется по протоколам PPP или SLIP. В качестве транспортного протокола могут быть использованы стеки TCP/IP, IPX/SPX и NetBIOS.

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

2.7.3 Обеспечение информационной безопасности при удаленном доступе

Учитывая то, что информация на серверах баз данных носит коммерческий характер, особую роль играет вопрос её защиты от несанкционированного доступа. Система Windows NT имеет сертификат соответствия уровню безопасности C2 Министерства обороны США. Данный уровень безопасности предполагает обязательную идентификацию пользователей системы для определения прав доступа к отдельным ресурсам системы. Удаленный вход в сеть также требует соответствующих привилегий, кроме того, все попытки удаленного доступа обязательно фиксируются в журнале событий. В систему
Windows NT встроена возможность шифрования трафика в каналах передачи данных, таким образом злоумышленник, имеющий возможность перехвата данных в каналах связи, не получает доступа к жизненно важным данным (пароли и имена пользователей, финансовая информация).

Одним из способов ограничения доступа удаленных пользователей к ресурсам сети является использования так называемых серверов-барьеров
(FireWalls) на стыке внутренней и внешней (какой в данном случае является удаленный пользователь) сетей. В данном случае можно гибко регулировать права удаленного пользователя на доступ к отдельным компьютерам в сети.
Кроме того, серверы-барьеры скрывают топологию сети от внешнего пользователя. На платформе Windows NT функции сервера-барьера выполняет продукт Microsoft Proxy Server. Одним из побочных эффектов использования этого класса продуктов является экономия IP-адресов.

2.8 Проектирование структуры базы данных

Построим информационную модель системы расчета с абонентами.
В ходе исследования существующей схемы расчетов были выявлены следующие основные сущности:

. Клиент (абонент, владелец телефона)

. Услуга

. Подразделение

. Начисление

. Телефонный разговор, подлежащий повременной тарификации

. Начисление за повременные разговоры (за один день)

. Оплата

. Категория клиента

. Проведенные расчеты

IDEF1X-диаграмма взаимодействия между этими сущностями представлена в
Приложении 6.

После нормализации данных и разрешения связей «многие ко многим» путем введения граничных сущностей диаграмма принимает вид, указанный в

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

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

. Клиент (владелец телефона)

. Услуга

. Подразделение

. Начисление

. Постоянное начисление

. Категория клиента

Для регистрации изменений используется структура данных, представленная на рис.2.5.

[pic]

Рис.2.5. Структура данных для поддержки механизма регистрации изменений

Суть данной модели такова:

1. Каждая сущность характеризуется набором состояний, изменяющихся во времени.

2. Каждое состояние характеризуется набором атрибутов сущности, а также датой начала и датой окончания состояния.

3. Сущность однозначно идентифицируется своим внешним ключом и актуальной датой.

4. Дочерние таблицы ссылаются на сущность по её внешнему ключу.

5. При смене состояния внешний ключ не меняется.

Целостность данных обеспечивается с помощью триггеров на сервере.

Для дальнейшего анализа выделим в структуре базы данных несколько подсистем:

. Картотека абонентов

. Начисления

. Повременный учет

После определения атрибутов сущностей схема данных с учетом механизма поддержки истории принимает вид, приведенный в Приложении 6.

SQL-скрипт для генерации базы данных представлен в Приложении 1.


2.9 Схема репликации данных

Тиражирование данных в системе построено по схеме с одним сервером подписки (центральный сервер) и множеством серверов репликации (районы).

[pic]

Рис.2.6. Организация репликации данных.

Данные на центральном сервере доступны только для чтения чтобы избежать конфликтов по модификации записи.

[pic]

Рис.2.7. Подробная схема репликации данных.

Схема репликации приведена на рис.2.7. Рассмотрим процесс передачи изменений подробнее:

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

2. При возникновении в базе определенного события (например при большом количестве записей в журнале изменений) или в определенный момент времени коммуникационный сервис запускает процесс репликации.

3. Процесс репликации устанавливает соединение с сервером подписки и начинает синхронизацию данных.

4. Сервер подписки принимает измененную запись и модифицирует соответствующим образом таблицу на своей стороне.

5. Если в процессе изменения записи был сгенерирован новый ключ, то он передается на сервер репликации.

6. Сервер репликации заменяет первичный ключ реплицируемой записи на ключ, возвращаемый с сервера подписки и удаляет соответствующую запись из журнала изменений.

При передаче изменений коммуникационным сервисом используется протокол двухфазной фиксации транзакций (Two-phase commit transactions), что позволяет застраховаться от ошибок.

При синхронизации данных подобным методом процесс репликации может быть прерван в любой момент времени и продолжен позднее с той же точки.
Данная особенность позволяет использовать такую схему тиражирования даже на очень плохих каналах связи.


2.10 Проектирование коммуникационного сервера


2.10.1 Постановка задачи

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

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

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

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

4. Учитывая разнородность сети необходимо обеспечить возможность подключения пользователей по нескольким протоколам: TCP/IP, Named

Pipes, IPX/SPX, NetBIOS.


2.10.2 Архитектура коммуникационного сервера

Учитывая специфику платформы Windows NT коммуникационный сервер построен по архитектуре системного сервиса (System Service). Для разработки коммуникационного сервера применялась среда разработчика Microsoft
Developer Studio 4.2/Visual C++ Enterprise Edition.

Архитектура сервера представлена в Приложении 2.

Для обеспечения наращиваемости системы проведено разделение функциональности сервера на две части:

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

. Пользовательские задачи - обеспечивают реплицирование, резервное копирование, синхронизацию картотек, съем данных с аппаратуры повременного учета.

Пользовательские задачи реализованы в виде многопоточных DLL. Каждая пользовательская задача должна обеспечивать две точки входа:

. void TaskProc(void) - основной поток - реализует необходимую функциональность.

. void Terminate(void) - функция для принудительного останова задачи

(например при останове сервера)

Информация о пользовательских задачах хранится в реестре Windows NT
(ключ HKEY_LOCAL_MACHINESOFTWARESvyazinformCommServiceTasks, рис.2.8).
[pic]

Рис.2.8. Конфигурация задач коммуникационного сервера в реестре

Windows NT.

Ядро cервера построено по многопоточной архитектуре и включает в себя следующие модули:

. Модуль инициализации - основная точка входа сервиса - регистрирует сервис в диспетчере сервисов.

. Модуль управления сервисом - реализует функции запуска и останова сервера.

. Планировщик задач - осуществляет запуск пользовательских задач в заданное время.

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

. Модуль регистрации событий - записывает информацию о состоянии сервера в системный журнал событий.

2.10.3 Вспомогательное программное обеспечение

Для установки коммуникационного сервиса разработана программа, регистрирующая сервис в системе и создающая необходимые ключи в реестре
Windows NT. Исходный код программы представлен в Приложении 4.

Для удаления сервера разработана программа, выполняющая чистку системного реестра. Исходный текст программы представлен в Приложении 5.

Для удаленного конфигурирования пользовательских задач разработано клиентское приложение «Менеджер задач коммуникационного сервера».

  логотип+телефон-звони

 

 



Название

слайдер-11

ТМК
ТМК
Подготовка выездных курсов обучения по контроллерам сименс (ПО Step7 и TIA Portal).) на заводах СинТЗ (г. Каменск-Уральский) и СТЗ (г. Полевской) специалистов Корпоративного университета ТМК2U ПАО "ТМК".
DS PACK CO., LTD
DS PACK CO., LTD
Модернизация и доработка контструктива корейских машин, формующих бумажные стаканчики (paper cup forming machine 4oz) DS-100A и DSN-50A , а также визуализация процессов на станках: (paper punching machine) DS-300RP, (paper roll diecutting machine) DS-80DC и (flexographic printing maching) DS-300FP компании DS PACK Co., Ltd.
Ковдорский ГОК
Ковдорский ГОК
ПНР АСУ технологической линии №2 в корпусе ККД-1 в рамках реконструкции Дробильной фабрики  и Обогоатительного комплекса для увеличения переработки руды.
ООО "Русский Радиатор"
ООО "Русский Радиатор"
Мониторинг показаний уровнемеров сжиженного газа  при помощи модернизации программы в плк S7-315-2.
MARVU
MARVU
Внедрение технического зрения и автоматизация процесса укладки крема на голландской линии MARVU.
Taisei engineering consultants Inc.
Taisei engineering consultants Inc.
Диагностика японского сцепного гидравлического устройства ARTICOUPL KVC3545L на буксире, выполненного на плк FUJI MICREX-SX NP1PH-16 в связке c HMI Hakko Electronics Monitouch V806CD. 
Мясоконсервный комбинат "Балтийский"
Мясоконсервный комбинат "Балтийский"
Обвязка и пнр автоклавов комбината, запуск системы автоматической стерилизации консервов.
ООО "Метромаш"
ООО "Метромаш"
Программирование тягового преобразователя БПТ-100 шахтного электровоза К14М на базе плк Segnetics SMH2010-7112-01-0 и панели оператора ONI ETG 9,7" в среде  Oni Visual Studio V2.8.
Нижнетагильский металлургический комбинат
Нижнетагильский металлургический комбинат
Разработка программного обеспечения на базе Siemens S7 CPU 315-2PN\DP для конвертерного цеха и технического перевооружения 3-х систем аспирации миксеров.
COS.M.A. PACK INTERNATIONAL S.r.l.
COS.M.A. PACK INTERNATIONAL S.r.l.
Программирование линии итальянских картонажников Космапак (модели 20081X, 20082X, 20083X, 20084X), реализованных на плк Омрон CJ1M-CPU31 и панелях Вайнтек в цеху розлива ликероводочного завода (бывший холдинг "Веда").
Пожарная спецтехника
Пожарная спецтехника
Разработка и проектирование контроллера управления насосом, изготовление прототипов плат и ПО для комплектации пожарных автомобилей.
Вейк-парки
Вейк-парки
Програмирование, разработка, настройка и пуско-наладка систем управления реверсивными и круговыми лебедками (КБУ) с проектированием веб-интерфейса для удаленного мониторинга прошивок по ip-адресам plc и hmi установленных в городах России.
B.V. Scheepswerf "De Donge"
B.V. Scheepswerf "De Donge"
Поиск неисправностей и ошибок в ПО плк S7-CPU315-2DP на голландской плавучей станции D-TYPE DIPPERDREDGER с экскаватором на борту компании "DE DONGE".
ABBA GmbH & Co.KG
ABBA GmbH & Co.KG
Диагностика канального пресса для отходов ABBA KB-600V5, выполненного на плк SIMATIC S7-200 CPU226.
Coca-Cola HBC Россия
Coca-Cola HBC Россия
Разработка концепта и проектирование модернизации линии Pet4 готовой продукции, исполненной на контроллере Сименс CPU315F-2PN/DP в сетевой связке с аппликатором MES MARKEM 2200Pallet и верхним уровнем.
GUZZETTI s.p.a.
GUZZETTI s.p.a.
Подготовка к модернизации итальянской линии Technicoater путем внедрения системы измерения ширины клейкой ленты.
ООО "ГЕО НПК" (УралХим)
ООО "ГЕО НПК" (УралХим)
Разработка предложения по модернизации щита управления на плк сименс S7 318-2DP и замене скада-системы AVEVA InTouch (бывшая Wonderware, Invensys plc) на заводе сложных минеральных удобрений холдинга ОХК "УралХим".
Ижевский автомобильный завод
Ижевский автомобильный завод
Подготовка автоматизации вентиляции покрасочных камер на контроллерах S7-300  CPU 314C-2 PN/DP на автомобильном заводе LADA в Ижевске.
KAESER
KAESER
Подготовка проектирования и разработки программного обспечения для сетевого обмена по эзернету плк SIGMA CONTROL 2 компрессоров "КЕЗЕР КОМПРЕССОРЕН ГмбХ" с системой управления на контроллере Siemens S7-1515-2 PN и визуализация на HMI KTP1200.
Юнайтед Элементс
Юнайтед Элементс
Настройка в скаде EBI/SymmetrE R410.2 прошивки автоматики ветроустановок DANX, смонтированных на контроллере Honewell EXCEL 50, для обеспечения передачи данных по родной шине C-BUS в программном обеспечении CARE.
JACOBS
JACOBS
Подготовка настройки упаковочной машины TOYO на базе плк Mitsubishi A172SHCPUN и сервоприводов MR-J2S-70B по сети SSCNet.
Ленинградский механический завод
Ленинградский механический завод
Анализ расчетных парамметров усилий конструкции и сведение в автоматизацию линии прокатного стана для изготовления алюминиевых пластин Норникелевых катодов и анодов.
Efasec SCADA
Efasec SCADA
Подготовка импортозамещения устаревшей  португальской Эфасек скады на автоматизированном складе холдинга Ретал с разработкой ПО для шлюзов между плк Сименс S7-319-3PN/DP, Keepware Server, 1С Предприятие 8.2 и БД Oracle.
ММДЦ Москва-Сити, Южная башня
ММДЦ Москва-Сити, Южная башня
Диспетчеризация и визуализация фанкойлов на контроллерах Carel PCO5 и панели PlantWatchPRO в здании МФК "Город столиц".
Cabinplant A/S
Cabinplant A/S
Перепрограммирование линии дозации, начинки и заворота блинов, изготовленной датской компанией Cabinplant A/S.
Frito-Lay
Frito-Lay
Разработка программного обеспечения для системы холодоснабжения на предприятии в г. Кашира Московской области (градирня с вентиляторами, линия насосов, система подпитки\контроля оборотной воды и диспетчеризация холодильной машины) на базе контроллеров ControlLogix 1756 (Allen-Bradley).
Акварель
Акварель

Модернизация на печатном производстве бумагорезательной машины Challenge Champion 305CRT путем внедрения в нее автоматизированной системы управления на базе HMI и PLC фирмы Delta.

Атомэнергоремонт
Атомэнергоремонт

Программа углубленных обучающих курсов по Siemens TIA Portal на базе контроллеров S-1200, панели оператора KTP600PN и частотных преобразователей SINAMICS G-150 для специалистов "БалАЭР".

Dell'Orco & Villani  s.r.l.
Dell'Orco & Villani
s.r.l.
Импортозамещение иностранного закрытого ПО на итальянской линии приготовления волокон, кипоразрыхлителей хлопка и автоматического их взвешивания.
OYSTAR Hassia
OYSTAR Hassia

Проектировка оборудования и совершенствование производительности линии Hassia в молочном производстве посредством замены устаревшего контроллера, доработка сетевого обеспечения серводвигателей и программирование CPU Siemens по тз заказчика.

Орими Трейд
Орими Трейд

Проектирование алгоритма работы кейспекера и машин по упаковке алюминиевых и пластиковых капсул с кофе в коробку в определенном порядке.

CASK
CASK
Перепрограммирование в фестовском Designer Studio (V4.5.0.224) контроллера CDPX-HMI на канадской пивной баночной линии CASK mACS V2 (micro-automated canning system).
БДТ Вторая сцена
БДТ Вторая сцена
Подготовка и генерация загрузочных файлов для внедрения дополнительных вентустановок на базе плк Carel в сети LON в существующую диспетчеризацию ZenOn v7.0 (COPA-DATA), развернутую в театре и последующая конфигурация настроек в Lon-Maker,
Алтай-Кокс
Алтай-Кокс

Проработка и анализ АСУТП фильтра на предприятии ОАО "Алтай-Кокс", проектирование электрических схем и документации с программированием панели оператора GXU5500 и контроллера M258 фирмы Schneider Electric.

ООО «Нипромтекс»
ООО «Нипромтекс»
Подготовка к модернизации итальянских линий, построенных на контроллерах Сименс на производстве нетканных материалов, геотекстиля и швейных изделий Нипромтекс.
ООО "ЭкоПром СПб"
ООО "ЭкоПром СПб"
Проектирование частотного регулирования и переоснащение крана стрелового КСП-500, выполненного на двигателе с короткозамкнутым ротором Элком 5АИ 100S4 ЕТ У2.
Заводы Цементум
Заводы Цементум
Подготовка к апгрейту и модернизации высоковольтных ячеек на заводе концерна Холсим, развернутых в ПО Siemens Sicam PAS и DIGSI V4.
Scada novaPro Open
Scada novaPro Open
Подготовка к замене устаревшей скады Sauter EY3600 novaPro Open Suite на отечественный аналог системы диспетчеризации зданием с проведением технического аудита и разработки ПО.
Морозко
Морозко
Написание программы для каретки c сервоприводом DELTA и шаговым двигателем заворотки на блинной линии на контроллере Омрон CJ1MCPU12.
Мусоросжигательный завод №3
Мусоросжигательный завод №3
Сервисный аудит бывшего австрийского завода EVN AG и проверка на импортозамещение всей архитектуры, построенной на базе скады ABB Maestro UX Symphony и плк Siemens S-400.
HYUNDAI
HYUNDAI
Подготовка к модернизации котельной на заводе ХЁНДАЙ МОТОРС на базе PLC и HMI сименс с параметрированием частотных приводов данфосс для насосов.
Пеноплэкс
Пеноплэкс
Диагностика и перепрошивка контроллера Moeller PS4-141-MM1 в ПО Sucosoft S40  и модернизация установки Extruder ZE62 на контроллерах B&R компании KraussMaffei Berstorff GmbH.
Уралкран
Уралкран
Разработка, проектирование и АСУТП системы управления портальным краном на гидроприводе.
Аккорд
Аккорд
Модернизация станка по производству герметичных металлорукавов высокого давления с применением контроллера и панели оператора Омрон на заводе Аккорд.
ООО "УГМК-Сталь"
ООО "УГМК-Сталь"
Диагностика, ремонт и поверка немецкого газоанализатора многоканального ABB MultiFID14 AO2020.
Металлургический комбинат имени Ильича г. Мариуполь
Металлургический комбинат имени Ильича г. Мариуполь
Подготовка к восстановлению и модернизации линии снятия фаски RFA14 и летучей пилы 22KA на ОМТС ММК им. Ильича. на базе плк Siemens s5-115u, чпу Indramat CLM1.3M, HMI Laurer PCS-02 и сервоприводов Bosch Rexroth HCS03.1E.
Мебельное производство Лигрон
Мебельное производство Лигрон
Программирование контроллера АВВ Advant Controller 31 и панели МТ-45 для портала перемещения листов дсп со штабеля в раскрой.
SICAM s.r.l.
SICAM s.r.l.
Реинжиниринг итальянской линии SICAM для термоскрепления текстиля с охлаждением и калибровкой, выполненной на контроллерах S7-300.
Подстанция 330кВ "Лужская"
Подстанция 330кВ "Лужская"
Диагностика головного контроллера сбора данных и проверка связи по карте регистров модбас между щитом ЩСН и скада-системой диспетчерской подстанции Лужская.
ЭКО-Золопродукт
ЭКО-Золопродукт
Проработка диспетчеризации завода по производству комовой, молотой и гидратной извести под торговой маркой ROSCA на базе WINCC, собирающей в единую сеть управление конвейерами, питателями, грохотом, паллетировщиками, бункерами для дальнейшей интеграции на верхний уровень передачи данных.
ООО "САФ-НЕВА"
ООО "САФ-НЕВА"
Внедрение и модернизация cуществующих трех котлов для системы подачи продукта на установку Cryovac® Onpack 3002 компании Sealed Air.
ООО "Багерстат Рус"
ООО "Багерстат Рус"
Подготовка КП по программированию контроллера S7-315-2DP на рецептурно-дозирующей станции  подачи муки MINC-99 и визуализации на АРМе АПР-8 ПХПП в софте FactoryTalk® View.
ЯМАЛ СПГ
ЯМАЛ СПГ
Подготовка выездного курса в г. Сабетта по программированию и эксплуатации контроллеров Modicon TSX Quantum в среде Unity Pro для специалистов ЯМАЛ СПГ.
Roll-o-Matic A/S
Roll-o-Matic A/S

Диагностика контроллера в датском намотчике полиэтиленовых пакетов HSW (high speed winder) компании Roll-o-Matic в Московской области.

WAGNER
WAGNER
Внесение изменений в алгоритм работы контроллера  системы порошковой покраски "ProfiTech M" немецкой компании Wagner.
АО "Кировская Керамика"
АО "Кировская Керамика"
Перепрограммирование контроллера S7-312 чешской линии Abadia a.s. STLN4 на заводе "Кировская Керамика" в г. Киров.
Тойота
Тойота

Проектирование и программирование автоматизированных shuter-ов перемещения подсборок дверей на линии сварки завода Toyota.

ООО "Татинтек"
ООО "Татинтек"
Подбор PLC/HMI и согласование САУ метрологической установкой учета добываемой скважинной продукции по заданному алгоритму.
LafargeHolcim
LafargeHolcim
Подготовка специалистов Холсим к комплексному обучению наладке, программированию и диагностике частотников холдинга Holcim Group (Schneider Electric, ABB, Siemens, Danfoss, Sew Eurodrive).
ООО "Агис Пак"
ООО "Агис Пак"
Программирование линии производства стрейч-пленки (экструдер+пневмозагрузка+каландры+намотчик) на плк LS GLOFA-G7M-DR10A и панели оператора HITECH PWS6300S-S.
ФГАУ "ОК "Дагомыс"
ФГАУ "ОК "Дагомыс"
Диагностика возможности восстановления системы диспетчеризации Simatic WinCC, выполненной на базе плк S7-314 и SIPLUS ET200S IM151-7 CPU в оздоровительном комплексе Дагомыс г. Сочи.
НИИЦ (АКМ и ВЭ) ЦНИИ ВВС МО РФ
НИИЦ (АКМ и ВЭ) ЦНИИ ВВС МО РФ
Проектирование конструктива в Catia V.5  и диспетчеризция системы моделирования климатических факторов термобарокамеры ТБК-12.
DESTILA
DESTILA
Модернизация и программирование контроллера сименс (6ES7214-1HG40-0XB0) мини-пивоваренного завода промышленного типа на основе weidmuller I-O UR20-FBC-PN-IRT. 
ПК "МорозКом"
ПК "МорозКом"
Модернизация линии по производству блинчиков на одной из четырех площадок (Спб, Ковалево, Белгород. Бронницы) Производственной корпорации "МорозКом".
LIEBHERR
LIEBHERR
Диагностика ошибок в плк ABB 07NG66R2 Procontic T200 на башенном кране Liebherr Likas Litronic.
Красногорский полиграфический комбинат
Красногорский полиграфический комбинат

Программирование полиграфического станка DGR на контроллере WAGO-750 в связке с панелью DOP-11B-20 (Sew Eurodrive) через DHE4-1B по CANopen.

 

Puratos
Puratos
Модернизация участка ферментации и приготовления дрожжевого экстракта на основе плк Siemens S7-317-2PN/DP.
IOPAK PACKAGING
IOPAK PACKAGING
Программирование и стыковка по сети австралийского упаковочного оборудования IOPAK с периферийными конвейерами и головным контроллером диспетчеризации на мучном производстве.
Петербургский Мельничный Комбинат
Петербургский Мельничный Комбинат
Сервисное диагностирование контроллеров и панелей операторов Сименс и Омрон на фасовочных линиях предприятия с возможностью дописывания в программный код вновь вводимого оборудования и агрегатов.
Банк БФА
Банк БФА

Настройка под ключ приточно-вытяжных систем установок Ventrex risv 700W\1500W на контроллерах TAC Xenta 301\421A с применением панели оператора t.a.c. Xenta OP.

БЦ "Синоп"
БЦ "Синоп"
Аудит, проверка и предложение об оптимизации системы диспетчеризации на Siemens Desigo СС, выстроенной по сети BACNet с устройствами опроса: ИТП, Вентиляция, Освещение, Водоснабжение, Чиллера, Котельная, Теплоснабжение и Лифты.
Узбекнефтегаз
Узбекнефтегаз

Проработка АСУТП для реализации проекта  Мубарекский ГПЗ с полной заменой контроллеров и скада-системы Тэкон аналогом.

ООО "Русвата"
ООО "Русвата"
Диагностика и анализ работы итальянской линии для производства ватных палочек STREMA CF-1, реализованной на плк Modicon TM241CEC24T в паре с панелью Magelis HMIGTO2300 и сервоприводом LMX32MU45M2 на Рязанском заводе Русвата.
АО "Активный Компонент"
АО "Активный Компонент"
Программирование, монтаж и пуско-наладка технологического оборудования на заводе фармацевтических субстанций "Активный компонент" в соответствии со стандартом GMP.
Presona AB
Presona AB
Разработка алгоритма работы шведского пресса переработки макулатуры Presona LP 60VH Baler и программирование в нем плк Омрон CP1L и HMI NB10W-TW01B.
НП ГПСК «Возрождение»
НП ГПСК «Возрождение»
Диагностика и замена контроллера NAIS (Panasonic) AFP12713C-F в канатном камнерезном станке на Камнеобрабатывающем заводе «Кузнечное»
Ленэнерго
Ленэнерго
Конфигурация и внедрение по протоколу МЭК 60870-5-104 различных вакуумных реклоузеров, не прописанных штатно в сети скады ЭнтекTEL (Таврида Электрик) в диспетчерских пультах Ленэнерго.
ПАО "НПО" Стрела"
ПАО "НПО" Стрела"
Разработка программы проведения ПНР при реконструкции и техническом перевооружении производственных мощностей НПО "Стрела" в г.Тула.
Дамате
Дамате
Подготовка технического аудита на заводе переработки индейки для разработки отечественной системы диспетчеризации и мониторинга всех систем.
Арсил
Арсил

Исполнение аппаратного программирования моушн-контроллеров первого поколения INDEL в связке с сервоприводами сименс для переналадки формовочной линии Арсил под новые стаканы йогурта.

BLUE BOX GROUP s.r.l.
BLUE BOX GROUP s.r.l.
Программирование водяного чиллера OMEGA/LC 10002 через сервисное меню (00200) по снятию ограничения с наработки компрессора в 4 000 моточасов в старом плк Carel (INTMNTCB20).
ТК Мебельвуд
ТК Мебельвуд
Диспетчеризация вентустановок, чиллеров, ГРЩ, освещения, котельной и водоснабжения торгового комплекса Мебельвуд.
ECHOLO A/S
ECHOLO A/S

Модернизация паллетайзера PM 800-4 датской компании ECHOLO A/S.

Травушка текстиль
Травушка текстиль
Диагностика и модернизация итальянского ткацкого станка TEC MECCANOTEC S.R.L. (Tecquilt multineedle quilting machine), выполненного на плк TRIO MC206X Motion Coordinator посредством программного обеспечения MotionPerfect V4.
БЦ "Левашовский"
БЦ "Левашовский"
 Подготовка на вентустановках замены неисправного плк Danfoss MCX06D на отечественный PIXEL с разработкой для него с нуля алгоритма и ПО.
SYNERLINK S.A.
SYNERLINK S.A.

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

Сеть ресторанов Максимилиан
Сеть ресторанов Максимилиан
Параметрирование контроллеров WAGO 750-881 варочных котлов в сети ресторанов-пивоварен maximilian brauhaus.
TOYOTA BOSHOKU
TOYOTA BOSHOKU
Модернизация, проектирование и программирование в (ПО GX WORKS 2) контроллеров Mitsubishi Q03UDECPU и панели оператора GOT 2000, параметрирование ввода-вывода I/O MELSEC A J65SBTB1-32DTE1 на линии оснастки автомобильных кресел.
СПб Образцовая Типография
СПб Образцовая Типография
Диагностика неисправности модуля статической памяти в контроллере сименс SIMATIC S5 115U 942 и S7-316.
АО "ЦКБМ"
АО "ЦКБМ"
Программирование и запуск повысительной насосной станции на контроллере Modicon TM 241CE24T и панели оператора Шнайдер HMIGXO3501 в Центральном конструкторском бюро машиностроения госкорпорации "Росатом".
SERI SPECIAL
SERI SPECIAL
Диагностика контроллера MODICON TSX Nano в итальянской туннельной сушке для шелкографии SERISPECIAL S. N.C (модель SERI FUTURA).
Крафтовая пивоварня
Крафтовая пивоварня
Программирование контроллера WAGO 750-881 и проектирование визуализации на панели ELO-2094L c применением Codesys HMI для крафтовой пивоварни в г. Ростов.
Marangoni
Marangoni
Модернизация пульта управления по обработке шин "RINGTREADER 900" итальянского завода Marangoni Retreading systems, выполненных на контроллерах АББ.
Detel Strojegradnja Logitec, d.o.o.
Detel Strojegradnja Logitec, d.o.o.
Программирование и разработка алгоритма контроллера Twido TWDLMDA20DRT в сверлильно-присадочном станке Detel КМ 4/2Т производства Словении.
Лахта Центр
Лахта Центр
Разработка ПО для приборов освещения на KNX и DALI; программирование вентустановок, кондиционеров и диспетчеризации (Семён-Desigo™); визуализация на панелях (ABB Busch-SmartTouch®) в здании "Башня".
HEIDENHAIN
HEIDENHAIN
Замена старенькой чпу стойки HeidenHain на 5-осевом фрезерном станке Deckel-Mano DMU 60T на CNC "Баллт-Систем" и "HNC" (Wuhan Huazhong Numerical Control Co, Ltd.)
Пивоварня "Нахлебник"
Пивоварня "Нахлебник"
Разработка технологии пивоварни с программированием плк WAGO 750-881 и панели оператора ELO ET2094L в софте CoDeSys HMI.
Карельский окатыш
Карельский окатыш
Программирование автоматического режима, стыковка по сети со шнековой и конусной дробилкой METSO, отладка скады WINCC для дробильно-сортировочной установки.
A.T.F. S.r.l.
A.T.F. S.r.l.
Сервисное обслуживание и переписывание исходного кода контроллеров в TIA PORTAL V15 на итальянской линии ATF MC-574.2 намотки и упаковки в пленку синтепона.
Trio Motion Technology Ltd.
Trio Motion Technology Ltd.
Разработка алгоритма и перепрограммирование английских (перебазировавшихся нынче вместе с мировым центром концентрации управления в Китай) контроллеров TRIO (теперь уже под брендом ESTUN Automation) для текстильного многоосевого станка с заменой самописной скады на более дружественную связку plc-servo-scada Omron NJ.
НЛМК
НЛМК
Подготовка АСУ ТП аспирационной системы литейного двора, бункерной эстакады, приемного устройства и бункеров отсева мелочи доменной печи №6 доменного цеха №2 (ДЦ-2) на базе PLC и HMI Шнайдер в среде Unity Pro и Vijeo Designer.
ПИК
ПИК

Модернизация и расширение функций листогиба LSK HK-60 CNC под индивидуальное решение заказчика на производстве металлопластиковых окон и алюминиевых конструкций.

Северсталь
Северсталь
Предпроектное решение для автоматизации участка виткообразователей стана 150 на базе роботизированной ячейки FANUC и технического зрения.
Старооскольский ЛВЗ "Люкс"
Старооскольский ЛВЗ "Люкс"
Программирование плк Дельта DVP-12SE (не имеющего на борту встроенного ethernet/IP Scannera (Originatatora) и OPC-сервера с конфигурированием сканеров COGNEX DM262X в софте DATAMAN V6.19 на линии розлива для считывания фискальной марки с пробок бутылок и групповой упаковки через связывания их в базе данных с кодом DM и GS.
Лесопильная линия SAB
Лесопильная линия SAB
Адаптация программ и замена контроллеров шнайдер TSX-17 и TSX-47 на лесопильной линии SAB.
ООО "Новартис Нева"
ООО "Новартис Нева"
Оценка и программирование управляющих программ на языке CFC (STEP7 V.5.5) для систем вентиляции на контроллерах Siemens, визуализация и доработка скады WinCC в диспетчере устройств BMS с коррекцией технологии.
ASEM s.r.l.
ASEM s.r.l.
Диагностика и ремонт итальянской panel pc ASEM WS 410TE15H3.
Производство фурнитуры Сатурн
Производство фурнитуры Сатурн
Разработка  и внедрение гибкого производственного участка по механической обработке на  основе робота и фрезерного станка ЧПУ.
Образовательный Фонд "Талант и успех"
Образовательный Фонд "Талант и успех"
Аудит вентсистем (Boukens Ice & Climate Solutions) и разработка их модернизации в комплексе Сириус Арена, выполненных на ПО: Reliance Industrial SCADA v.4, Citect SCADA v.7.20 sp3, Hitachi OPC Data Access Server v.1.4.0.3 в связке с плк Hitachi EHV-CPU16 и hmi UniOp eTOP407.
Филиал №3 "ММЗ" ООО"ЮГМК" г. Макеевка ДНР
Филиал №3 "ММЗ" ООО"ЮГМК" г. Макеевка ДНР
Оценка разработки роботизации маркировки бунта готовой продукции и интеграция системы в общую АСУТП Макеевского металлургического завода.
Морской Рыбный Порт
Морской Рыбный Порт
Разработка системы управления турбокомпрессором мощностью 110квт на очистных сооружениях в Терминале морского рыбного порта.
BECK engineering
BECK engineering
Диагностика и разработка в ПО Motion Perfect V2.3.3.6 алгоритма работы норвежской лебедки Beck, реализованной на сервоприводах MiniDigiCOMB7 (magnetic), контроллере TRIO MC206X (P136) и панели Mini Membrane Keypad (P502).
АО "Ростерминалуголь"
АО "Ростерминалуголь"
Проектирование автоматической системы подачи смазки для стакера-реклаймера в Угольном терминале РТУ в Морском торговом порту Усть-Луга на контроллерах сименс.
Альфа Автоматив Техноложиз
Альфа Автоматив Техноложиз
Модернизация и перенос с московской площадки АМО ЗиЛ в промзону Бирюлево линии конвейеров с последующим программированием контроллеров МЗТА Контар и полной автоматизацией линии.
БЦ "Черная Речка"
БЦ "Черная Речка"
Модернизация и диспетчеризация приточно-вытяжной вентсистемы KORF на контроллерах RWC82 (Landis & Staefa) в Бизнес Центре "Черная Речка".
Simplex Aerospace
Simplex Aerospace
Диагностика вертолетной программы на плк MELSEC FX2NC-64MT с системы пожаротушения модели 328 американской компании Simplex (нынче DART Aerospace).
ЦПС Восточное Мессояхское месторождение
ЦПС Восточное Мессояхское месторождение

Подготовка программного обеспечения для конфигурирования контроллеров Siemens Desigo PCX 22.D  в шкафах вентустановок.

JBT AeroTech
JBT AeroTech
Настройка и корректировка в ПО TwinCAT алгоритма программы и диагностика контроллера BECKHOFF BX90000-0000 пассажирского телетрапа JETWAY SYSTEMS®.
Угольный терминал порта Усть-Луга
Угольный терминал порта Усть-Луга
Разработка системы мониторинга за линиями конвейеров для разгрузи угля из вагонов на базе контроллеров Siemens S-1212C.
ПАО ФосАгро
ПАО ФосАгро
Разработка программ под плк шнайдер TM241CE24T и панель GXU5512 для электрообогрева трубопроводов склада жидкого аммиака (СЖА) для группы "ФосАгро" (бывший АО Метахим) Волховского филиала АО "Апатит".
Распредцентр Wildberries
Распредцентр Wildberries
Проектирование и разработка системы автоматизации для линии конвейеров логистического центра WILDBERRIES в г. Подольск.
Роснефть
Роснефть
Запуск и анализ насосной в Хабаровском крае «РН-Комсомольский НПЗ» выполненной на оборудовании B&R в программном обеспечении Automation Studio.
ООО "Дж. Дж. Уитли Дистиллери"
ООО "Дж. Дж. Уитли Дистиллери"
Анализ и разработка концептуального решения по диспетчеризации спиртоприемного и спиртоотпускного отделений завода, а также перепрограммирование панели TP270 (6AV6545-0CC10-0AX0) и плк S7-CPU315-2DP в спиртохранилище.
JBT Gmbh
JBT Gmbh
Переоборудование и модернизация промышленных немецких пивоварен Joh. Albrecht Brautechnik на контроллерах Ваго и Сименс в рецептуру которых заложены: розлив, фильтрация, созревание, брожение, варка сусла, осветление затора, затирание и дробление солода.
Производство холодильников NORD г. Донецк
Производство холодильников NORD г. Донецк
Инжиниринг АСУТП и подготовка к реконструкции линии по сборке холодильников с интеграцией в БД 1С.
АО "ПО СТРОНГ"
АО "ПО СТРОНГ"
Разработка программы и запуск системы управления станком прямой намотки скважинных щелевых фильтров с использованием сервоприводов Delta ASD-A2-1021-M и плк DVP12SA211T, работающих в сети CAN.
БЦ "ТУСАР"
БЦ "ТУСАР"
Подготовка замены плк tac xenta 421А в ИТП Бизнес-центра "Тусар", установка пароля в системе диспетчеризации TAC VISTA и конфигурирование заново существующих модулей в щите управления.
CFT S.p.A.
CFT S.p.A.
Модернизация паллетайзера на базе роботов FANUC M-410iC и системы укладки RIO BOX на плк Mitsubishi R04ENCPU и Siemens 6ES7515-2AM01-0AB0.
Степан Разин
Степан Разин
Разработка и программирование рецептов пропагаторов и мойки кег для стерилизации емкостей и сусла, процесса культивирования, запуск технологии фильтрации дрожжей и стабилизации пива на базе контроллеров омрон и митцубиси.
Bakels
Bakels
Модернизация двух линий сыпучих смесей Наута и Маткон посредством программирования PLC и HMI  компании Омрон и демонтажом существующего оборудования (дозаторы, смесители, просеиватели, фильтры, вентиляторы и загрузка\разгрузка в бункеры).
AMADA CO., LTD.
AMADA CO., LTD.
Модернизация японского эксцентрикого пресса AMADA TP-60 и замена в нем устаревшего и снятого с производства контроллера Омрон CQM1H-CPU11.
АО "Фаберлик"
АО "Фаберлик"
Анализ и модернизация чешской (PRODUCT CZ s.r.o.) тубонабивной машины PAT-2500 с разработкой автоматического режима работы на сервоприводах и моушн-контроллере Омрон на заводе Фаберлик г. Москва.
Vimco
Vimco
Проектирование и встраивание в общую технологическую цепочку формирователя коробок Vimco для чайных пакетиков с последующей раскладкой по наборам, упаковкой и укладкой в гофрокороба.
БЦ «AFI2B»
БЦ «AFI2B»
Диагностика и перепрограммирование вентиляции БЦ «AFI2B» на контроллерах Шнайдер модикон M 251.
Сухонский ЦБК
Сухонский ЦБК

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

Mannesmann Demag
Mannesmann Demag
Модернизация немецкой линии MANNESMANN DEMAG RFA14 / RD115 для резки труб с последующим снятием на них фаски.
SOLOPHARM
SOLOPHARM
Программирование вентиляции в лицензионном софте DESIGO CC V5.1 промышленных контроллеров Siemens PXC100-E.D и панелей PXM30.E в новом фармацевтическом комплексе Солофарм, с выводом тегов в существующую скаду Десиго Инсайт.
HURCO
HURCO
Ремонт, программирование и модернизация ЧПУ HURCO VMX1 с разработкой алгоритма работы осей станка.
Адмиралтейство
Адмиралтейство
Программирование, обвязка по модбасу контроллеров "МЗТА" и "Юнитроникс", панелей оператора "Вайнтек", системы управления "Энтроматик 110М", частотников "WILO" и узлов учета "Взлет" в котельной.
Mars, Incorporated
Mars, Incorporated
Модернизация сушилок (dryer machine) посредством внедрения в технологическую цепочку триподов EXPT взамен старых захватов по принципу вакуумной плиты в г. Новосибирск.
CAS
CAS

Консультирование специалистов компании "Кореан Скейл Технолоджи" (официального дистрибьютора CAS Corporation в России) по программированию контроллеров LS XGT XBM в среде разработки XG5000.

ООО "МЕТАПРОМ СПб"
ООО "МЕТАПРОМ СПб"
Диагностика и программирование гидравлического станка АС-273-1ГП, выполненного на плк LOGO (6ED1052-2HB00-0BA6).
York International
York International
Программирование в софте ССT (v10.1) и пуско-наладка приточной вентиляции компании York, вошедшей, наряду с Becker Group, Varta, Optima, Sagem, Adient, Ikeda Bussan, Hoppecke в ирландский холдинг Johnson Controls.
АО "С.Е.Д.-СПб"
АО "С.Е.Д.-СПб"
Разработка программного обеспечения для системы управления и визуализации печей в режиме пайки и отжига на базе контроллера SMH4-0011000.
ООО "Руссоль"
ООО "Руссоль"
Диагностика и ремонт немецкого термоконтроллера Ropex RES-5010.00 на предприятии Руссоль в Тульской области.
Хологрейт
Хологрейт
Разработка системы управления секциями печати с приводкой по метке на контроллерах Omron NX102-1100 по сети EtherCAT c сервоприводами и визуализацией на панели омрон HMI NB10W-TW01B.
Automatyka-Pomiary-Sterowanie S.A.
Automatyka-Pomiary-Sterowanie S.A.
Перепрограммирование плк Siemens 6ES7214-1AG40-0XB0 и панели KTP900 польского щита управления HLP 3037 (APS) габаритными огнями на вертолетных площадках в связи с полным уходом из России.
Разработка видеоизмерительного микроскопа
Разработка видеоизмерительного микроскопа
Проработка технического решения по проектированию ПО, микроконтроллеров, сервоприводов и измерительных щупов для серии цифровых микроскопов в рамках программы импортозамещения и выделения грантов на разработку.
ООО "Конвертор"
ООО "Конвертор"
Перепрошивка и восстановление с использованием SD-карты контроллера ABB AC500 посредством софта Automation Builder, проверка настроек портов и конфигурации ядра qModMasterом в щите собственных нужд завода Конвертор.
Леруа Мерлен
Леруа Мерлен
Диагностика вентиляции в сети LEROY MERLIN и правка исходных программ на плк в среде Siemens Desigo CC.
FOREST-LINE
FOREST-LINE
Модернизация фрезерного станка с ЧПУ, выполненного на стойке Sinumerik и контроллере Siemens S5-150U.
AF Brew
AF Brew
Разработка алгоритмов управления и автоматизация производства бродильного цеха и бутылочного розлива, визуализация 19" панели сименс TP1900 COMFORT и встраивание нового оборудования в существующий технологический процесс варки пива.
АО "Узбекнефтегаз"
АО "Узбекнефтегаз"
Подготовка инжиниринга внедрения новых барьеров искрозащиты и интерфейсных шкафов в существующую РСУ Yokogawa Centum на базе AD Suite.
Водоканал
Водоканал

Разработка ПО на базе Сименс и пуско-наладка АСУТП головной части комплекса очастных сооружений МУП Водоканала.

Macring Oy
Macring Oy
Сервисное обслуживание, перепрограммирование и замена моушн-контроллера Rexroth IndraDrive HCS02.1E на линии профилирования с летающим ножом финской компании Macring Group.
Управление Федерального Казначейства г. Севастополь
Управление Федерального Казначейства г. Севастополь
Восстановление логин/паролей в системе диспетчеризации зданием, сервисное обслуживание и обновление ядра скада-системы.
SCHIESS GmbH
SCHIESS GmbH
Модернизация немецких токарно-карусельных станков фирмы Schiess (выкупленной китайским холдингом SMTCL) с устаревшей системой ЧПУ SINUMERIK 3/8/800 c последующей разработкой таблицы коррекции осей на лицензии Siemens CNC.
ПАО "Акрон"
ПАО "Акрон"
Разработка программ и отладка системы вентиляции на контроллерах Siemens Desigo PXC 36.1.D на заводе минеральных удобрений группы компаний "Акрон" в Великом Новгороде.
ILAPAK
ILAPAK
Модернизация элементной базы и написание программного кода для панели оператора и контроллера вертикальной упаковочной машины ILAPAK Vegatronic 2000.
Светлогорский ЦБК
Светлогорский ЦБК

Система маркировки бумажных рулонов в потоке на конвейере и стыковка по сети с имеющимся оборудованием Сименс.

АО Казанский Вертолётный Завод
АО Казанский Вертолётный Завод
Диагностика и прошивка контроллера CAREL PCO1.
Ижорский Трубопрокатный Завод
Ижорский Трубопрокатный Завод
Предварительная разработка и проектирование систем управления для автоматизированной подачи смазки в автомат-стан ТПА-140 и повышение производительности прошивного стана.
ABB, Inc. AlSCAN
ABB, Inc. AlSCAN

Подготовка к диагностике неисправностей старого (windows 98, Pentium IV) канадского анализатора водорода в жидком алюминии ABB AlSCAN HMA0100D с последующей поверкой. 

SIDAT
SIDAT
Подготовка чешского щита сопряжения c MES Siemens IT (pallet&labeling) между итальянской линией на контроллере S-300 (CPU315F-2 PN/DP) и аппликатором Markem-Imaje 2200 Pallet System L2630.
ТГК-1
ТГК-1
Отрабатывание заявки на программирование контроллера METSO AUTOMATION PC BOARD PIC2 CARD PROCESS INTERFACE в филиале "Невский" ЦТЭЦ  ПАО «ТГК-1».
Bruderer
Bruderer
Модернизация и диагностика высокоскоростного штамповочного пресса BRUDERER BSTA-25А, выполненного на контроллере митцубиши.
ООО "Хейнен Хопман Рус"
ООО "Хейнен Хопман Рус"
Подготовка к написанию софта для вентиляции HVAC-систем на кораблях группы HEINEN & HOPMAN, выполненной на оборудовании carel pco5, schneider hmi scu6b5, weintek mt8071ip.
REMAK
REMAK
Диагностика, программирование, модернизация и визуализация чешских вентустановок REMAK, выполненных на контроллерах CAREL.
"Стивидорная Компания "АВЛИТА"
"Стивидорная Компания "АВЛИТА"
Разработка скада-системы PcVue 8.40 и организация связи через модуль IBY100 по шине INTERBUS с ПЛК  для зернового терминала в г. Севастополь.
Kampf
Kampf
Анализ и диагностика программ на плк сименс S7-300 на режущей машине Unislit II 625 компании JAGENBERG GROUP.
СПб ГУП "Мостотрест"
СПб ГУП "Мостотрест"
Аудит и подготовка документации для восстановления и проектирования в здании Мостотреста системы диспетчеризации инженерных систем котельной, ИТП, вентиляции, выполненных на оборудовании сименс.
Spitze AB
Spitze AB
Доработка софта и настроек шведского картонажника Spitze WA211, выполненного на оборудовании сименс.
Котеджный поселок Ландшафт
Котеджный поселок Ландшафт
Разработка алгоритма, программирование и настройка в котеджах параметров вентиляции и насосной, выполненных на контроллерах семейства TAC Xenta 301, 411, OP.
Pemag Makina
Pemag Makina

Настройка и модификация исходного кода турецкой упаковочной линии влажных салфеток на контроллерах LS XBC-DN64H, убирание из памяти сервисных запросов и программирование по тз заказчика дополнительных функций.

Има
Има

Модификация и переоснащение линии Erca по выпуску нового формата йогуртов и укладка порталом в доработанный картонажник под обновленные треи.

Сибирское Здоровье
Сибирское Здоровье
Проектирование автоматизированной линии упаковки пищевых батончиков на базе роботов с техническим зрением, картонажников для гофро-коробов с последующим палетированием поддонов.
Ижорский трубный завод
Ижорский трубный завод
Разработка концепции роботизированного комплекса установки и снятия муфт на АО «Ижорский трубный завод».
Mychrome Oy Ab
Mychrome Oy Ab
Программирование в ПО Control Expert v.15 плк BMXP342020 в финском сбивочном станке деревянных поддонов Kombiflex R-1000.
BEUMER
BEUMER
Подготовка модернизации и программирования немецких паллетайзеров от BEUMER GROUP paletpac® SCCBBQA 5000 и SBQ 1600, выстроенных на плк Siemens S7 315-2DP и HMI OP277.
BONINO
BONINO
Перепрограммирование итальянской кардочесальной машины для шерсти Bonino, выполненной на связке SIMATIC HMI MP 377 и распределенного ввода/вывода ET200S.
ТК Бетон
ТК Бетон
Правка скады Индусофт V.6 на бетонном заводе в г. Набережные Челны с настройкой дозирования цемента и химдобавок и созданием таблицы в базе данных ClientID.
Отель "Riviera Sunrise Resort & SPA"
Отель "Riviera Sunrise Resort & SPA"
Подготовка к прошивке интеллектуального реле SR3B261BD для переключения ввода "дизель-город" в АВР ГРЩ отеля и подача команд на мотор-редуктора Schneider Masterpact NT10H1 и Compact  NSX 250F.
Марс
Марс

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

РУСАЛ
РУСАЛ
Подготовка консультационного обучения персонала на тему: "Частотно-регулируемый электропривод переменного тока SEW-Eurodrive"
БЦ "Балтийская жемчужина"
БЦ "Балтийская жемчужина"

Подготовка к перепрошивке систем дымоудаления на контроллерах TAC XENTA 421A и 411A с конфигурацией частотников ABB ACS550-01-023A-4.

ООО "МилФудс"
ООО "МилФудс"
Подготовка к модернизации упаковочной машины на баазе плк сименс s-1500.
БаренцКул
БаренцКул
Разработка тз для програмирования холодильной установки на базе контроллера Модикон М340 и Magelis панели HMIGTO2310 с применением компрессоров Bitzer OSN и частотных преобразователей Данфос.
Hidria IMP Klima
Hidria IMP Klima
Разработка визуализации и ПО для контроллера с руссско-язычным веб-интерфейсом для чиллера со спиральными компрессорами словенского производителя Hidria.
Северо-Западный нанотехнологический центр
Северо-Западный нанотехнологический центр
Согласование диспетчеризации на Мастерскаде смонтированных щитов насосной и КНС на контроллерах Овен и Шнайдер М172 (TM172PBG28R), панелях HMIS5T, БУС-1, БУЛ-3.
Mamaison SPA Hotel Pokrovka
Mamaison SPA Hotel Pokrovka
Настройка диспетчеризации ИТП отеля-гостиницы "Мариот" (несмотря на уход из России Hyatt, Hilton и Mariott) в WINCC7.2 с установкой драйверов и апгрейтом ПО системного блока, правкой скриптов под связь с плк сименс S7-313C-2DP.
База отдыха "Связист"
База отдыха "Связист"
Диагностика и программирование контроллера TAC Xenta 401 для управления калориферами и вытяжкой в системе микроклимата бассейна и спортзала через панель TacXenta OP в АО "РПК"Связист".
JSC "Kirov CERAMICS"
JSC "Kirov CERAMICS"
Программирование на линии PCL2 выбора смены инструмента захватов робота KUKA KRC2 с панели оператора red lion G315C2 через контроллер S7-CPU315-2DP.
Галенофарм
Галенофарм

Модернизация и ремонт роторного смесителя для приготовления косметического сырья на фармацевтическом производстве Галенофарм®.

STAM
STAM
Доработка и автоматизация принципа "летучая пила" на механизме итальянской линии профилирования железа STAM.
ДК им. Ленсовета
ДК им. Ленсовета
Диагностика и модернизация системы вентиляции на контроллере Carel pCOXS.
Mariner Ship's Equipment
Mariner Ship's Equipment
Перепрограммирование в софте Vijeo Designer Basic V.1.2.1.353 панели оператора Schneider Electric HMIGXU3500 турецкого морского палубного телескопичекого крана.
Губский кирпичный завод
Губский кирпичный завод
Разработка scada-системы в связке с контроллером сименс по тз заказчика и проработанным рецептам приготовления смеси с аналитикой обратной связи с датчиков.
Барабинская ТЭЦ
Барабинская ТЭЦ

Программирование алгоритма и замена контроллера Modicon TSX Micro 37-10 с блоком TSX RKZ02 в системе возбуждения типа ETSA турбогенератора JEUMONT INDUSTRIE с предварительной комплексной наладкой и испытаниями на объекте АО «СИБЭКО».

ООО "Самсон-Мед"
ООО "Самсон-Мед"
Подбор скада-системы для диспетчеризации, архивирования и сбора данных с систем установки через плк Mitsubishi FX2N-64MR и HMI A970GOT-TBA-CH.
ООО "ФУД МИЛК"
ООО "ФУД МИЛК"
Консультация по модернизации, программированию и запуску автоклава стерилизации ST 1200x2000 1D WR от компании GEA LEVATI Food Tech S.r.l., выполненного на плк и панели оператора SIEMENS и регистраторе данных ABB SM500.
Есть вопросы? Звони!