UniSet  1.4.0
(DBServer_MySQL) Реализация сервиса ведения БД на основе MySQL

Общее описание работы DBServer_MySQL

Сервис предназначен для работы с БД MySQL. В его задачи входит сохранение всех событий происходищих в системе в БД. К этим событиям относятся изменение состояния датчиков, различные логи работы процессов и т.п. К моменту запуска, подразумевается, что неободимые таблицы уже созданы, все необходимые настройки mysql сделаны.

При работе с БД, сервис в основном пишет в БД. Обработка накопленных данных ведётся уже другими программами (web-интерфейс).
Для повышения надежности DBServer переодически ( DBServer_MySQL::PingTimer ) проверяет наличие связи с сервером БД. В случае если связь пропала (или не была установлена при старте) DBServer пытается вновь переодически ( DBServer::ReconnectTimer ) произвести соединение. При этом все запросы которые поступают для запии в БД, пишутся в лог-файл.
Предупреждения:
При каждой попытке восстановить соединение DBServer заново читает конф. файл. Поэтому он может подхватить новые настройки.
Необходимо сделать:
Может не сохранять текст, если задан код... (для экономии в БД)

Настройка DBServer

Объект DBServer берёт настройки из конфигурационного файла из секции <LocalDBServer>. Возможно задать следующие параметры:

Таблицы MySQL

К основным таблицам относятся следующие:

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;