Сервис предназначен для работы с БД MySQL. В его задачи входит сохранение всех событий происходищих в системе в БД. К этим событиям относятся изменение состояния датчиков, различные логи работы процессов и т.п. К моменту запуска, подразумевается, что неободимые таблицы уже созданы, все необходимые настройки mysql сделаны.
- При работе с БД, сервис в основном пишет в БД. Обработка накопленных данных ведётся уже другими программами (web-интерфейс).
- Для повышения надежности DBServer переодически ( DBServer_MySQL::PingTimer ) проверяет наличие связи с сервером БД. В случае если связь пропала (или не была установлена при старте) DBServer пытается вновь переодически ( DBServer::ReconnectTimer ) произвести соединение. При этом все запросы которые поступают для запии в БД, пишутся в лог-файл.
- Предупреждения:
- При каждой попытке восстановить соединение DBServer заново читает конф. файл. Поэтому он может подхватить новые настройки.
- Необходимо сделать:
- Может не сохранять текст, если задан код... (для экономии в БД)
Объект
DBServer берёт настройки из конфигурационного файла из секции
<LocalDBServer>. Возможно задать следующие параметры:
- dbname - название БД
- dbnode - узел БД
- dbuser - пользователь
- dbpass - пароль для доступа к БД
- pingTime - период проверки связи с сервером MySQL
- reconnectTime - время повторной попытки соединения с БД
К основным таблицам относятся следующие:
DROP TABLE IF EXISTS ObjectsMap;
CREATE TABLE ObjectsMap (
name varchar(80) NOT NULL default '',
rep_name varchar(80) default NULL,
id int(4) NOT NULL default '0',
msg int(1) default 0,
PRIMARY KEY (id),
KEY rep_name (rep_name),
KEY msg (msg)
) TYPE=MyISAM;
DROP TABLE IF EXISTS AnalogSensors;
CREATE TABLE AnalogSensors (
num int(11) NOT NULL auto_increment,
node int(3) default NULL,
id int(4) default NULL,
date date NOT NULL default '0000-00-00',
time time NOT NULL default '00:00:00',
time_usec int(3) unsigned default '0',
value int(6) default NULL,
PRIMARY KEY (num),
KEY date (date,time,time_usec),
KEY node (node,id)
) TYPE=MyISAM;
--
-- Table structure for table `DigitalSensors`
--
DROP TABLE IF EXISTS DigitalSensors;
CREATE TABLE DigitalSensors (
num int(11) NOT NULL auto_increment,
node int(3) default NULL,
id int(4) default NULL,
date date NOT NULL default '0000-00-00',
time time NOT NULL default '00:00:00',
time_usec int(3) unsigned default '0',
state char(1) default NULL,
confirm time NOT NULL default '00:00:00',
PRIMARY KEY (num),
KEY date (date,time,time_usec),
KEY node (node,id),
KEY confirm(confirm)
) TYPE=MyISAM;
DROP TABLE IF EXISTS SensorsThreshold;
CREATE TABLE SensorsThreshold (
sid int(11) NOT NULL default '0',
alarm int(8) NOT NULL default '0',
warning int(8) NOT NULL default '0'
) TYPE=MyISAM;