Научная статья на тему 'ВВЕДЕНИЕ В СУБД ДЛЯ ХРАНЕНИЯ ВРЕМЕННЫХ РЯДОВ НА ПРИМЕРЕ INFLUXDB'

ВВЕДЕНИЕ В СУБД ДЛЯ ХРАНЕНИЯ ВРЕМЕННЫХ РЯДОВ НА ПРИМЕРЕ INFLUXDB Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
106
9
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ВРЕМЕННЫЕ РЯДЫ / СУБД / INFLUXDB / ELASTICSEARCH / ПРОЕКТИРОВАНИЕ СИСТЕМЫ / TIME SERIES / DATABASES / SYSTEM ARCHITECTURE

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Боев В.А.

В статье рассмотрены СУБД для хранения временных рядов. Описано их суть, актуальность использования, предназначение и примеры использования. Отдельно рассмотрена InfluxDB, произведен анализ ее сильных и слабых сторон. Также произведено сравнение с ElasticSearch. В итоге сделан вывод о важности выбора использования СУБД при проектировании системы.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

INTRODUCTION IN TIME SERIES DATABASES USING INFLUXDB AS AN EXAMPLE

The article describes concept of time series databases. Author have looked at its application, relevance and usage example. Also, author showed actual TSDB system - InfluxDB, its pros and cons, learned its comparison with ElasticSearch. In the end there is a conclusion about usage such systems in applications.

Текст научной работы на тему «ВВЕДЕНИЕ В СУБД ДЛЯ ХРАНЕНИЯ ВРЕМЕННЫХ РЯДОВ НА ПРИМЕРЕ INFLUXDB»

УДК 004.652.5

Боев В.А. студент магистрант БГТУ им. В. Г. Шухова Россия, г. Белгород ВВЕДЕНИЕ В СУБД ДЛЯ ХРАНЕНИЯ ВРЕМЕННЫХ РЯДОВ НА

ПРИМЕРЕ INFLUXDB Аннотация: в статье рассмотрены СУБД для хранения временных рядов. Описано их суть, актуальность использования, предназначение и примеры использования. Отдельно рассмотрена InfluxDB, произведен анализ ее сильных и слабых сторон. Также произведено сравнение с ElasticSearch. В итоге сделан вывод о важности выбора использования СУБД при проектировании системы.

Ключевые слова: временные ряды, СУБД, InfluxDB, ElasticSearch, проектирование системы.

Boev V.A. magistracy student BSTU named after V. G. Shukhov Belgorod, Russia INTRODUCTION IN TIME SERIES DATABASES USING INFLUXDB AS AN EXAMPLE Abstract: the article describes concept of time series databases. Author have looked at its application, relevance and usage example. Also, author showed actual TSDB system — InfluxDB, its pros and cons, learned its comparison with ElasticSearch. In the end there is a conclusion about usage such systems in applications.

Keywords: time series, databases, InfluxDB, ElasticSearch, system architecture.

СУБД для хранения временных рядов (Time Series Databases, TSDB) — это система управления базами данных, которая предназначена в первую очередь для хранения данных, основанных на времени. В общем случае эти данные могут быть представлены в виде массивов, индексированных по временной метке (timestamp) или по временному периоду. Временной ряд — это измерение или событие, которое может быть отслежено, зафиксировано на протяжении некоторого времени.

Такие СУБД могут применяться для систем метрик, приложений по наблюдению за производительностью, сетевых данных, данных с сенсоров, событий, кликов, движений на рынке ценных бумаг и других аналитических данных. Главное отличие от остальных СУБД — каждый запрос к БД так или иначе зависит от временного параметра.

Отсюда вытекают множественные превосходства данного вида СУБД: • рассчитаны под большое количество записи данных небольшого

размера;

• специальные операции для выборки по временному параметру;

• эффективное использование дискового пространства.

В настоящее время рынок предоставляет большое количество таких TSDB: InfluxDB, Graphite, Druid, Prometheus и другие. Есть как и проприетарные системы, так и решения с открытым исходным кодом.

Для примера была выбрана InfluxDB, потому что эта система одна из наиболее быстро развивающихся среди свободно распространяющихся продуктов в данной категории. Также, InfluxDB занял первую строчку в исследовании портала db-engines [1]. Исследование проводилось по множественным критериям: количество упоминаний в поисковых системах, общий интерес публики, частота технических обсуждений в сообществе, количество вакансий, требующих знание системы.

Итак, данные в InfluxDB представлены в виде временных рядов, которые содержат измеряемые значения. Ряд представляет из себя набор точек "points", которое отражает значение в определенный момент времени. Points структура имеет поля:

• time — временной штамп (timestamp)

• measurement — строковое обозначение ряда

• fields — непосредственное значение в формате «ключ-значение»

• tags — мета-данные о значении, формат тоже — «ключ-значение».

Проводя аналогию, можно сказать, что такие данные представляются в

виде традиционной SQL-таблицы, где time выступает первичным ключом, tags и fields — столбцы, а measurement — название таблицы. Только в случае InfluxDB, количество таких «таблиц» может исчисляться миллионами. Также стоит заметить, что теги индексируются, а поля — нет, то есть все выборки желательно производить именно по тегам.

Формат такой структуры в строковом формате:

<measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,..] [unix-nano-timestamp]

Пример добавления данных в командной строке:

> INSERT positions,device=bus_23 latitude=80,longitude=31

При отсутствии последнего параметра, InfluxDB подставляет текущее время машины.

Получение данных и их вывод выглядит следующим образом:

> SELECT "device", "latitude", "longitude" FROM "positions"

name: cpu

time device latitude longitude

2018-04-21T19:28:07.580664347Z bus_23 80 31 2018-04-21T20:28:07.580664347Z bus_23 82 30 Значения поля fields могут иметь разные типы: string, float, integer, boolean, что удобно для организации различной структуры предметной области.

InfluxDB, как и любой другой инструмент, имеет свои минусы и плюсы [2]:

• Упрощенная система разрешения конфликтов дает прирост в производительности на запись данных. Как ограничение в этой СУБД нельзя хранить дублированные данные, и в некоторых случаях возможна перезапись данных.

• Удаление данных, изменение данных должно быть редким ради прироста в скорости запросов, поэтому функциональность, связанная с этими методами, урезана.

• СУБД спроектирована с расчетом на то, что данные будут упорядочены по времени. Поэтому ситуация, когда у данных хаотичные временные метки, будет не так производительна в InfluxDB.

• InfluxDB вводит принцип — нет самой важной точки. Это значит, что СУБД хорошо управляется с агрегацией данных в больших количествах, но когда дело касается индивидуальных элементов, то функционал может оказаться скудным. Например, у точек даже нет первичных ключей.

• Данные не имеют схемы. Это черта всех NoSQL СУБД. С одной стороны, это позволяет быть гибким в вопросе реализации хранения, а с другой — отнимает полезные возможности реляционных СУБД, такие, как join по нескольким таблицам.

При сравнении с ElasticSearch — поисковой системой, работающей в реальном времени и способной использоваться в качестве нереляционной СУБД [3], InfluxDB показал хорошие результаты. По скорости обработки данных InfluxDB продемонстрировал феноменальный результат — 1400000 записанных единиц данных в секунду против 18000 у ElasticSearch. Также нагрузка на процессор была в несколько раз меньше (500% против 1200%), а записанные данные на диске заняли в десять раз меньше (145 Мб вместо 1.9 Гб). Однако, скорость чтения оказался ниже (820 операций в секунду вместо 1000) [4].

Подводя вывод, можно сказать, что СУБД для хранения временных рядов в целом и InfluxDB в частности — это сильный инструмент, который важно применять по назначению. Чтобы не совершить ошибку, заложив неправильное решение в архитектуру, нужно внимательно рассмотреть возможные случаи использовании системы, рассчитать потенциальную нагрузку, и только тогда принимать решение о целесообразности использования узкоспециализированных инструментов.

Использованные источники:

1. DB-Engines - Knowledge Base of Relational and NoSQL Database Management Systems [Электронный ресурс] URL:https://db-engines.com/en/rankmg/time+series+dbms (дата обращения 01.05.2018)

2. InfluxDB documentation site [Электронный ресурс] URL:https://docs.influxdata.com/influxdb/v1.5/concepts/insights_tradeofs (дата обращения 04.05.2018)

3. Кузьмин М. М., Elasticsearch как NoSQL база данных [Электронный

ресурс] URL:https://habr.com/company/percolator/blog/222765/ (дата обращения 05.05.2018)

4. Benchmark review of InfluxDB and Elasticsearch [Электронный ресурс] URL:https://www.slideshare.net/influxdata/lets-compare-a-benchmark-review-of-influxdb-and-elasticsearch (дата обращения 05.05.2018)

УДК 331.101

Болог А.С. студент 4 курса

факультет «Бухгалтерский учет, анализ и аудит» научный руководитель: Колесникова Е.В., к. э.н.

доцент

кафедра «Учет, анализ и аудит» КФУ им. В.И. Вернадского Институт экономики и управления Россия, г. Симферополь РЕКОМЕНДАЦИИ ПО СОВЕРШЕНСТВОВАНИЮ СИСТЕМЫ БУХГАЛТЕРСКОГО УЧЕТА И КОНТРОЛЯ РАСЧЕТОВ С ПЕРСОНАЛОМ В ООО «ЛАБОРАТОРИЯ ФОРТ КРЫМ»

Аннотация: В статье рассматриваются особенности бухгалтерского учета и контроля расчетов с персоналом в ООО «Лаборатория Форт Крым». На основании проведенного исследования определяются плюсы и минусы системы бухгалтерского учета и контроля расчетов с персоналом в данной организации. Даются рекомендации относительно совершенствования учета и контроля данных видов расчетов.

Ключевые слова: расчеты с персоналом, методика учета, контроль, ООО «Лаборатория Форт Крым», аутсорсинг, грейдинг.

Bоlog A.S. student

4 course, faculty «Accounting, analysis and audit»

KFU them. V. I. Vernadsky Institute of Economics and management

Russia, Simferopol Scientific supervisor: Kolesnikova E.V. candidate of economic Sciences, associate Professor associate Professor of «Accounting, analysis and audit»

KFU them. V. I. Vernadsky Institute of Economics and management

Russia, Simferopol RECOMMENDATIONS FOR IMPROVING THE SYSTEM OF ACCOUNTING AND CONTROL OF PAYROLL IN LLC "LABORATORY

OF FORT CRIMEA»

i Надоели баннеры? Вы всегда можете отключить рекламу.