OpenSCADAWiki: Doc/ Fire Bird
 
English (1 Kb) English
Ukrainian (1 Kb) Українська

 (2 Kb) Страница заморожена, актуальная тут.

Модуль <FireBird> подсистемы "БД"

Модуль: FireBird
Имя: БД FireBird
Тип: БД
Источник: bd_FireBird.so
Версия: 1.4
Автор: Роман Савоченко
Описание: Модуль БД. Предоставляет поддержку БД FireBird.
Лицензия: GPL

Contents

Введение

Модуль <FireBird> предоставляет в систему OpenSCADA поддержку БД FireBird и InterBase. БД FireBird является небольшой встраиваемой БД с функциями сетевой БД, поддерживающей SQL-запросы. БД FireBird построена на основе коммерческой СУБД Interbase и распространяется по свободной лицензии. Ознакомиться с СУБД можно на сайте http://www.firebirdsql.org. Модуль основан на библиотеке API производителя СУБД на языке "С". Модуль позволяет выполнять действия над базами данных, таблицами и содержимым таблиц.

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

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

БД FireBird адресуется путём указания имени файла БД, пользователя и пароля. В общем адрес БД записывается таким образом: "{file};{user};{pass}[;{conTm}]".
Где:

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

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

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


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

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

Модулем реализуется механизм поддержки многоязыковых текстовых переменных. Для полей с многоязыковой текстовой переменной создаются колонки отдельных языков в формате <lang>#<FldID> (en#NAME). При этом базовая колонка содержит значение для базового языка. Колонки отдельных языков создаются по надобности, в момент сохранения в БД и при исполнении OpenSCADA в соответствующей локали. В случае отсутствия значения для конкретного языка будет использоваться значений для базового языка.

Типы элементов БД FireBird следующим образом соответствуют типам элементов системы OpenSCADA:
Типы полей системы OpenSCADAТипы полей БД FireBird
TFld::StringVARCHAR, BLOB SUBTYPE TEXT
TFld::IntegerINTEGER
TFld::RealDOUBLE
TFld::BooleanSMALLINT

4. Доступ к БД

Права доступа к БД определяются правами файла БД.

Кратко рассмотрим процедуру первичной настройки сервера FireBird с целью подключения к нему с помощью данного модуля:

5. Производительность СУБД

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

Operation AMD Turion L625 1.6, 2G, FireBird [2.1.3 Local SuperServer; 100Base-TX; 2.5.2 100Base-TX SuperServer ForcedWrites=Off; ForcedWrites=On] Intel(R) Core(TM) i3 CPU 1.33GHz, 3G, HDD [2.5.2 100Base-TX SuperServer ForcedWrites=Off; ForcedWrites=On]
Creation of the 1000 records (sec.): 0.93; 1.15; 4.4; 5.2 3.68; 4.67
Updating of the 1000 records (sec.): 2.74; 2.94; 5.1; 5.2 3.88; 4.54
Getting of the 1000 records (sec.): 1.64; 2.22; 5.0; 27.8 3.69; 28.8
Seeking of the 1000 records (sec.): - 5.36; 32
Seeking in preload of the 1000 records (sec.): - 0.045; 0.065
Deleting of the 1000 record (sec.): 0.65; 1.04; 2.0; 2.4 1.69; 1.66


6. Замечания

СУБД FireBird имеет много архитектурных ограничений и проблем в виду наследственности InterBase и родительской ОС MS Windows, которые препятствуют её широкому использованию для многих задач. Известные проблемы:

Ссылки

Referring pages: Doc
Doc/OpenSCADA060
Function
Works/Tests/DB