Модуль | Ім'я | Версія | Ліцензія | Джерело | Мови | Платформи | Тип | Автор | Опис |
---|---|---|---|---|---|---|---|---|---|
DBF | БД DBF
|
2.4 | GPL2 | bd_DBF.so | en,uk,ru,de | x86,x86_64,ARM | БД | Роман Савоченко | Модуль БД. Надає підтримку DBF файлів версії 3.0. |
Модуль надає до OpenSCADA підтримку файлів БД типу DBF. Модуль засновано на бібліотеці для роботи з DBF файлами ПЗ "Complex2" фірми НІП "ДIЯ". Модуль дозволяє виконувати дії над базами даних, таблицями та вмістом таблиць.
Contents
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".
Operations for 1000 records, seconds | K8-3000+,256M,120G | Nokia N800, SD 2G | Intel(R) Core(TM) i3 CPU 1.33GHz, 3G, HDD |
---|---|---|---|
Creating: | 1.07 | 37 | 0.382 |
Updating: | 1.6 | 33.8 | 0.368 |
Getting: | 1.0 | 34.32 | 0.362 |
Seeking: | - | - | 0.064 |
Seeking in preload: | - | - | 0.064 |
Deleting: | 0.95 | 37 | 0.371 |