Модуль | Ім'я | Версія | Ліцензія | Джерело | Мови | Платформи | Тип | Автор | Опис |
---|---|---|---|---|---|---|---|---|---|
DBGate | Шлюз БД
|
1.1 | GPL2 | bd_DBGate.so | en,uk | x86,x86_64,ARM | БД | Роман Савоченко | Модуль БД. Дозволяє виконувати шлюзування баз даних віддалених OpenSCADA станцій до локальних.
|
Основною функцією цього модуля є віддзеркалення даних підсистеми "Бази даних" віддалених OpenSCADA станцій на локальні. В своїй роботі модуль використовує Власний Протокол OpenSCADA та сервісні функції підсистеми "Бази даних". Цей модуль може бути корисним:
Модуль реалізує наступні функції:
Підтримуються операції відкриття та закриття БД лише для об'єкту локальної БД та без можливості створення нової бази даних та видалення існуючої при закритті, на віддаленій станції. У термінах підсистеми "БД" OpenSCADA, відкриттям БД є її реєстрація-підключення для наступного використання програмою. Також, підтримується операція запиту переліку таблиць у віддаленій БД.
Сторінка конфігурації об'єкту БД також віддзеркалює більшість властивостей віддаленої БД, окрім:
БД DBGate адресується шляхом визначення-обрання ім'я БД у форматі "{ВіддаленаСтанція}.{МодульБД}.{БД}", де:
Підтримується передавання до віддаленої станції операцій відкриття, закриття таблиці, з можливістю створення нової таблиці при відкритті та видалення існуючої при закриті, а також запит структури таблиці.
Передавання до БД віддаленої станції операцій над таблицею:
API підсистеми "БД" передбачає доступ до вмісту таблиці за значенням ключового(их) полів. Так, операція запиту запису передбачає попереднє встановлення ключових стовпчиків об'єкту TConfig, за яким буде здійснено запит. Створення нового запису(рядка) здійснюється операцією встановлення значень запису, який відсутній.
Динамічна зміна структури таблиці залежить лише від типу пов'язаної віддаленої БД.
Модуль реалізує механізм підтримки багатомовних текстових змінних непрямо функціями ядра роботи із конфігураційним файлом: TBDS::dataSeek(), TBDS::dataGet() та TBDS::dataSet().
Права доступу до кінцевої БД визначаються правами, специфічними до типу віддаленої БД, та правами доступу користувача віддаленої станції до підсистеми БД загалом, за правами описаними у наступній таблиці:
Функція/операція/сервіс | Права відносно до "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:- |
Вимірювання продуктивності БД, точніше шлюзування, здійснюється тестом "БД" модуля "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.
Modules/DBGate/uk - GFDL | March 2024 | OpenSCADA 0.9.7 |