Модули/DBF - OpenSCADAWiki

# Модули/DBF

This page is a translated version of the page Modules/DBF and the translation is 100% complete.

English • ‎mRussian • ‎Українська

Модуль | Имя | Версия | Лицензия | Источник | Языки | Платформы | Тип | Автор | Описание
--- | --- | --- | --- | --- | --- | --- | --- | --- | ---
DBF | БД DBF Свойства: LIST, GET, SEEK, SET, DEL, FIX | 2.4 | GPL2 | bd_DBF.so | en,uk,ru,de | x86,x86_64,ARM | БД | Роман Савоченко | Модуль БД. Предоставляет поддержку DBF файлов версии 3.0.

Модуль предоставляет в OpenSCADA поддержку файлов БД типа DBF. Модуль основан на библиотеке для работы с DBF файлами ПО "Complex2" фирмы НИП "ДIЯ". Модуль позволяет выполнять действия над базами данных, таблицами и содержимым таблиц.

## 1 Операции над БД

Поддерживаются операции открытия и закрытия БД, с возможностью создания новой БД при открытии и удаления существующей при закрытии. В терминах подсистемы "БД" OpenSCADA, открытием БД является её регистрация для последующего использования программой. Также, поддерживается операция запроса перечня таблиц в БД.

Под БД, в случае с DBF-файлами, подразумевается директория, содержащая DBF-файлы. Следовательно, операции создания и удаления БД создают и удаляют директории, где таблицы (DBF-файлы) хранятся. В роли адреса БД выступает полное имя директории с DBF-файлами. Доступ к БД определяется системными правами доступа к директории.

## 2 Операции над таблицей

Поддерживаются операции открытия, закрытия таблицы, с возможностью создания новой таблицы при открытии и удаления существующей при закрытии.

Собственно, DBF-файл и является таблицей. Создание и удаления таблицы предусматривает создание и удаление DBF-файла. Имя таблицы представляет собой имя DBF-файла в директории БД. Права доступа к таблице определяются правами доступа к DBF-файлу.

## 3 Операции над содержимым таблицы

- сканирование записей таблицы;
- запрос значений указанных записей;
- установка значений указанных записей;
- удаление записей.

API подсистемы "БД" предполагает доступ к содержимому таблицы по значению ключевого(ых) полей. Так, операция запроса записи подразумевает предварительную установку ключевых колонок объекта TConfig, по которым будет выполнен запрос. Создание новой записи(строки) производится операцией установки значений записи, которая отсутствует.

Модуль позволяет динамически менять структуру таблиц БД FireBird. Так, в случае несоответствия структуры таблицы и структуры устанавливаемой записи, структура таблицы будет приведена к требуемой структуре записи. В случае запроса значений записи и несоответствия структур записи и таблицы, будут получены только значения общих элементов записи и таблицы. Модуль не отслеживает порядка расположения элементов записи и структуры таблицы!

При доступе к значениям таблиц используется синхронизация путём захвата ресурса на доступ к таблице. Это позволяет избежать разрушения данных в случае многопоточного доступа.

Типы элементов БД DBF следующим образом соответствуют типам элементов OpenSCADA:

Типы полей OpenSCADA | Типы полей DBF
--- | ---
TFld::String | "С"
TFld::Integer, TFld::Real | "N"
TFld::Boolean | "L"

## 4 Производительность БД

Замер производительности БД выполнялся тестом "БД" модуля тестов "SystemTests", путём выполнения операций над записями структурой: "name char (20), descr char (50), val double (10.2), id int (7), stat bool, reqKey string, reqVal string".

Operations for 1000 records, seconds | K8-3000+,256M,120G | Nokia N800, SD 2G | Intel(R) Core(TM) i3 CPU 1.33GHz, 3G, HDD
--- | --- | --- | ---
Creating: | 1.07 | 37 | 0.382
Updating: | 1.6 | 33.8 | 0.368
Getting: | 1.0 | 34.32 | 0.362
Seeking: | - | - | 0.064
Seeking in preload: | - | - | 0.064
Deleting: | 0.95 | 37 | 0.371

Modules/DBF/ru - GFDL | July 2026 | OpenSCADA 1+r3070