Многопользовательский доступ к данным конспект

Обновлено: 05.07.2024

Проблема многопользовательского доступа и параллельной обработки данных в автоматизированных информационных системах

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


Рис. 7.34. Задание режима блокировки для данных, доступных из формы

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



Рис. 7.35. Принципиальная схема технологий файл-сервер(a) и клиент- сервер(b)

В системе клиент-сервер процессор базы данных размещается на центральном сервере умеете с хранилищем данных. Он может обслуживать одновременно несколько клиентских приложений, управляя хранилищем и возвращая запрошенную информацию после обработки запросившему ее локальному приложению. К настоящему моменту можно назвать ряд этапов, которые технология клиент-сервер прошла в своем развитии: RD А-модёль, DBS-модель и AS-модель. В RDA-модели клиентское приложение направляет запросы (как правило, на языке SQL) к информационным ресурсам сервера, на котором функционирует ядро СУБД. Ядро обрабатывает полученные запросы и возвращает клиенту результат, оформленный как блок данных. При такой схеме программы на компьютерах-клиетах являются инициаторами манипуляций с данными, а ядру СУБД отводится я роль. Основное достоинство RDA-модели состоит в унификации интерфейса взаимодействия с сервером с помощью стандартного языка запросов.
Унификация позволяет реализовывать дополнительные меры по защите хранимой информации на уровне задания системы прав по отношению к тем иди иным командам. В рассматриваемой модели также происходит существенная разгрузка трафика сети за счет того, что между станциями сети теперь передаются не части файла базы данных, а команды и ответы на них.
Основу DBS-модели составляет механизм хранимых процедур. Хранимые процедуры- это средство программирования сервера баз данных. Они хранятся в словаре базы данных, могут разделяться между различными клиентами и выполняются на том же компьютере, где запущен программный процесс сервера баз данных. Как правило, языки, на которых создаются хранимые процедуры, представляют собой процедурные расширения языка SQL На настоящий момент не существует единого стандарта для таких языковых средств; поэтому они являются специфичными для каждой конкретной СУБД. Среди достоинств DBS-модели могут быть названы возможность централизованного администрирования прикладных функций, дальнейшее снижение трафика (вместо SQL-запросов по сети передаются вызовы хранимых процедур), экономия ресурсов компьютера за счет использования однократно разработанного плана выполнения процедуры. К традиционным проблемам, связанным с DBS-моделью, относят трудности, сопутствующие процессам создания, отладки и тестирования хранимых процедур. О популярности и перспективности данной модели свидетельствует прежде всего то, что она реализована в таких широко используемых реляционных СУБД, как Oracle, Sybase, Informix, Ingres.
В AS-модели процесс, выполняющийся на компьютере-клиенте, называется клиентом приложения (Application Client - А С) и отвечает за интерфейс с пользователем. В случае необходимости выполнить те или иные прикладные операции он обращается к серверу приложения (Application Server - AS). Все операции над информационными ресурсами выполняются специальными программными компонентами, по отношению к которым AS играет роль клиента. В качестве примера прикладных компонентов могут быть названы ресурсы различных типов - базы данных, очереди, почтовые службы и др.
Само по себе ядро базы данных Jet, как уже упоминалось ранее, не является процессором, поддерживающим технологию клиент-сервер. Однако с помощью Access можно создавать соответствующие приложения, связываясь с клиент-серверными источниками данных через ODBC.

7.4.3. Организация защиты данных в СУБД MS Access
Непременной функцией любой развитой СУБД является обеспечение защиты данных от несанкционированного доступа. Очевидно, что полноценный с точки зрения надежности и устойчивости режим защиты может быть обеспечен только в рамках промышленных систем управления при условии комплексной реализации мер программного, аппаратного и административного характера. Перед настоящим параграфом поставлена более скромная задача - на примере MS Access описать на принципиальном уровне те подходы, которые применяются в СУБД Для обеспечения программной защиты данных.
MS Access обеспечивает два традиционных способа защиты базы данных:
- установка пароля, требуемого при открытии базы данных;
- защита на уровне определения прав пользователей, которая позволяет ограничить возможность получения или изменения той или иной информации в базе данных для конкретного пользователя.
Кроме того, можно удалить изменяемую программу Visual Basic из базы данных, чтобы предотвратить изменения структуры форм, отчетов и модулей, сохранив базу данных как файл MDE.
Установка пароля на открытие базы данных представляет собой простейший способ защиты. После того как пароль установлен (функция меню Сервис > Защита > Задать пароль базы данных), при каждом открытии базы данных будет появляться диалоговое окно, в котором требуется ввести пароль. Открыть базу данных и получить доступ к ее ресурсам могут получить только те пользователи, которые введут правильный пароль. Этот способ достаточно надежен (MS Access шифрует пароль, так что к нему нет прямого доступа при чтении файла базы данных). Однако проверка проводится только при открытии базы данных, после чего все ее объекты становятся полностью доступными. В результате, установка пароля обычно оказывается достаточной мерой защиты для баз данных, которые совместно используются небольшой группой пользователей или установлены на автономном компьютере.
Гораздо более надежным и гибким способом организации защиты является защита на уровне пользователей. Он подобен способам, используемым в большинстве сетевых систем. Процесс задания защиты на уровне пользователей состоит из двух принципиальных этапов:
- создание системы пользователей, объединенных в группы (Сервис > Защита > Пользователи и группы);
- задание прав доступа различных пользователей и групп по отношению к объектам базы данных (Сервис > Защита > Разрешения).


Рис. 7.36. Задание системы пользователей

Информация о системе пользователей сохраняется в специальном файле, называемом файлом рабочих групп. По умолчанию это файл System.mdw. Однако с помощью специальной программы, входящей в поставку Access, различные базы данных можно ассоциировать с различными файлами рабочих групп. При запуске Access от пользователей требуется идентифицировать себя и ввести пароль. Отдельные пользователи могут объединяться в группы, причем один и тот же пользователь может являться членом различных групп. Такая организация системы пользователей позволяет весьма гибко манипулировать набором их прав доступа, исходя из функциональной специфики предметной области. В файле рабочих групп Access по умолчанию создаются две группы: администраторы (группа Admins) и группа Users, в которую включаются все пользователи. Допускается также определение других групп. Процесс создания системы пользователей и определения их принадлежности к группам показан на рис. 7.36.


Рис. 7.37. Задание прав пользователей

Как группам, так и пользователям предоставляются разрешения на доступ, определяющие допустимые для них действия по отношению к каждому объекту базы данных. Набор возможных прав, очевидно, определяется спецификой объекта. Так, к примеру, список градаций разрешений на работу с экранной формой показан на рис. 7.37.
По умолчанию члены группы Admins имеют все разрешения на доступ ко всем объектам базы данных. Поскольку группа Users объединяет всех пользователей то ей имеет смысл присваивать некоторый минимальный набор прав. Далее имеется возможность установить более разветвленную структуру управления, создавая собственные учетные записи групп, предоставляя этим группам соответствующие разрешения и добавляя в них пользователей. Процесс задания прав доступа пользователей по работе с формами базы данных TradeTest показан на рис. 7.37. Заканчивая разговор о системах защиты, еще раз подчеркнем, что ее эффективная реализация возможна только на основе подробного изучения функциональной структуры автоматизируемого объекта и тщательного проектирования системы управления данными.

Знаете ли Вы, что, как и всякая идолопоклонническая религия, релятивизм ложен в своей основе. Он противоречит фактам. Среди них такие:

1. Электромагнитная волна (в религиозной терминологии релятивизма - "свет") имеет строго постоянную скорость 300 тыс.км/с, абсурдно не отсчитываемую ни от чего. Реально ЭМ-волны имеют разную скорость в веществе (например, ~200 тыс км/с в стекле и ~3 млн. км/с в поверхностных слоях металлов, разную скорость в эфире (см. статью "Температура эфира и красные смещения"), разную скорость для разных частот (см. статью "О скорости ЭМ-волн")

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

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

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

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

В этой статье

Обзор способов общего доступа к данным Access

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

Общие сведения о параметрах общего доступа в Access

Совместное доступ к одной базе данных

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

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

Чтобы поделиться базой данных с помощью общей папки:

В среде домашнего или малого бизнеса поделитесь папкой с определенными людьми. Дополнительные сведения см. в разделе "Общий доступ к файлам по сети в Windows 10".

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

Запустите Access и на вкладке Файл выберите пункт Параметры.

В окне Параметры Access выберите пункт Параметры клиента.

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

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

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

Совместное использование разделенной базы данных

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

Преимущества разделения базы данных включают в себя следующие преимущества:

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

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

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

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

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

Совместное передачу данных на сайте SharePoint

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

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

Дополнительные сведения см. в том, как импортировать, связатьили переместить данные в SharePoint.

Совместное использование данных с помощью сервера базы данных

Совместное использование базы данных можно организовать с помощью приложения Access и сервера баз данных (например, сервера SQL Server). Этот способ обеспечивает много преимуществ, но для него требуется дополнительное программное обеспечение — сервер баз данных.

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

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

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

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

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

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

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

Azure SQL Server В дополнение к преимуществам SQL Server динамической масштабируемости без простоев, интеллектуальной оптимизации, глобальной масштабируемости и доступности, отказом от затрат на оборудование и сокращением администрирования.


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

  1. ограничение доступа к данным для пользователей не прошедших аутентификацию
  2. ограничение доступа к данным для аутентифицированных, но не обладающих необходимыми привелегиями пользователей
  3. предотвращение несанкционированного доступа с помощью прямых обращений к API
  4. фильтрация данных в поисковых запросах и списковых элементах UI (таблицы, списки)
  5. предотвращение изменения данных, принадлежащих одному пользователю другими пользователями

Списки и таблицы


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

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

Слоеная архитектура

Добавляем абстракцию


А для доступа к данным сделаем вот такой фильтр:


Реализуем провайдер таким образом, чтобы он искал все объявленные фильтры и автоматически применял их:


Код получения и создания фильтров в примере не оптимален. Вместо Activator.CreateInstance а лучше использовать скомпилированные Expression Trees. В некоторых IOC-контейнерах реализованна поддержка регистрации открытых generic'ов. Я оставлю вопросы оптимизации за рамками этой статьи.

Реализуем фильтры

Реализация фильтра может выглядеть, например, так:

Исправляем код контроллера

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

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

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

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

Таким образом, неоптимально расходуются ресурсы клиентского компьютера и сети. В результате возрастает сетевой трафик и увеличиваются требования к аппаратным мощностям пользовательского компьютера. Это увеличивает объем передаваемой по сети данных и уже при подключении 10-15 пользователей и значительных размерах БД делает производительность системы недопустимо низкой.

Архитектура клиент-сервер построена следующим образом.

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

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

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

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

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




В архитектуре клиент-сервер работают так называемые "промышленные" СУБД. Промышленными они называются из-за того, что именно СУБД этого класса могут обеспечить работу информационных систем масштаба среднего и крупного предприятия, организации, банка. К разряду промышленных СУБД принадлежат MS SQL Server, Oracle, Gupta, Informix, Sybase, DB2, InterBase и ряд других.

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

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

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

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

Таким образом, неоптимально расходуются ресурсы клиентского компьютера и сети. В результате возрастает сетевой трафик и увеличиваются требования к аппаратным мощностям пользовательского компьютера. Это увеличивает объем передаваемой по сети данных и уже при подключении 10-15 пользователей и значительных размерах БД делает производительность системы недопустимо низкой.

Архитектура клиент-сервер построена следующим образом.

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

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

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

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

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

В архитектуре клиент-сервер работают так называемые "промышленные" СУБД. Промышленными они называются из-за того, что именно СУБД этого класса могут обеспечить работу информационных систем масштаба среднего и крупного предприятия, организации, банка. К разряду промышленных СУБД принадлежат MS SQL Server, Oracle, Gupta, Informix, Sybase, DB2, InterBase и ряд других.

Читайте также: