OpenSCADAWiki : Doc/SQLite

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


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

Оглавление документа

Введение

Модуль <SQLite> предоставляет в систему OpenSCADA поддержку БД SQLite. БД SQLite является небольшой встраиваемой БД поддерживающей SQL-запросы. БД SQLite распространяется по свободной лицензии. Ознакомиться с БД можно на сайте БД – http://sqlite.org. Модуль основан на библиотеке C/С++ API производителя БД. Модуль позволяет выполнять действия над базами данных, таблицами и содержимым таблиц.

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

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

БД SQLite адресуется путём указания имени файла БД.

Модуль поддерживает кодирование данных в нужную кодировку. С этой целью, для БД в целом, можно указать рабочую кодировку в адресе БД через разделитель “;". Например таким образом: «DATA/gen.db;UTF8”.

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

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

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


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

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

Типы элементов БД SQLite следующим образом соответствуют типам элементов системы OpenSCADA:
Типы полей системы OpenSCADAТипы полей БД SQLite
TFld::StringTEXT
TFld::Dec, TFld::Oct, TFld::Hex, TFld::BoolINTEGER
TFld::RealDOUBLE

4 Права доступа

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

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

Замер производительности БД выполнялся тестом «БД» модуля системных тестов «System Tests" путём выполнения операций над записями структурой: <name char(20), descr char(50), val double(10.2), id int(7), stat bool>.
ОперацияK8–3000+, 256М, 120G, SQLite 3.2.2
Создание 1000 записей (сек): 2.2
Обновление 1000 записей (сек): 2.2
Получение 1000 записей (сек): 0.4
Удаление 1000 записей (сек): 1.0