Способ организации доступа к базе данных.

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

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

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

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

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

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

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

На рисунке 1 изображена схема кластера серверов 1С:Предприятия 8. ( http://v8.1c.ru/overview/cluster.htm) - это обычный способ современной организации доступа к базе данных.

  1. Клиентские приложения.
  2. Кластер серверов.
  3. Сервер базы данных.

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

Рис.1. Классический способ организации доступа к базе данных в технологии клиент-сервер.

Рис.1. Классический способ организации доступа к базе данных в технологии клиент-сервер

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

Рисунки 2 и 3 изображают применение предлагаемого способа организации доступа к базе данных. Здесь:

  1. клиентские приложения (станция),
  2. копии базы данных,
  3. сервер,
  4. транзакция.

Рис.2. Рис.2. Синхронизация баз данных сервера и клиентских приложений.

Рис.2. Синхронизация баз данных сервера и клиентских приложений.

На рисунке 2 изображен процесс синхронизации баз данных на сервере и всех клиентских приложениях. Чтение и обработка данных происходит на каждом клиентском месте, не загружая каналы связи. Каждое клиентское приложение имеет собственный идентификатор. При возникновении изменения в информации клиентское приложение (1.1)  формирует транзакцию (4), помечает ее своим идентификатором и передает ее серверу. Сервер присваивает транзакции сквозной номер (i), записывает транзакцию в собственную базу данных и передает ее всем клиентам в режиме вещания, не заботясь о факте ее приема конкретной станцией. Передающая станция (1.1) узнает о приеме своей транзакции сервером в случае ее получения в режиме вещания. Если клиентское приложение (1.n) по каким-либо причинам не соединено с сервером, транзакция ему в этот момент не  поступает.

Рис. 3. описание запроса клиентским приложением пропущенной транзакции.

Рис. 3. описание запроса клиентским приложением пропущенной транзакции.

Рисунок 3 показывает описание запроса клиентским приложением (1.n) пропущенной транзакции (4.i). Станция обращается к серверу о запросе пропущенных транзакций в момент включения либо при получении транзакции, номер которой отличается от существующей в базе данных станции больше, чем на 1. Тогда у сервера запрашиваются транзакции с конкретными номерами, и взаимодействие происходит в режиме диалога между сервером и станцией.

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

  • А – средний размер блока передачи
  • Б – количество пакетов в условную единицу времени
  • N – количество клиентских приложений,

то для описания процесса корректировки данных при классическом подходе организации данных справедлива формула описания объема трафика в условную единицу времени:

N * А * Б

В предлагаемом способе:

2*N * А * Б

Для процесса запроса данных –при классическом подходе:

N * А * Б

В предлагаемом способе:

0

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