| Модуль: | DBF |
| Имя: | БД DBF |
| Тип: | БД |
| Источник: | bd_DBF.so |
| Версия: | 1.8.0 |
| Автор: | Роман Савоченко |
| Описание: | Модуль БД. Предоставляет поддержку *.dbf файлов, версии 3.0. |
| Лицензия: | GPL |
Модуль предназначен для предоставление в систему OpenSCADA поддержки файлов БД типа *.dbf. Модуль основан на библиотеке для работы с dbf файлами ПО “ фирмы НИП “ДIЯ”. Модуль позволяет выполнять действия над базами данных, таблицами и содержимым таблиц.
Поддерживаются операции открытия и закрытия БД, с возможностью создания новой БД при открытии и удаления существующей при закрытии. В терминах подсистемы "БД" системы OpenSCADA открытие БД является её регистрация для последующего использования в системе.
Под БД, в случае с dbf-файлами, подразумевается директория содержащая dbf-файлы. Следовательно операции создания и удаления БД создаёт и удаляет директории, где таблицы (dbf-файлы) хранятся. В роли адреса БД выступает полное имя директории с dbf-файлами. Доступ к БД определяется системными правами доступа к директории.
Модуль поддерживает кодирование данных в нужную кодировку. С этой целью, для БД в целом, можно указать рабочую кодировку. В процессе работы будет выполняться кодирование данных базы данных из кодировки БД в системную кодировку OpenSCADA и обратно.
Поддерживаются операции открытия и закрытия таблицы, с возможностью создания новой таблицы при открытии и удаления существующей при закрытии.
Собственно dbf-файл и является таблицей. Создание и удаления таблицы подразумевают создание и удаление dbf-файла. Имя таблицы представляет собой имя dbf-файла в директории БД. Права доступа к таблице определяются правами доступа к dbf-файлу.
API подсистемы “БД” предполагает доступ к содержимому таблицы по значению ключевого(ых) полей. Так, операция запроса записи подразумевает предварительную установку ключевых колонок объекта TConfig, по которым и будет выполнен запрос. Создание новой записи(строки) производится операцией установки значений записи, которая отсутствует.
Модуль позволяет динамически менять структуру таблиц БД DBF. Так, в случае несоответствия структуры таблицы и структуры устанавливаемой записи, структура таблицы будет приведена к требуемой структуре записи. В случае запроса значений записи, и не соответствия структур записи и таблицы, будут получены только значения общих элементов записи и таблицы. Модуль не отслеживает порядка расположения элементов в записи и структуре таблицы.
При доступе к значениям таблиц используется синхронизация, путём захвата ресурса на доступ к таблице. Это позволяет избежать разрушения данных в случае многопоточного доступа!
Типы элементов dbf-файлов следующим образом соответствуют типам элементов системы OpenSCADA:
| Типы полей системы OpenSCADA | Тип поля dbf-файла |
| TFld::String | “С” |
| TFld::Integer, TFld::Real | “N” |
| TFld::Boolean | “L” |
Замер производительности БД выполнялся тестом "БД" модуля системных тестов "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 |