Модуль <MySQL> предоставляет в систему OpenSCADA поддержку
БД MySQL. БД MySQL является мощной реляционной
и многоплатформенной БД доступной по свободной лицензии.
Разработчиком БД MySQL является фирма MySQL AB http://www.mysql.com.
Модуль основан на библиотеке C API производителя
БД MySQL. Модуль позволяет выполнять действия над базами
данных, таблицами и содержимым таблиц.
1 Операции над БД
Поддерживаются операции открытия и закрытия БД,
с возможностью создания новой БД при открытии и удаления
существующей при закрытии. В терминах подсистемы «БД» системы
OpenSCADA открытие БД является её регистрация
для последующего использования в системе.
БД MySQL адресуется строкой следующего типа: [<host>;<user>;<pass>;<bd>;<port>;<u_sock>;<code_page>]
где:
host — имя хоста на котором работает сервер БД MySQL;
user — имя пользователя БД;
pass — пароль пользователя для доступа к БД;
bd — имя БД;
port — порт который слушает сервер БД (по умолчанию 3306);
u_sock — имя UNIX-сокета, в случае локального доступа к БД (/var/lib/mysql/mysql.sock);
code_page — рабочая кодировка БД.
В случае локального доступа к БД (в пределах одного хоста) нужно использовать UNIX сокет. Например: [;roman;123456;OpenSCADA;;/var/lib/mysql/mysql.sock;UTF8]
В случае удалённого доступа к БД нужно использовать имя хоста и порт сервера БД. Например: [server.nm.org;roman;123456;OpenSCADA;3306;;UTF8]
2 Операции над таблицей
Поддерживаются операции открытия и закрытия таблицы
с возможностью создания новой таблицы при открытии
и удаления существующей при закрытии.
3 Операции над содержимым таблицы
сканирование записей таблицы;
запрос значений указанных записей.
установка значения указанных записей.
удаление записей.
API подсистемы “БД” предполагает доступ к содержимому таблицы
по значению ключевого(ых) полей. Так, операция запроса записи
подразумевает предварительную установку ключевых колонок объекта
TConfig, по которым будет выполнен запрос. Создание новой
записи(строки) производится операцией установки значений записи которая
отсутствует.
Модуль позволяет динамически изменять структуру таблиц БД MySQL.
Так, в случае несоответствия структуры таблицы и структуры
устанавливаемой записи, структура таблицы будет приведена
к требуемой структуре записи. В случае запроса значений
записи и не соответствия структур записи и таблицы; будут
получены только значения общих элементов записи и таблицы. Модуль
отслеживает порядок расположения элементов в записи
и структуре таблицы, поэтому порядок элементов таблицы
и записи будут соответствовать!
Типы элементов БД MySQL следующим образом соответствуют типам элементов системы OpenSCADA:
Типы полей системы OpenSCADA
Типы полей БД MySQL
TFld::String
char(n), text
TFld::Dec, TFld::Oct, TFld::Hex
int(n)
TFld::Real
double(n,m)
TFld::Bool
tinyint(1)
4 Права доступа
БД MySQL содержит мощный механизм разделения доступа, который
заключается в выборочном указании доступа пользователя БД к
отдельным SQL-командам. В таблице ниже перечислены операции
над БД и требуемый доступ к командам для этих
операций.
Операция
SQL-команды
Создание БД и таблиц
CREATE
Удаление БД и таблиц
DROP
Добавление записей
INSERT
Удаление записей
DELETE
Получение значений записей
SELECT
Установка значений записей
UPDATE
Манипуляция структурой таблицы
ALTER
5 Производительность БД
Замер производительности БД выполнялся тестом «БД» модуля системных тестов «System Tests"
путём выполнения операций над записями структурой: <name
char(20), descr char(50), val double(10.2), id int(7), stat
bool>.