From OpenSCADAWiki
Jump to: navigation, search
This page is a translated version of the page Modules/DBGate and the translation is 100% complete.

Other languages:
English • ‎українська
Модуль Ім'я Версія Ліцензія Джерело Мови Платформи Тип Автор Опис
DBGate Шлюз БД 1.0 GPL2 bd_DBGate.so en,uk x86,x86_64,ARM БД Роман Савоченко Модуль БД. Дозволяє виконувати шлюзування баз даних віддалених OpenSCADA станцій до локальних.
  • Зробити (To Do):
- реалізація локального кешу для функції fieldSeek() через глибоке сканування у XML-контекст на віддаленій частині.

Основною функцією цього модуля є віддзеркалення даних підсистеми "Бази даних" віддалених OpenSCADA станцій на локальні. В своїй роботі модуль використовує Власний Протокол OpenSCADA та сервісні функції підсистеми "Бази даних". Цей модуль може бути корисним:

  • у множинному-мережевому доступі до БД віддалених станцій, побудованих на основі локальних на кшталт SQLite, таким чином трансформуючи їх у мережеві;
  • у проксі-доступі до БД віддалених станцій, побудованих на основі мережевих СУБД, через інтерфейс контролю OpenSCADA, який може також бути безпечним, використовуючи SSL;
  • у рознесені між мережевими станціями функцій складного користувацького простору із частинами Збору Даних та Графічного Інтерфейсу, пов'язаних на БД на кшталт Рецептів.

Модуль реалізує наступні функції:

  • Ввімкнення віддаленої БД при ввімкнені об'єкту локальної БД.
  • Отримання переліку наявних таблиць віддаленої БД.
  • Додання із створенням нових запитуваних таблиць на віддаленій БД.
  • Цілковите видалення запитуваної таблиці на віддаленій БД.
  • Передавання повних SQL-запитів до віддаленої БД.
  • Передавання OpenSCADA запитів БД до віддаленої БД щодо: fieldStruct(), fieldSeek(), fieldGet(), fieldSet() та fieldDel().

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

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

Сторінка конфігурації об'єкту БД також віддзеркалює більшість властивостей віддаленої БД, окрім:

  • "Стан > Ввімкнено" — власний стан і команда динамічного включення об'єкта.
  • "Конфігурація > Ідентифікатор" — власний ідентифікатор об'єкту.
  • "Конфігурація > {Ім'я,Опис}" — власні значення для непорожнього або значення віддаленої БД.
  • "Конфігурація > Адреса" — власна адреса БД, далі про її формат.
  • "Конфігурація > Вмикати" — власний стан його ввімкнення при запуску програми.

БД DBGate адресується шляхом визначення-обрання ім'я БД у форматі "{ВіддаленаСтанція}.{МодульБД}.{БД}", де:

  • ВіддаленаСтанція — віддалена станція OpenSCADA, зареєстрована у таблиці станцій OpenSCADA;
  • МодульБД — ідентифікатор модуля БД віддаленої станції;
  • БД — ідентифікатор бази даних віддаленої станції.

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

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

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

Передавання до БД віддаленої станції операцій над таблицею:

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

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

Динамічна зміна структури таблиці залежить лише від типу пов'язаної віддаленої БД.

Модуль реалізує механізм підтримки багатомовних текстових змінних непрямо функціями ядра роботи із конфігураційним файлом: TBDS::dataSeek(), TBDS::dataGet() та TBDS::dataSet().

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

Права доступу до кінцевої БД визначаються правами, специфічними до типу віддаленої БД, та правами доступу користувача віддаленої станції до підсистеми БД загалом, за правами описаними у наступній таблиці:

Функція/операція/сервіс Права відносно до "root:BD:{інші}"
Ввімкнення БД W:W:-
Перелік наявних таблиць R:R:R
Створення таблиці W:W:-
Видалення таблиці W:W:-
Запит SQL (call:/serv/SQL) W:W:-
Структура запису (call:/serv/fieldStruct) R:R:R
Сканування запису (call:/serv/fieldSeek) R:R:R
Отримання запису (call:/serv/fieldGet) R:R:R
Встановлення запису (call:/serv/fieldSet) W:W:-
Видалення запису (call:/serv/fieldDel) W:W:-

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 AMD A8-6500 <Ethernet> AMD Phenom II X4 [RAID1] <> SQLite AMD A8-6500 <Ethernet> AMD Phenom II X4 [RAID1] <> MySQL
Creating: 2.36 > 0.35 3.39 > 1.35
Updating: 2.31 > 0.31 2.97 > 0.94
Getting: 2.45 > 0.2 2.67 > 0.49
Seeking: 2.22 > 0.13 3.59 > 1.48
Seeking in preload*: 1.93 > 0.02 1.88 > 0.04
Deleting: 1.85 > 0.051 2.14 > 0.27

* — this operation has no effect because preloading-caching is performed only on the remote station side.