Softpoint Data Cluster для OLTP систем

Введение в тему кластеризации серверов баз данных (предпосылки, цели)

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

В отличие от других систем, например, OLAP–аналитических и отчетных систем, задача горизонтального масштабирования для OLTP–систем нетривиальная в силу описанных выше требований.

Обобщим основные требования к горизонтальному масштабированию сервера баз данных для OLTP–системы:

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

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

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

Архитектура решения Softpoint Data Cluster для MS SQL

Рис.1
Рис.1

Рис.1. Общая архитектура решения Softpoint Data Cluster для MS SQL Server

Основные составные элементы решения Softpoint Data Cluster

  • Softpoint Data Cluster Router (SDCR) – основной функциональный блок, отвечающий за перенаправление трафика запросов на серверы баз данных, контроль рассогласованности данных между серверами MS SQL, балансировка запросов для перераспределения нагрузки между серверами баз данных, обеспечение повышенной отказоустойчивости в случае падения сетевого оборудования, серверов баз данных. Этот блок может состоять из нескольких сетевых интерфейсов (Infiniband, Ethernet), что позволяет осуществить балансировку сетевого трафика в соответствие с информацией о загрузке сети и пропускной способности. Есть возможность установки несколько соединенных друг с другом SDCR для обеспечения еще большей надежности и производительности решения «Softpoint Data Cluster».
  • Softpoint Data Cluster Link (SDCL) – сервис, устанавливаемый на сервере баз данных и являющийся связующим шлюзом с SDCR.  SDCL обеспечивает стабильность сеансов соединения с сервером баз данных, независимо от сбоев сети между SDCR и SDCL. Также SDCL оперативно предоставляет информацию SDCR о текущей загрузке серверов баз данных для равномерного распределения.
  • Softpoint Data Cluster Console  (SDCC) – набор инструментов для настройки, управления и контроля работы всего решения Softpoint Data Cluster.

Для репликации данных между серверами используется технология AlwaysOn, входящая в Microsoft SQL Server Enterprise Edition, начиная с 2012 версии. Репликация проходит в асинхронном режиме (без влияния на отклик), за непротиворечивость данных отвечает SDCR. Учитывая особенности технологии AlwaysOn, среди серверов баз данных один назначается основным (Master) и только через него осуществляется изменение данных, оставшиеся сервера баз данных (Slave) могут быть использованы только для чтения данных.

Важные аспекты реального внедрения и использования технологии в тиражных решениях

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

Учитывая особенность, описанную выше, изначально в архитектуру решения Softpoint Data Cluster была заложена возможность адаптации его к любой информационной системе. То есть здесь срабатывает следующее правило: для внедрения технологии горизонтального масштабирования SDC нет нужды изменять код приложения. SDC поддерживает практически все популярные драйвера доступа к данным: ODBC, OLEDB, SQL Native Client и прочее.

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

Дополнительные преимущества использования технологии SPDC

  • Простота внедрения
  • Увеличение производительности
  • Отказоустойчивость каналов связи