ODBC (Open Database Connectivity) — прослойка между базой данных и приложением, с единым интерфейсом доступа к данным. Она реализована под все платформы, потому является кроссплатформенной.
Например, можно установить PvPGN на Linux, и через ODBC он сможет соединяться с базой данных MSSQL на сервере с Windows.
НастройкаНастройка ODBC под Windows предельно простая и сводится к добавлению нового источника данных.
Пуск > Панель управления > Администрирование > Источники данных (ODBC)
или через
Пуск > Выполнить… > odbcad32
В Windows x64 необходимо его запускать из C:\WINDOWS\SysWOW64\odbcad32.exe, иначе PvPGN не сможет соединиться к созданному источнику.
Откроется окно "ODBC Data Source Administrator". В нем есть два закладки: Пользовательский DSN и Системный DSN (Data Source Name). Они различаются тем, что пользовательский будет доступен только текущему пользователю, а системный — для любого пользователя. Для сервера лучше добавить новую запись в системный DSN.
ODBC драйвер для MSSQL устанавливается вместе с сервером MSSQL. А для любой другой БД он, обычно, доступен для скачивания на сайте производителя этой БД (например, для MySQL).
Прежде чем создавать источник данных, создайте пустую базу данных в SQL сервере, которую будет использовать источник. Удобным и бесплатным менеджером для управления БД MSSQL является Microsoft SQL Management Studio. Его можно установить при помощи Web Platform Installer.
При помощи этого же инсталлера легко устанавливается бесплатный сервер MSSQL Express, если у вас нет его полной версии.
В конфиге PvPGN (bnetd.conf) в строке соединения ODBC достаточно указать только название источника данных, поскольку все остальные настройки соединения уже настроены в самом источнике:
sql:mode=odbc;name=pvpgn;prefix=pvpgn_
Для запуска PvPGN не требуется DLL библиотека ODBC (подробнее см. в конце этой статьи).
После первого же запуска, PvPGN должен создать структуры таблиц в базе данных. Создание аккаунта через игру тоже должно пройти успешно:
ПроизводительностьСам по себе, этот механизм обмена быстрый, поскольку работает через прямые вызовы функций из DLL драйвера. Поэтому если у вас наблюдаются тормоза, то они либо в базе данных, либо в криво написанном ODBC драйвере для этой базы данных, либо в самом приложении.
В ODBC драйверах Microsoft с последним сервис паком никаких проблем с производительностью нет, поэтому можно смело использовать PvPGN с MSSQL.
Начиная с версии ODBC 3.0 появился пул соединений, в котором хранятся соединения с базой данных. Даже если приложение закрывает соединение, в пуле оно хранится какое-то время и по-необходимости выделяется снова, прозрачно для приложения. Управлять таймаутом соединений для пула можно в закладке "Пул соединений".
Эта настройка может потребоваться для сайта, но не для PvPGN — он использует только одно соединение с бд.
Так же, стоит убедиться, что отключена Трассировка для ODBC, в закладке "Трассировка". Иначе все SQL запросы будут мониториться и записываться в лог файл, из-за чего могут возникнуть лаги. По-умолчанию она выключена.
ИтогODBC универсален. Можно использовать PvPGN с MySQL, а потом скомпилировать его с поддержкой ODBC и продолжить использовать ту же бд. То есть, просто изменив тип базы данных в конфиге, можно перейти с нативного MySQL на ODBC, и наоборот. Но в этом случае выигрыша от этого никакого, поэтому стоит использовать ODBC только с той базой данных, которой нет в списке поддерживаемых с PvPGN.
MSSQL для Windows — это лучший вариант. В любом случае, данные можно перенести из одной базы данных в другую и переключить на использование другого источника ODBC.
Перенос данных из одного ODBC источника в другой иногда не совсем тривиальная задача, но это возможно сделать, почти автоматически. Вот пример переноса из MySQL в MSSQL, но там не переносятся индексы. Их необходимо перенести отдельно, либо переносить данные сразу в существующую структуру, созданную PvPGN при первом запуске.
На данный момент нет Web приложений под ODBC для PvPGN, большинство не знает о нем из-за повсеместной популяризации MySQL для веба. Отчасти и от того, что ODBC, в большинстве случаев, никому и не нужен. Но если переделать текущие веб статистики и веб регистрации, то придется изменить не совсем много кода (PHP тоже поддерживает ODBC). |