|
UniSet
2.6.0
|
The DBServer_PostgreSQL class Реализация работы с PostgreSQL. Подробнее...
Открытые члены | |
| DBServer_PostgreSQL (uniset::ObjectId id, const std::string &prefix) | |
| std::shared_ptr< LogAgregator > | logAggregator () |
| std::shared_ptr< DebugStream > | log () |
Открытые статические члены | |
| static std::shared_ptr < DBServer_PostgreSQL > | init_dbserver (int argc, const char *const *argv, const std::string &prefix="pgsql") |
| static void | help_print (int argc, const char *const *argv) |
Защищенные типы | |
| enum | Timers { PingTimer, ReconnectTimer, FlushInsertBuffer, lastNumberOfTimer } |
|
typedef std::unordered_map < int, std::string > | DBTableMap |
| typedef std::queue< std::string > | QueryBuffer |
|
typedef std::vector < PostgreSQLInterface::Record > | InsertBuffer |
Защищенные члены | |
| virtual void | initDBServer () override |
| virtual void | initDB (std::shared_ptr< PostgreSQLInterface > &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 | sigterm (int signo) override |
| bool | writeToBase (const string &query) |
| void | createTables (std::shared_ptr< PostgreSQLInterface > &db) |
| std::string | tblName (int key) |
| void | flushBuffer () |
| void | flushInsertBuffer () |
Защищенные данные | |
|
std::shared_ptr < PostgreSQLInterface > | db |
| int | PingTime = { 15000 } |
| int | ReconnectTime |
| bool | connect_ok |
| bool | activate |
| QueryBuffer | qbuf |
| size_t | qbufSize |
| bool | lastRemove = { false } |
| std::mutex | mqbuf |
| const std::list< std::string > | tblcols = { "date", "time", "time_usec", "sensor_id", "value", "node" } |
| InsertBuffer | ibuf |
| size_t | ibufSize = { 0 } |
| size_t | ibufMaxSize = { 2000 } |
| timeout_t | ibufSyncTimeout = { 15000 } |
| float | ibufOverflowCleanFactor = { 0.5 } |
The DBServer_PostgreSQL class Реализация работы с PostgreSQL.
Т.к. основная работа сервера - это частая запись данных, то сделана следующая оптимизация: Создаётся insert-буфер настраиваемого размера (ibufMaxSize). Как только буфер заполняется, он пишется в БД одним "оптимизированным" запросом. Помимо этого буфер скидывается, если прошло ibufSyncTimeout мсек или если пришёл запрос на UPDATE данных.
В случае если буфер переполняется (например нет связи с БД), то он чистится. При этом сколько записей удалять определяется коэффициентом ibufOverflowCleanFactor={0...1}. А также флаг lastRemove определяет удалять с конца или начала очереди.
enum uniset::DBServer_PostgreSQL::Timers [protected] |
| void DBServer_PostgreSQL::help_print | ( | int | argc, |
| const char *const * | argv | ||
| ) | [static] |
глобальная функция для вывода help-а
| std::shared_ptr< DBServer_PostgreSQL > DBServer_PostgreSQL::init_dbserver | ( | int | argc, |
| const char *const * | argv, | ||
| const std::string & | prefix = "pgsql" |
||
| ) | [static] |
глобальная функция для инициализации объекта
| void DBServer_PostgreSQL::sigterm | ( | int | signo | ) | [override, protected, virtual] |
Функция вызываемая при приходе сигнала завершения или прерывания процесса. Переопределив ее можно выполнять специфичные для процесса действия по обработке сигнала. Например переход в безопасное состояние.
Переопределяет метод предка uniset::UniSetObject.
bool uniset::DBServer_PostgreSQL::activate [protected] |
признак наличия соеднинения с сервером БД
1.7.6.1