OpenSCADAWiki: Doc/ MySQL ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 
This is an old revision of Doc/MySQL from 2016-07-03 19:20:54..


Ìîäóëü ïîäñèñòåìû “ÁÄ” <MySQL>


Ìîäóëü:MySQL
Èìÿ:ÁÄ MySQL
Òèï:ÁÄ
Èñòî÷íèê:bd_MySQL.so
Âåðñèÿ:2.4.0
Àâòîð:Ðîìàí Ñàâî÷åíêî
Îïèñàíèå:Ìîäóëü ÁÄ. Ïðåäîñòàâëÿåò ïîääåðæêó ÁÄ MySQL.
Ëèöåíçèÿ:GPL

Contents

Ââåäåíèå

Ìîäóëü <MySQL> ïðåäîñòàâëÿåò â ñèñòåìó OpenSCADA ïîääåðæêó ÁÄ MySQL. ÁÄ MySQL ÿâëÿåòñÿ ìîùíîé ðåëÿöèîííîé è ìíîãîïëàòôîðìåííîé ÁÄ äîñòóïíîé ïî ñâîáîäíîé ëèöåíçèè. Ðàçðàáîò÷èêîì ÁÄ MySQL ÿâëÿåòñÿ ôèðìà MySQL AB http://www.mysql.com. Ìîäóëü îñíîâàí íà áèáëèîòåêå C API ïðîèçâîäèòåëÿ ÁÄ MySQL. Ìîäóëü ïîçâîëÿåò âûïîëíÿòü äåéñòâèÿ íàä áàçàìè äàííûõ, òàáëèöàìè è ñîäåðæèìûì òàáëèö.

1. Îïåðàöèè íàä ÁÄ

Ïîääåðæèâàþòñÿ îïåðàöèè îòêðûòèÿ è çàêðûòèÿ ÁÄ ñ âîçìîæíîñòüþ ñîçäàíèÿ íîâîé ÁÄ ïðè îòêðûòèè è óäàëåíèÿ ñóùåñòâóþùåé ïðè çàêðûòèè.  òåðìèíàõ ïîäñèñòåìû «ÁÄ» ñèñòåìû OpenSCADA îòêðûòèåì ÁÄ ÿâëÿåòñÿ å¸ ðåãèñòðàöèÿ äëÿ ïîñëåäóþùåãî èñïîëüçîâàíèÿ â ñèñòåìå. Òàêæå ïîääåðæèâàåòñÿ îïåðàöèÿ çàïðîñà ñïèñêà òàáëèö â ÁÄ.


ÁÄ MySQL àäðåñóåòñÿ ñòðîêîé ñëåäóþùåãî òèïà: "{host};{user};{pass};{db};{port}[;{u_sock}[;{charset-collation}[;{tms}]]]". Ãäå:


 ñëó÷àå ëîêàëüíîãî äîñòóïà ê ÁÄ â ïðåäåëàõ îäíîãî õîñòà íóæíî èñïîëüçîâàòü UNIX ñîêåò. Íàïðèìåð: ";roman;123456;OpenSCADA;;/var/lib/mysql/mysql.sock;utf8-utf8_general_ci-MyISAM;5,2,2"


 ñëó÷àå óäàë¸ííîãî äîñòóïà ê ÁÄ íóæíî èñïîëüçîâàòü èìÿ õîñòà è ïîðò ñåðâåðà ÁÄ. Íàïðèìåð: "server.nm.org;roman;123456;OpenSCADA;3306"

2. Îïåðàöèè íàä òàáëèöåé

Ïîääåðæèâàþòñÿ îïåðàöèè îòêðûòèÿ, çàêðûòèÿ òàáëèöû ñ âîçìîæíîñòüþ ñîçäàíèÿ íîâîé òàáëèöû ïðè îòêðûòèè è óäàëåíèÿ ñóùåñòâóþùåé ïðè çàêðûòèè, à òàêæå çàïðîñ ñòðóêòóðû òàáëèöû.

3. Îïåðàöèè íàä ñîäåðæèìûì òàáëèöû


API ïîäñèñòåìû “ÁÄ” ïðåäïîëàãàåò äîñòóï ê ñîäåðæèìîìó òàáëèöû ïî çíà÷åíèþ êëþ÷åâîãî(ûõ) ïîëÿ(åé). Òàê, îïåðàöèÿ çàïðîñà çàïèñè ïîäðàçóìåâàåò ïðåäâàðèòåëüíóþ óñòàíîâêó êëþ÷åâûõ êîëîíîê îáúåêòà TConfig, ïî êîòîðûì áóäåò âûïîëíåí çàïðîñ. Ñîçäàíèå íîâîé çàïèñè(ñòðîêè) ïðîèçâîäèòñÿ îïåðàöèåé óñòàíîâêè çíà÷åíèé çàïèñè, êîòîðàÿ îòñóòñòâóåò.


Ìîäóëü ïîçâîëÿåò äèíàìè÷åñêè èçìåíÿòü ñòðóêòóðó òàáëèö ÁÄ MySQL. Òàê, â ñëó÷àå íåñîîòâåòñòâèÿ ñòðóêòóðû òàáëèöû è ñòðóêòóðû óñòàíàâëèâàåìîé çàïèñè, ñòðóêòóðà òàáëèöû áóäåò ïðèâåäåíà ê òðåáóåìîé ñòðóêòóðå çàïèñè.  ñëó÷àå çàïðîñà çíà÷åíèé çàïèñè è íå ñîîòâåòñòâèÿ ñòðóêòóð çàïèñè è òàáëèöû, áóäóò ïîëó÷åíû òîëüêî çíà÷åíèÿ îáùèõ ýëåìåíòîâ çàïèñè è òàáëèöû. Ìîäóëü íå îòñëåæèâàåò ïîðÿäîê ðàñïîëîæåíèÿ ýëåìåíòîâ â çàïèñè è ñòðóêòóðå òàáëèöû.


Ìîäóëåì ðåàëèçóåòñÿ ìåõàíèçì ïîääåðæêè ìíîãîÿçûêîâûõ òåêñòîâûõ ïåðåìåííûõ. Äëÿ ïîëåé ñ ìíîãîÿçûêîâîé òåêñòîâîé ïåðåìåííîé ñîçäàþòñÿ êîëîíêè îòäåëüíûõ ÿçûêîâ â ôîðìàòå <lang>#<FldID> (en#NAME). Ïðè ýòîì áàçîâàÿ êîëîíêà ñîäåðæèò çíà÷åíèå äëÿ áàçîâîãî ÿçûêà. Êîëîíêè îòäåëüíûõ ÿçûêîâ ñîçäàþòñÿ ïî íàäîáíîñòè, â ìîìåíò ñîõðàíåíèÿ â ÁÄ è ïðè èñïîëíåíèè OpenSCADA â ñîîòâåòñòâóþùåé ëîêàëè.  ñëó÷àå îòñóòñòâèÿ çíà÷åíèÿ äëÿ êîíêðåòíîãî ÿçûêà áóäåò èñïîëüçîâàòüñÿ çíà÷åíèé äëÿ áàçîâîãî ÿçûêà.


Òèïû ýëåìåíòîâ ÁÄ MySQL ñëåäóþùèì îáðàçîì ñîîòâåòñòâóþò òèïàì ýëåìåíòîâ ñèñòåìû OpenSCADA:

Òèïû ïîëåé ñèñòåìû OpenSCADAÒèïû ïîëåé ÁÄ MySQL
TFld::String char(n), text, mediumtext
TFld::Integer int(n), DATETIME [äëÿ ïîëåé ñ ôëàãîì TFld::DateTimeDec]
TFld::Real double(n,m)
TFld::Boolean tinyint(1)

4. Äîñòóï ê ÁÄ

ÁÄ MySQL ñîäåðæèò ìîùíûé ìåõàíèçì ðàçäåëåíèÿ äîñòóïà, êîòîðûé çàêëþ÷àåòñÿ â âûáîðî÷íîì óêàçàíèè äîñòóïà ïîëüçîâàòåëÿ ÁÄ ê îòäåëüíûì SQL-êîìàíäàì.  òàáëèöå íèæå ïåðå÷èñëåíû îïåðàöèè íàä ÁÄ è òðåáóåìûé äîñòóï ê êîìàíäàì äëÿ ýòèõ îïåðàöèé.

ÎïåðàöèÿSQL-êîìàíäû
Ñîçäàíèå ÁÄ è òàáëèöCREATE
Óäàëåíèå ÁÄ è òàáëèöDROP
Äîáàâëåíèå çàïèñåéINSERT
Óäàëåíèå çàïèñåéDELETE
Ïîëó÷åíèå çíà÷åíèé çàïèñåéSELECT
Óñòàíîâêà çíà÷åíèé çàïèñåéUPDATE
Ìàíèïóëÿöèÿ ñòðóêòóðîé òàáëèöûALTER

Êðàòêî ðàññìîòðèì ïðîöåäóðó ïåðâè÷íîé íàñòðîéêè ñåðâåðà MySQL ñ öåëüþ ïîäêëþ÷åíèÿ ê íåìó ñ ïîìîùüþ äàííîãî ìîäóëÿ:

5. Ïðîèçâîäèòåëüíîñòü ÁÄ

Çàìåð ïðîèçâîäèòåëüíîñòè ÁÄ âûïîëíÿëñÿ òåñòîì «ÁÄ» ìîäóëÿ ñèñòåìíûõ òåñòîâ "SystemTests" ïóò¸ì âûïîëíåíèÿ îïåðàöèé íàä çàïèñÿìè ñòðóêòóðîé: <name char (20), descr char (50), val double (10.2), id int (7), stat bool, reqKey string, reqVal string>.

Îïåðàöèÿ Nokia N800, MySQL 5.0.89 MyISAM WLAN AMD Turion L625 1.6, 2G, MySQL
[5.0.51 MyISAM 100Base-TX; WLAN];
[5.1.62 MyISAM local; 100Base-TX];
[5.5.41 MyISAM local; InnoDB; MyISAM 100Base-TX; InnoDB]
Intel(R) Core(TM) i3 CPU 1.33GHz, 3G, HDD [5.5.49 MyISAM 100Base-TX; InnoDB]
Ñîçäàíèå 1000 çàïèñåé (ñåê): 4.53 [1.1; 3.6]; [0.7; 1.00]; [0.57; 0.73; 0.97; 1.03]
Îáíîâëåíèå 1000 çàïèñåé (ñåê): 4.2 [1.12; 3.8]; [0.7; 1.07]; [0.6; 0.66; 1.03; 1.1]
Ïîëó÷åíèå 1000 çàïèñåé (ñåê): 2.88 [0.8; 2.1]; [0.38; 0.69]; [0.38; 0.4; 0.72; 0.78]
Ñêàíèðîâàíèå 1000 çàïèñåé (ñåê.): - -
Óäàëåíèå 1000 çàïèñåé (ñåê): 1.47 [0.43; 1.7]; [0.27; 0.42]; [0.23; 0.2; 0.44; 0.39]

Ññûëêè

Referring pages: Doc
Doc/OpenSCADA060
Function
Works/Tests/DB


 
There are no files on this page.[Display files/form]
There is no comment on this page. [Display comments/form]