|
UniSet
2.8.0
|
Открытые члены | |
| DBServer_MySQL (uniset::ObjectId id, const std::string &prefix) | |
| DBServer_MySQL (const std::string &prefix) | |
| std::shared_ptr< LogAgregator > | logAggregator () |
| std::shared_ptr< DebugStream > | log () |
Открытые члены унаследованные от uniset::DBServer | |
| DBServer (uniset::ObjectId id, const std::string &prefix="db") | |
| DBServer (const std::string &prefix="db") | |
| virtual uniset::SimpleInfo * | getInfo (const char *userparam="") override |
Открытые члены унаследованные от uniset::UniSetObject | |
| UniSetObject (const std::string &name, const std::string §ion) | |
| UniSetObject (uniset::ObjectId id) | |
| virtual CORBA::Boolean | exist () override |
| virtual uniset::ObjectId | getId () override |
| const uniset::ObjectId | getId () const |
| std::string | getName () const |
| virtual uniset::ObjectType | getType () override |
| const std::string | getStrType () |
| virtual uniset::SimpleInfo * | apiRequest (const char *query) override |
| virtual void | push (const uniset::TransportMessage &msg) override |
| поместить сообщение в очередь Подробнее... | |
| virtual void | pushMessage (const char *msg, ::CORBA::Long mtype, const ::uniset::Timespec &tm, const ::uniset::ProducerInfo &pi, ::CORBA::Long priority, ::CORBA::Long consumer) override |
| поместить текстовое сообщение в очередь Подробнее... | |
| virtual Poco::JSON::Object::Ptr | httpGet (const Poco::URI::QueryParameters &p) override |
| virtual Poco::JSON::Object::Ptr | httpHelp (const Poco::URI::QueryParameters &p) override |
| uniset::ObjectPtr | getRef () const |
| std::shared_ptr< UniSetObject > | get_ptr () |
| virtual timeout_t | askTimer (uniset::TimerId timerid, timeout_t timeMS, clock_t ticks=-1, uniset::Message::Priority p=uniset::Message::High) override |
Открытые члены унаследованные от uniset::LT_Object | |
| timeout_t | checkTimers (UniSetObject *obj) |
| timeout_t | getTimeInterval (uniset::TimerId timerid) const |
| timeout_t | getTimeLeft (uniset::TimerId timerid) const |
Открытые члены унаследованные от uniset::UHttp::IHttpRequest | |
| virtual Poco::JSON::Object::Ptr | httpRequest (const std::string &req, const Poco::URI::QueryParameters &p) |
Открытые статические члены | |
| static std::shared_ptr< DBServer_MySQL > | init_dbserver (int argc, const char *const *argv, const std::string &prefix="mysql") |
| static void | help_print (int argc, const char *const *argv) |
Открытые статические члены унаследованные от uniset::DBServer | |
| static std::string | help_print () |
Защищенные типы | |
| enum | Timers { PingTimer, ReconnectTimer, lastNumberOfTimer } |
| typedef std::unordered_map< int, std::string > | DBTableMap |
| typedef std::queue< std::string > | QueryBuffer |
Защищенные типы унаследованные от uniset::LT_Object | |
| typedef std::deque< TimerInfo > | TimersList |
Защищенные члены | |
| virtual void | initDBServer () override |
| virtual void | initDB (const std::unique_ptr< MySQLInterface > &db) |
| virtual void | initDBTableMap (DBTableMap &tblMap) |
| virtual void | timerInfo (const uniset::TimerMessage *tm) override |
| virtual void | sysCommand (const uniset::SystemMessage *sm) override |
| virtual void | sensorInfo (const uniset::SensorMessage *sm) override |
| virtual void | confirmInfo (const uniset::ConfirmMessage *cmsg) override |
| virtual void | onTextMessage (const uniset::TextMessage *msg) override |
| virtual std::string | getMonitInfo (const std::string ¶ms) override |
| bool | writeToBase (const std::string &query) |
| void | createTables (MySQLInterface *db) |
| std::string | tblName (int key) |
| void | flushBuffer () |
Защищенные члены унаследованные от uniset::DBServer | |
| virtual void | processingMessage (const uniset::VoidMessage *msg) override |
| virtual bool | activateObject () override |
| Активизация объекта (переопределяется для необходимых действий после активизации) Подробнее... | |
Защищенные члены унаследованные от uniset::UniSetObject | |
| VoidMessagePtr | receiveMessage () |
| VoidMessagePtr | waitMessage (timeout_t msec=UniSetTimer::WaitUpTime) |
| void | termWaiting () |
| size_t | countMessages () |
| size_t | getCountOfLostMessages () const |
| virtual bool | deactivateObject () |
| Деактивация объекта (переопределяется для необходимых действий при завершении работы) Подробнее... | |
| void | uterminate () |
| void | thread (bool create) |
| void | offThread () |
| void | onThread () |
| virtual void | callback () |
| void | setID (uniset::ObjectId id) |
| void | setThreadPriority (Poco::Thread::Priority p) |
| void | setMaxSizeOfMessageQueue (size_t s) |
| size_t | getMaxSizeOfMessageQueue () const |
| bool | isActive () const |
| void | setActive (bool set) |
| virtual Poco::JSON::Object::Ptr | httpGetMyInfo (Poco::JSON::Object::Ptr root) |
| Poco::JSON::Object::Ptr | request_conf (const std::string &req, const Poco::URI::QueryParameters &p) |
| Poco::JSON::Object::Ptr | request_conf_name (const std::string &name, const std::string &props) |
Защищенные члены унаследованные от uniset::LT_Object | |
| virtual std::string | getTimerName (int id) const |
| TimersList | getTimersList () const |
Защищенные данные | |
| std::unique_ptr< MySQLInterface > | db |
| int | PingTime = { 15000 } |
| int | ReconnectTime = { 30000 } |
| bool | connect_ok = { false } |
| bool | activate = { false } |
| QueryBuffer | qbuf |
| size_t | qbufSize = { 200 } |
| bool | lastRemove = { false } |
| uniset::uniset_rwmutex | mqbuf |
Защищенные данные унаследованные от uniset::DBServer | |
| std::shared_ptr< LogAgregator > | loga |
| std::shared_ptr< DebugStream > | dblog |
| std::shared_ptr< LogServer > | logserv |
| std::string | logserv_host = {""} |
| int | logserv_port = {0} |
| const std::string | prefix = { "db" } |
Защищенные данные унаследованные от uniset::UniSetObject | |
| std::shared_ptr< UInterface > | ui |
| std::string | myname |
| std::weak_ptr< UniSetManager > | mymngr |
Защищенные данные унаследованные от uniset::LT_Object | |
| timeout_t | sleepTime |
\page page_DBServer_MySQL (DBServer_MySQL) Реализация сервиса ведения БД на основе MySQL
- \ref sec_DBS_Comm
- \ref sec_DBS_Conf
- \ref sec_DBS_Tables
- \ref sec_DBS_Buffer
\section sec_DBS_Comm Общее описание работы DBServer_MySQL
Сервис предназначен для работы с БД MySQL. В его задачи входит
сохранение всех событий происходящих в системе в БД. К этим
событиям относятся изменение состояния датчиков, различные логи
работы процессов и т.п.
К моменту запуска, подразумевается, что необходимые таблицы уже
созданы, все необходимые настройки mysql сделаны.
\par
При работе с БД, сервис в основном пишет в БД. Обработка накопленных данных
ведётся уже другими программами (web-интерфейс).
\par
Для повышения надежности DBServer периодически ( DBServer_MySQL::PingTimer ) проверяет наличие связи с сервером БД.
В случае если связь пропала (или не была установлена при старте) DBServer пытается вновь каждые DBServer::ReconnectTimer
произвести соединение. При этом все запросы которые поступают для записи в БД, но не могут быть записаны складываются
в буфер (см. \ref sec_DBS_Buffer).
\warning При каждой попытке восстановить соединение DBServer заново читает конф. файл. Поэтому он может подхватить
новые настройки.
\todo Может не сохранять текст, если задан код... (для экономии в БД)
\section sec_DBS_Conf Настройка DBServer
Объект DBServer берёт настройки из конфигурационного файла из секции \b<LocalDBServer>.
Возможно задать следующие параметры:
- \b dbname - название БД
- \b dbnode - узел БД
- \b dbuser - пользователь
- \b dbpass - пароль для доступа к БД
- \b pingTime - период проверки связи с сервером MySQL
- \b reconnectTime - время повторной попытки соединения с БД
\section sec_DBS_Buffer Защита от потери данных
Для того, чтобы на момент отсутствия связи с БД данные по возможности не потерялись,
сделан "кольцевой" буфер. Размер которого можно регулировать параметром "--dbserver-buffer-size"
или параметром \b bufferSize=".." в конфигурационном файле секции "<LocalDBSErver...>".
Механизм построен на том, что если связь с mysql сервером отсутствует или пропала,
то сообщения помещаются в нулевой буфер, который "опустошается" как только она восстановится.
Если связь не восстановилась, а буфер достиг максимального заданного размера, то удаляются
более ранние сообщения. Эту логику можно сменить, если указать параметр "--dbserver-buffer-last-remove"
или \b bufferLastRemove="1", то теряться будут сообщения добавляемые в конец.
\section sec_DBS_Tables Таблицы MySQL
К основным таблицам относятся следующие:
|
protected |
|
static |
глобальная функция для вывода help-а
|
static |
глобальная функция для инициализации объекта
|
protected |
признак наличия соединения с сервером БД
1.8.15