Модуль БД. Предоставляет поддержку *.dbf файлов, версии 3.0.
Лицензия:
GPL
Введение
Модуль предназначен для предоставление в систему OpenSCADA
поддержки файлов БД типа *.dbf. Модуль основан на библиотеке
для работы с dbf файлами ПО “Complex2” фирмы
НИП “ДIЯ”. Модуль позволяет выполнять действия над базами
данных, таблицами и содержимым таблиц.
1 Операции над БД
Поддерживаются операции открытия и закрытия БД,
с возможностью создания новой БД при открытии и удаления
существующей при закрытии. В терминах подсистемы «БД» системы
OpenSCADA открытие БД является её регистрация
для последующего использования в системе.
Под БД, в случае с dbf-файлами, подразумевается
директория содержащая dbf-файлы. Следовательно операции создания
и удаления БД создаёт и удаляет директории,
где таблицы (dbf-файлы) хранятся. Имя БД является полным
именем директории. Доступ к БД определяется системными правами
доступа к директории.
Модуль поддерживает кодирование данных в нужную кодировку.
С этой целью, для БД в целом, можно указать рабочую
кодировку в адресе БД через разделитель “;". Например таким
образом: «DATA/DBF;UTF8”.
2 Операции над таблицей
Поддерживаются операции открытия и закрытия таблицы
с возможностью создания новой таблицы при открытии
и удаления существующей при закрытии.
Собственно, dbf-файл и является таблицей. Создание и удаления
таблицы подразумевают создание и удаление dbf-файла.
Имя таблицы представляет собой имя dbf-файла
в директории с именем БД. Права доступа к таблице
определяются правами доступа к dbf-файлу.
3 Операции над содержимым таблицы
сканирование записей таблицы;
запрос значений указанных записей;
установка значений указанных записей;
удаление записей.
API подсистемы “БД” предполагает доступ к содержимому таблицы
по значению ключевого(ых) полей. Так, операция запроса записи
подразумевает предварительную установку ключевых колонок объекта
TConfig, по которым и будет выполнен запрос. Создание новой
записи(строки) производится операцией установки значений записи которая
отсутствует.
Модуль позволяет динамически менять структуру таблиц БД DBF. Так,
в случае несоответствия структуры таблицы и структуры
устанавливаемой записи, структура таблицы будет приведена
к требуемой структуре записи. В случае запроса значений
записи, и не соответствия структур записи и таблицы, будут
получены только значения общих элементов записи и таблицы. Модуль
не отслеживает порядка расположения элементов в записи
и структуре таблицы.
При доступе к значениям таблиц используется синхронизация,
путём захвата ресурса на доступ к таблице. Это позволяет
избежать разрушения данных в случае многопоточного доступа!
Типы элементов dbf-файлов следующим образом соответствуют типам элементов системы OpenSCADA:
Типы полей системы OpenSCADA
Тип поля dbf-файла
TFld::String
“С”
TFld::Dec, TFld::Oct, TFld::Hex, TFld::Real
“N”
TFld::Bool
“L”
4 Производительность БД
Замер производительности БД выполнялся тестом «БД» модуля
системных тестов «SystemTests" путём выполнения операций
над записями структурой: <name char(20), descr char(50),
val double(10.2), id int(7), stat bool>.