OpenSCADA

Модулі/PostgreSQL

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

English • ‎mRussian • ‎Українська
Модуль Ім'я Версія Ліцензія Джерело Мови Платформи Тип Автор Опис
PostgreSQL БД PostgreSQL 3.1 GPL2 bd_PostgreSQL.so en,uk,ru,de x86,x86_64,ARM БД Роман Савоченко
  Максим Лисенко (2010-2011)
Модуль БД. Надає підтримку СУБД PostgreSQL.

Модуль надає до OpenSCADA підтримку СУБД PostgreSQL, яка є потужною реляційною та багатоплатформеною СУБД, доступною за вільною ліцензією та розроблюваною співтовариством PostgreSQL. Модуль засновано на бібліотеці API виробника СУБД PostgreSQL на мові "С" та дозволяє здійснювати дії над базами даних, таблицями та вмістом таблиць.

Contents

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

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

СУБД PostgreSQL адресується рядком наступного типу: {host};{hostaddr};{user};{pass};{db};{port}[;{connect_timeout}]. Де:

У випадку локального доступу до СУБД, у межах одного хосту, рядок адреси може мати наступний вигляд: ;;user;password;OpenSCADA;;10

У випадку віддаленого доступу до СУБД треба використовувати ім'я хосту та порт серверу СУБД, наприклад: server.nm.org;;user;password;OpenSCADA;;10

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

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

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

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

4 Доступ до БД

СУБД 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'"

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, 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 - GFDLNovember 2024OpenSCADA 1+r2996