Ìîäóëü: | MySQL |
Èìÿ: | ÁÄ MySQL |
Òèï: | ÁÄ |
Èñòî÷íèê: | bd_MySQL.so |
Âåðñèÿ: | 2.6 |
Àâòîð: | Ðîìàí Ñàâî÷åíêî |
Îïèñàíèå: | Ìîäóëü ÁÄ. Ïðåäîñòàâëÿåò ïîääåðæêó ÁÄ MySQL. |
Ëèöåíçèÿ: | GPL |
Ìîäóëü <MySQL> ïðåäîñòàâëÿåò â ñèñòåìó OpenSCADA ïîääåðæêó ÁÄ MySQL. ÁÄ MySQL ÿâëÿåòñÿ ìîùíîé ðåëÿöèîííîé è ìíîãîïëàòôîðìåííîé ÁÄ äîñòóïíîé ïî ñâîáîäíîé ëèöåíçèè. Íàñòîÿùèì ðàçðàáîò÷èêîì ÁÄ MySQL ÿâëÿåòñÿ
Êîðïîðàöèÿ Oracle. Ïîëíîñòüþ ñâîáîäíîé ðåàëèçàöèåé MySQL ÿâëÿåòñÿ ïðîåêò
MariaDB. Ìîäóëü îñíîâàí íà áèáëèîòåêå 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>.
Action source page doesn't exist yet(/Home Page En / Doc / My SQL?)