OpenSCADAWiki : Doc/DBF

Модуль подсистемы “БД” <DBF>



Модуль:DBF
Имя:БД DBF
Тип:БД
Источник:bd_DBF.so
Версия:1.8.0
Автор:Роман Савоченко
Описание:Модуль БД. Предоставляет поддержку *.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>.
ОперацияK8–3000+, 256М, 120G
Создание 1000 записей (сек): 0.7
Обновление 1000 записей (сек): 0.7
Получение 1000 записей (сек): 0.65
Удаление 1000 записей (сек): 0.63