Ìîäóëü: | MySQL |
Èìÿ: | ÁÄ MySQL |
Òèï: | ÁÄ |
Èñòî÷íèê: | bd_MySQL.so |
Âåðñèÿ: | 2.4.0 |
Àâòîð: | Ðîìàí Ñàâî÷åíêî |
Îïèñàíèå: | Ìîäóëü ÁÄ. Ïðåäîñòàâëÿåò ïîääåðæêó ÁÄ MySQL. |
Ëèöåíçèÿ: | GPL |
Ìîäóëü <MySQL> ïðåäîñòàâëÿåò â ñèñòåìó OpenSCADA ïîääåðæêó ÁÄ MySQL. ÁÄ MySQL ÿâëÿåòñÿ ìîùíîé ðåëÿöèîííîé è ìíîãîïëàòôîðìåííîé ÁÄ äîñòóïíîé ïî ñâîáîäíîé ëèöåíçèè. Ðàçðàáîò÷èêîì ÁÄ MySQL ÿâëÿåòñÿ ôèðìà MySQL AB http://www.mysql.com. Ìîäóëü îñíîâàí íà áèáëèîòåêå C API ïðîèçâîäèòåëÿ ÁÄ MySQL. Ìîäóëü ïîçâîëÿåò âûïîëíÿòü äåéñòâèÿ íàä áàçàìè äàííûõ, òàáëèöàìè è ñîäåðæèìûì òàáëèö.
Ïîääåðæèâàþòñÿ îïåðàöèè îòêðûòèÿ è çàêðûòèÿ ÁÄ ñ âîçìîæíîñòüþ ñîçäàíèÿ íîâîé ÁÄ ïðè îòêðûòèè è óäàëåíèÿ ñóùåñòâóþùåé ïðè çàêðûòèè.  òåðìèíàõ ïîäñèñòåìû «ÁÄ» ñèñòåìû 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"
Ïîääåðæèâàþòñÿ îïåðàöèè îòêðûòèÿ, çàêðûòèÿ òàáëèöû ñ âîçìîæíîñòüþ ñîçäàíèÿ íîâîé òàáëèöû ïðè îòêðûòèè è óäàëåíèÿ ñóùåñòâóþùåé ïðè çàêðûòèè, à òàêæå çàïðîñ ñòðóêòóðû òàáëèöû.
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) |
ÁÄ MySQL ñîäåðæèò ìîùíûé ìåõàíèçì ðàçäåëåíèÿ äîñòóïà, êîòîðûé çàêëþ÷àåòñÿ â âûáîðî÷íîì óêàçàíèè äîñòóïà ïîëüçîâàòåëÿ ÁÄ ê îòäåëüíûì SQL-êîìàíäàì.  òàáëèöå íèæå ïåðå÷èñëåíû îïåðàöèè íàä ÁÄ è òðåáóåìûé äîñòóï ê êîìàíäàì äëÿ ýòèõ îïåðàöèé.
Îïåðàöèÿ | SQL-êîìàíäû |
Ñîçäàíèå ÁÄ è òàáëèö | CREATE |
Óäàëåíèå ÁÄ è òàáëèö | DROP |
Äîáàâëåíèå çàïèñåé | INSERT |
Óäàëåíèå çàïèñåé | DELETE |
Ïîëó÷åíèå çíà÷åíèé çàïèñåé | SELECT |
Óñòàíîâêà çíà÷åíèé çàïèñåé | UPDATE |
Ìàíèïóëÿöèÿ ñòðóêòóðîé òàáëèöû | ALTER |
Êðàòêî ðàññìîòðèì ïðîöåäóðó ïåðâè÷íîé íàñòðîéêè ñåðâåðà MySQL ñ öåëüþ ïîäêëþ÷åíèÿ ê íåìó ñ ïîìîùüþ äàííîãî ìîäóëÿ:
$ service mysqld start
$ mysqladmin -u root password '123456'
Çàìåð ïðîèçâîäèòåëüíîñòè ÁÄ âûïîëíÿëñÿ òåñòîì «ÁÄ» ìîäóëÿ ñèñòåìíûõ òåñòîâ "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] |