Модуль: | DBF |
Ім'я: | БД DBF |
Тип: | БД |
Джерело: | bd_DBF.so |
Версія: | 2.2 |
Автор: | Роман Савоченко |
Опис: | Модуль БД. Надає підтримку *.dbf файлів, версії 3.0. |
Ліцензія: | GPL |
Модуль призначено для надання системі OpenSCADA підтримки файлів БД типу *.dbf. Модуль засновано на бібліотеці для роботи з dbf файлами ПЗ "Complex2" фірми НІП "ДIЯ". Модуль дозволяє виконувати дії над базами даних, таблицями та вмістом таблиць.
Підтримуються операції відкриття та закриття БД з можливістю створення нової БД при відкритті та видалення існуючої при закритті. В термінах підсистеми "БД" системи OpenSCADA відкриттям БД є її реєстрація для подальшого використання у системі.
Під БД, у випадку з dbf-файлами, мається на увазі тека, яка містить dbf-файли. Відтак, операції створення та видалення БД — створюють та видаляють теки, де таблиці (dbf-файли) зберігаються. У ролі адреси БД виступає повне ім'я теки з dbf-файлами. Доступ до БД визначається системними правами доступу до теки.
Підтримуються операції відкриття та закриття таблиці з можливістю створення нової таблиці при відкритті та видалені існуючої при закритті.
Власне dbf-файл і є таблицею. Створення та видалення таблиці передбачає створення та видалення dbf-файлу. Ім'я таблиці представляє собою ім'я dbf-файлу у теці БД. Права доступу до таблиці визначаються правами доступу до dbf-файлу.
API підсистеми "БД" передбачає доступ до вмісту таблиці за значенням ключового(их) поля(ів). Так, операція запиту запису передбачає попереднє встановлення ключових стовпчиків об'єкту TConfig, за яким і буде здійснено запит. Створення нового запиту(рядка) здійснюється операцією встановлення значень запису, який відсутній.
Модуль дозволяє динамічно змінювати структуру таблиць БД DBF. Так, у випадку невідповідності структури таблиці та структури запису що встановлюється структуру таблиці буде приведено до потрібної структури запису. У випадку запиту значень запису та невідповідності структур запису та таблиці буде отримано лише значення загальних елементів запису та таблиці. Модуль не відстежує послідовності розташування елементів у запису та структурі таблиці!
При доступі до значень таблиць використовується синхронізація шляхом захоплення ресурсу на доступ до таблиці. Це дозволяє запобігти руйнуванню даних у випадку багатопотокового доступу!
Типи елементів dbf-файлів наступним чином відповідають типам елементів системи OpenSCADA:
Типи полів системи OpenSCADA | Тип поля dbf-файлу |
TFld::String | "С" |
TFld::Integer, TFld::Real | "N" |
TFld::Boolean | "L" |
Вимірювання продуктивності БД здійснювалося тестом "БД" модуля системних тестів "SystemTests" шляхом виконання операцій над записами структурою: <name char (20), descr char (50), val double (10.2), id int (7), stat bool, reqKey string, reqVal string>.
Operation | K8-3000+,256M,120G | Nokia N800, SD 2G | Intel(R) Core(TM) i3 CPU 1.33GHz, 3G, HDD |
Creation of the 1000 records (sec.): | 1.07 | 37 | 0.382 |
Updating of the 1000 records (sec.): | 1.6 | 33.8 | 0.368 |
Getting of the 1000 records (sec.): | 1.0 | 34.32 | 0.362 |
Seeking of the 1000 records (sec.): | - | - | 0.064 |
Seeking in preload of the 1000 records (sec.): | - | - | 0.064 |
Deleting of the 1000 record (sec.): | 0.95 | 37 | 0.371 |