Интеллектуальные компьютерные системы
Интеллектуальные компьютерные системы
Сделать стартовой | Добавить в избранное
 
Поиск
 
 
 Категории
   
 
 Календарь
 
«Сентябрь 2017»
Пн Вт Ср Чт Пт Сб Вс
 123
45678910
11121314151617
18192021222324
252627282930 
 
 
 Счетчики
     
 
 Популярное
   
 
 Архив сайта
   
 
 
  Организация и использование сервера базы данных
Категория: Технологии | Автор: admin | (20 сентября 2010)
 
Обновлено: 20.09.2010 - 15:28

ВВЕДЕНИЕ

В данной статье приводится описание устройства и особенностей использования разработанных автором сервера базы данных и технологии взаимодействия клиентских программ с сервером. Все программные средства написаны на Delphi 7.
1. БАЗА ДАННЫХ, СЕРВЕР И КЛИЕНТ- СЕРВЕРНАЯ ТЕХНОЛОГИЯ
1.1. Общие сведения о файлах и базе данных

Для обработки информации ее необходимо структурировать, то есть определить группы данных, возможные характеристики данных и их взаимоотношение. Весь процесс разработки базы данных довольно сложен. Программист (точнее, проектировщик базы данных) обычно анализирует предметную область изучаемой проблемы, определяет основные сущности и их свойства, составляет информационно-логическую модель, проводит нормализацию и т.д. Все это пользователю знать нет необходимости. Вам нужно знать, что база данных состоит из файлов данных и индексов. Файл данных – это хранилище однотипной информации, то есть информации, имеющей одинаковую структуру и описывающей одну из сторон процесса или объекта. Структуру информации задают поля. Данные в файле хранятся в виде записей. Каждая запись состоит из набора значений, соответствующих заданным полям. Проще всего файл данных представить в виде таблицы 1.
tab01.jpg (63.55 Kb)
Верхняя серая строчка содержит имена полей, типы и размерность значений. В начале файла данных есть заголовок, в котором хранится такое же описание. Остальные строки таблицы соответствуют записям в файле данных. Записи нумеруются порядковыми номерами, начиная с единицы. Обработка файла данных ведется по одной записи в каждый момент. Так мы можем прочитать, скажем, пятую запись и она после этого станет текущей. Из текущей записи, значения которой записываются во временный буфер, можно считать значение любого поля, например, четвертого. Это значение 83. С файлом данных можно выполнять следующие основные действия :
Открыть файл, закрыть, добавить новую запись, прочитать запись с указанным номером, откорректировать (сохранить обновленные значения) текущую запись и удалить текущую запись.
Если файл данных содержит не 9 записей, а, скажем, 100000, то работать методом последовательного чтения записей нельзя. Вы не сможете быстро найти интересующую Вас информацию. Для ускорения поиска в файле данных используются индексы. Индекс можно сравнить с глоссарием в книге. Если Вас интересует какое-то слово или понятие, описанное в толстой книге, то проще просмотреть несколько страниц глоссария, найти в нем нужное слово и определить номер страницы, где содержится описание того, то Вас интересует. Искать в глоссарии просто и быстро еще и потому, что он упорядочен, то есть слова в нем отсортированы по алфавиту. Так же дело обстоит с индексами. Для создания индекса (индексного файла) необходимо определить его ключевое выражение – последовательность ключевых полей из соответствующего файла данных. Как правило в файле данных обязательно есть одно или несколько (комбинация) полей, однозначно определяющих каждую запись. Такой ключ называется уникальным и в нашей системе все индексы основываются именно на таком принципе. Для каждого файла данных создается один или несколько индексных файлов. Для каждой записи из соответствующего файла данных определяется ключ (последовательность значений ключевых полей). Этот ключ вместе с номером записи размещаются в определенном месте индексного файла таким образом, чтобы в индексе сохранялась упорядоченность ключей. Изменение индексного файла должно выполняться синхронно с изменением файла данных.

1.2. Сервер и клиенты

Все эти сведения о файлах данных и индексах нужны пользователю лишь для общего представления о системе. Манипуляциями с данными будет заниматься сервер, а пользователь делает свое дело – нажимает на кнопки, вводит текст, цифры и анализирует данные. Описанные выше операции с файлами можно назвать низкоуровневыми. В клиентских программах такие действия выполняются на локальной части данных, которая запрашивается у сервера (загружается с сервера). Взаимодействие клиентской программы (например, АРМ “КАДРЫ”) с сервером происходит с помощью команд более высокого уровня, которые называются запросами к серверу. Сервер получает запросы, выполняет их обработку и отправляет клиенту ответ в виде файла данных, строки или не отправляет никакого ответа. Запросы, поступающие к серверу от множества клиентов, ставятся в очередь, а сервер выполняет их по очереди (согласно приоритету). Выполнение каждого запроса связано с базой данных. При запуске сервера он открывает базу данных, а при остановке – закрывает. Сама база данных состоит из описания схемы базы данных, файлов данных и индексных файлов. Схема базы данных хранится в одном файле с расширением .SBD и множестве файлов с расширением .SFD. Файлы данных имеют расширение .FD, а индексные – расширение .FI. Файл с расширением .SFD содержит описание структуры файла данных с таким же именем и расширением .FD, а также описание соответствующих индексных файлов. Файл с расширением .SBD содержит список файлов данных, входящих в состав базы данных.
Сервер представляет собой отдельную программу, которая запускается раньше всех клиентов, а закрывается после того, как будут закрыты все клиентские программы. В состав сервера входят следующие файлы :
• запускаемый модуль DBserver.exe;
• библиотека функций ServLib.dll;
• файл параметров настройки сервера Param.cfg;
• база данных (файлы с расширениями .SBD, .SFD, .FD, .FI).

Сервер получает от клиентских программ запросы – строки с командами или наборами команд. В данный момент сервер поддерживает обработку около 50 различных команд. Это прежде всего простые команды манипулирования данными, как то добавить запись, удалить запись, исправить запись, найти запись и вернуть в строке значения ее полей, выбрать из файла или связки файлов набор записей и вернуть их в виде файла данных. Есть также команды групповой корректировки и группового удаления записей по заданному условию. Для одномоментного выполнения последовательности запросов сервер поддерживает транзакции – наборы команд, заключенные в специальные ключевые слова. Если в таком наборе хоть одна команда не выполняется, то откатываются результаты остальных уже выполненных команд из транзакции. В командах добавления новых записей имеется возможность автоматического определения сервером ключевых полей, то есть задания сервером для них уникальных (очередных числовых) значений или очередных значений дат, месяцев, дней в пределах месяца, года или общих.
Сервер баз данных разработан для ОС Windows 2000/XP и работает на обычном персональном компьютере. Чем мощнее компьютер, тем производительнее будет сервер. Однако, иногда для увеличения производительности или при организации распределенной базы данных требуется несколько компьютеров – серверов. Такая возможность здесь реализована в виде ретрансляции запросов с главного сервера на серверы – дубли. Причем, возможна реализация такой архитектуры базы данных, в которой структура базы данных одного сервера может отличаться от структуры другой БД. В параметрах каждого сервера могут быть указаны правила ретрансляции запросов на тот или иной сервер вплоть до перечня файлов данных и типов запросов, подлежащих передаче. Назначение серверов – дублей можно сравнить с так называемыми сайтами – зеркалами. Прежде всего это нужно для разгрузки того или иного сервера. Если пользователи (клиентские программы) часто отправляют на сервер запросы, возвращающие большие объемы данных, то такой метод организации БД будет очень эффективен. Также, поскольку данный сервер взаимодействует с клиентами посредством протокола TCP/IP, то возможна организация многопользовательского доступа к БД через интернет. Для нас нет никакой разницы – будет ли сервер функционировать в локальной сети или в интернет. В нашей практике есть примеры доступа к общей БД с нескольких заводов, расположенных в разных городах и в разных концах одного города. При такой организации БД масштабирование сервера весьма оправдано. На рис. 1 и рис. 2 показаны архитектуры с одним сервером и с сервером – дублем.
risart01.jpg (33.7 Kb)

risart02.jpg (33.33 Kb)
В другом случае базы данных разных предприятий могут отличаться по структуре либо содержать свою собственную (не общую) информацию. Но для некоторых целей может потребоваться наличие некоторой общей части данных, которая может содержаться на центральном сервере. К примеру, это может быть справочник организаций и каталог продукции. В таком случае модификация этих общих данных должна производиться всеми клиентами непосредственно на центральном сервере, который может ретранслировать все модификационные команды на сервера каждого из предприятий. На сервере каждого из предприятий будет хранится копия той общей информации. При старте центрального сервера файлы с этой информацией автоматически синхронизируются с серверами предприятий и в процессе дальнейшей работы между серверами пересылаются только короткие команды модификации данных. Поскольку основная часть времени сервера расходуется на обработку запросов с выборками данных и отправку ответа клиенту, то центральный сервер будет разгружен (выборками занимаются локальные сервера предприятий). При этом сохраняется целостность общей информации, т. е. одинаковость для всех предприятий, использующих эти данные. На рис. 3 представлена архитектура с центральным сервером.
risart03.jpg (47.88 Kb)
Для взаимодействия с сервером баз данных разработан компонент – клиент доступа для среды программирования Delphi 7. Пользовательская программа может содержать несколько клиентов для связи с одним или несколькими серверами. Через клиентский компонент выполняется соединение с требуемым сервером, регистрация на нем с указанием названия АРМ, имени пользователя и пароля и последующая отправка запросов и обработка результатов. Перед соединением в клиенте необходимо определить IP-адрес компьютера сервера и номер порта, на котором работает сервер. Активация (свойство Active=True) клиента инициирует операции Windows по установке соединения между сокетами клиента и сервера. Все последующее взаимодействие выполняется через сокетное соединение. Сервер и клиентский компонент основаны на неблокирующих сокетах. Клиентская программа отправляет серверу запрос с параметром типа результата : без ответа, ответ в строке и ответ в файле данных .fd. Если ответ должен быть в строке или в файле, то клиентский компонент ожидает ответа либо в течение указанного количества времени, либо пока он не будет получен. Вместе с ответом приходит результат выполнения запроса – либо 0, либо код ошибки. Как уже отмечалось, сервер предлагает возможность регистрации, то есть ограничения доступа к серверу через клиентские программы с помощью ведения перечня АРМ (автоматизированных рабочих мест) и списка пользователей. Для пользователя определяется пароль и уровни доступа к каждому АРМ. Предлагаемые уровни доступа такие : 1 – только просмотр, 2 – просмотр и редактирование данных и 3 – администратор системы (АРМ). Таким образом один пользователь может иметь доступ к одному АРМ и не иметь доступа к другому.

 


 
 
Copyright © 2007 Интеллектуальные компьютерные системы All Rights Reserved.
Powered by 2z project | Design by Интеллектуальные компьютерные системы
SQL запросов: 10 | Генерация страницы: 0.04 сек