Модуль | Ім'я | Версія | Ліцензія | Джерело | Мови | Платформи | Тип | Автор | Опис |
---|---|---|---|---|---|---|---|---|---|
PostgreSQL | БД PostgreSQL
|
3.1 | GPL2 | bd_PostgreSQL.so | en,uk,ru,de | x86,x86_64,ARM | БД | Роман Савоченко Максим Лисенко (2010-2011) |
Модуль БД. Надає підтримку СУБД PostgreSQL. |
Модуль надає до OpenSCADA підтримку СУБД PostgreSQL, яка є потужною реляційною та багатоплатформеною СУБД, доступною за вільною ліцензією та розроблюваною співтовариством PostgreSQL. Модуль засновано на бібліотеці API виробника СУБД PostgreSQL на мові "С" та дозволяє здійснювати дії над базами даних, таблицями та вмістом таблиць.
Підтримуються операції відкриття та закриття БД, з можливістю створення нової БД при відкритті та видалення існуючої при закритті. У термінах підсистеми "БД" OpenSCADA, відкриттям БД є її реєстрація для наступного використання програмою. Також, підтримується операція запиту переліку таблиць у БД.
СУБД PostgreSQL адресується рядком наступного типу: {host};{hostaddr};{user};{pass};{db};{port}[;{connect_timeout}]. Де:
У випадку локального доступу до СУБД, у межах одного хосту, рядок адреси може мати наступний вигляд: ;;user;password;OpenSCADA;;10
У випадку віддаленого доступу до СУБД треба використовувати ім'я хосту та порт серверу СУБД, наприклад: server.nm.org;;user;password;OpenSCADA;;10
Підтримуються операції відкриття, закриття таблиці, з можливістю створення нової таблиці при відкритті та видалення існуючої при закриті, а також запит структури таблиці.
API підсистеми "БД" передбачає доступ до вмісту таблиці за значенням ключового(их) полів. Так, операція запиту запису передбачає попереднє встановлення ключових стовпчиків об'єкту TConfig, за яким буде здійснено запит. Створення нового запису(рядка) здійснюється операцією встановлення значень запису, який відсутній.
Модуль дозволяє динамічно міняти структуру таблиць БД PostgreSQL. Так, у випадку невідповідності структури таблиці та структури запису що встановлюється, структуру таблиці буде приведено до потрібної структури запису. У випадку запиту значень запису та невідповідності структур запису і таблиці, буде отримано тільки значення загальних елементів запису та таблиці. Модуль не відстежує послідовності розташування елементів запису та структури таблиці!
Модулем реалізується механізм підтримки багатомовних текстових змінних. Для полів із багатомовною текстовою змінною створюються стовпчики окремих мов у форматі "{lang}#{FldID}" (en#NAME). При цьому, базовий стовпчик містить значення для базової мови. Стовпчики окремих мов створюються за потреби, у момент збереження до БД та при виконанні OpenSCADA у відповідній локалі. У випадку відсутності значень для конкретної мови буде використано значення для базової мови.
Типи елементів БД PostgreSQL наступним чином відповідають типам елементів OpenSCADA:
Типи полів OpenSCADA | Типи полів СУБД PostgreSQL |
---|---|
TFld::String | character(n), character varying(n), text |
TFld::Integer | integer, bigint, timestamp with time zone [для полів з ознакою TFld::DateTimeDec] |
TFld::Real | double precision |
TFld::Boolean | smallint |
СУБД PostgreSQL містить механізм розподілу доступу, який полягає у вказані привілеїв користувача БД. У таблиці нижче перелічено потрібні привілеї для повноцінної роботи.
Операція | Привілей |
---|---|
Створення БД | CREATEDB |
Сотворення підключення | LOGIN |
Для доступу до БД права треба дозволяти безпосередньо для вказаної БД, а у випадку створення БД треба також дозволити доступ до системної БД "template1", яка використовується для підключення на стадії створення нової БД.
Коротко розглянемо процедуру первинного налаштування серверу PostgreSQL, з метою підключення до нього за допомогою цього модуля:
# Ініціалізація БД $ service postgresql initdb # Запуск БД $ service postgresql start
local all all trust host all all 127.0.0.1/32 trust
$ service postgresql restart
$ psql -U postgres -d template1 -c "ALTER USER postgres PASSWORD '123456'"
Вимірювання продуктивності СУБД здійснювалося тестом "БД" модуля тестів "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, PostgreSQL 8.3 (remote) | AMD Turion L625 1.6, 2G, PostgreSQL 9.1 [local; 100Base-TX] | Intel(R) Core(TM) i3 CPU 1.33GHz, 3G, HDD [100Base-TX] |
---|---|---|---|
Creating: | 5 | 1.08; 1.6; 3.8 | 2.07 |
Updating: | 4.8 | 1.12; 1.6; 3.9 | 2.35 |
Getting: | 2.96 | 0.64; 1.2; 2.1 | 1.26 |
Seeking: | - | - | 7.9 |
Seeking in preload: | - | - | 0.038 |
Deleting: | 1.73 | 0.39; 0.6; 1.6 | 0.94 |
Modules/PostgreSQL/uk - GFDL | May 2024 | OpenSCADA 0.9.7 |