Модуль БД. Надає підтримку *.dbf файлів, версії 3.0.
Ліцензія:
GPL
Вступ
Модуль призначено для надання системі OpenSCADA підтримки файлів БД типу *.dbf. Модуль засновано на бібліотеці для роботи з dbf файлами ПЗ "Complex2" фірми НІП "ДIЯ". Модуль дозволяє виконувати дії над базами даних, таблицями та вмістом таблиць.
1. Операції над БД
Підтримуються операції відкриття та закриття БД з можливістю створення нової БД при відкритті та видалення існуючої при закритті. В термінах підсистеми "БД" системи OpenSCADA відкриттям БД є її реєстрація для подальшого використання у системі.
Під БД, у випадку з dbf-файлами, мається на увазі тека, яка містить dbf-файли. Відтак, операції створення та видалення БД — створюють та видаляють теки, де таблиці (dbf-файли) зберігаються. У ролі адреси БД виступає повне ім'я теки з dbf-файлами. Доступ до БД визначається системними правами доступу до теки.
2. Операції над таблицею
Підтримуються операції відкриття та закриття таблиці з можливістю створення нової таблиці при відкритті та видалені існуючої при закритті.
Власне dbf-файл і є таблицею. Створення та видалення таблиці передбачає створення та видалення dbf-файлу. Ім'я таблиці представляє собою ім'я dbf-файлу у теці БД. Права доступу до таблиці визначаються правами доступу до dbf-файлу.
3. Операції над вмістом таблиці
сканування записів таблиці;
запит значень вказаних записів;
встановлення значень вказаних записів;
видалення записів.
API підсистеми "БД" передбачає доступ до вмісту таблиці за значенням ключового(их) поля(ів). Так, операція запиту запису передбачає попереднє встановлення ключових стовпчиків об'єкту TConfig, за яким і буде здійснено запит. Створення нового запиту(рядка) здійснюється операцією встановлення значень запису, який відсутній.
Модуль дозволяє динамічно змінювати структуру таблиць БД DBF. Так, у випадку невідповідності структури таблиці та структури запису що встановлюється структуру таблиці буде приведено до потрібної структури запису. У випадку запиту значень запису та невідповідності структур запису та таблиці буде отримано лише значення загальних елементів запису та таблиці. Модуль не відстежує послідовності розташування елементів у запису та структурі таблиці!
При доступі до значень таблиць використовується синхронізація шляхом захоплення ресурсу на доступ до таблиці. Це дозволяє запобігти руйнуванню даних у випадку багатопотокового доступу!
Типи елементів dbf-файлів наступним чином відповідають типам елементів системи OpenSCADA:
Типи полів системи OpenSCADA
Тип поля dbf-файлу
TFld::String
"С"
TFld::Integer, TFld::Real
"N"
TFld::Boolean
"L"
4. Продуктивність БД
Вимірювання продуктивності БД здійснювалося тестом "БД" модуля системних тестів "SystemTests" шляхом виконання операцій над записами структурою: <name char (20), descr char (50), val double (10.2), id int (7), stat bool, reqKey string, reqVal string>.