Модулі/SQLite - OpenSCADAWiki

# Модулі/SQLite

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

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

Модуль | Ім'я | Версія | Ліцензія | Джерело | Мови | Платформи | Тип | Автор | Опис
--- | --- | --- | --- | --- | --- | --- | --- | --- | ---
SQLite | БД SQLite Властивості: SQL, LIST, STRUCT, GET, SEEK, PRELOAD, SET, DEL, FIX, TR, ERR | 4.0 | GPL2 | bd_SQLite.so | en,uk,ru,de | x86,x86_64,ARM | БД | Роман Савоченко | Модуль БД. Надає підтримку БД SQLite.

Модуль надає до OpenSCADA підтримку БД SQLite. БД SQLite є невеличкою та вбудованою БД, яка підтримує SQL-запити. БД SQLite розповсюджується за вільною ліцензією. Ознайомитися з БД можна на сайті БД — http://sqlite.org. Модуль оснований на бібліотеці API виробника БД мови "C". Модуль дозволяє виконувати дії над базами даних, таблицями та вмістом таблиць.

Модуль наразі підтримує конкурентну роботу із спільними файлами БД, на кшталт бібліотек, із різних процесів OpenSCADA, шляхом коректного опрацювання блокування файлів. Тож ви будете отримувати попередження доки файл залишатиметься заблокованим, та зможете вдало записати до нього щойно він буде звільнений закриттям транзакції блокуючим процесом.

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

Підтримуються операції відкриття та закриття БД, з можливістю створення нової БД при відкритті та видалення існуючої при закритті. У термінах підсистеми "БД" OpenSCADA, відкриттям БД є її реєстрація для наступного використання програмою. Також, підтримується операція запиту переліку таблиць у БД.

БД SQLite адресується шляхом визначення ім'я файлу БД у форматі "{FileDBPath}". Де:

- FileDBPath — повний шлях до файлу БД (./oscada/Main.db).

  Використовуйте порожній шлях для створення тимчасової бази даних на диску.
  Використовуйте ":memory:" для створення тимчасової бази даних у пам'яті.

## 2 Операції над таблицею

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

## 3 Операції над вмістом таблиці

- сканування записів таблиці;
- запит значень визначених записів;
- встановлення значень визначених записів;
- видалення записів.

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

Модуль дозволяє динамічно міняти структуру таблиць БД SQLite, шляхом створення нової БД з потрібною структурою та копіювання до неї даних зі старої. Так, у випадку невідповідності структури таблиці та структури запису що встановлюється, структуру таблиці буде приведено до потрібної структури запису. У випадку запиту значень запису та невідповідності структур запису і таблиці, буде отримано тільки значення загальних елементів запису та таблиці. Модуль не відстежує послідовності розташування елементів запису та структури таблиці!

Модулем реалізується механізм підтримки багатомовних текстових змінних. Для полів із багатомовною текстовою змінною створюються стовпчики окремих мов у форматі "{lang}#{FldID}" (en#NAME). При цьому, базовий стовпчик містить значення для базової мови. Стовпчики окремих мов створюються за потреби, у момент збереження до БД та при виконанні OpenSCADA у відповідній локалі. У випадку відсутності значень для конкретної мови буде використано значення для базової мови.

Типи елементів БД SQLite наступним чином відповідають типам елементів OpenSCADA:

Типи полів OpenSCADA | Типи полів БД SQLite
--- | ---
TFld::String | TEXT
TFld::Integer, TFld::Boolean | INTEGER
TFld::Real | DOUBLE

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

Права доступу до БД визначаються правами доступу до окремо взятого файлу БД. Модулем підтримується робота з файлами БД SQLite у режимі тільки для читання, наприклад, у демонстраціях.

## 5 Продуктивність БД

Вимірювання продуктивності БД здійснюється тестом "БД" модуля "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 | Nokia N800, SD 4GClass6 Nokia N900 | RPi2 Debian8 Class10 UHS1; RPi3 Debian8 Class10 UHS1; OrangePiZero Debian8 Class2 | AMD Turion L625 1.6, 2G [HDD; SSD] Intel(R) Core(TM) i3 CPU 1.33GHz, 3G [HDD; SSD]; Intel(R) Core(TM) i7 CPU 2.6GHz, 12G FastSSD
--- | --- | --- | ---
Creating: | 3.3; 1.96 | 0.78; 0.43; 0.48 | [0.49; 0.2]; [0.39; 0.22]; 0.056
Updating: | 3.2; 2.47 | 0.7; 0.41; 0.45 | [0.48; 0.19]; [0.40; 0.21]; 0.053
Getting: | 2.6; 1.81 | 0.69; 0.38; 0.45 | [0.36; 0.19]; [0.31; 0.21]; 0.051
Seeking: | 3.1; 1.48 | 0.76; 0.42; 0.51 | [-; 0.22]; [0.21; 0.22]; 0.052
Seeking in preload: | 0.53; 0.29 | 0.13; 0.071; 0.088 | [-; 0.028]; [0.027; 0.028]; 0.0073
Deleting: | 1.18; 0.43 | 0.20; 0.10; 0.13 | [0.08; 0.058]; [0.067; 0.069]; 0.012

Modules/SQLite/uk - GFDL | May 2026 | OpenSCADA 0.9.9