ћерион Ќетворкс

8 минут

ƒавно прошли те времена, когда «база данных» представл€ла собой единую —”Ѕƒ на основе рел€ционной модели данных, которую обычно устанавливали на самом мощном сервере в центре обработки данных. “ака€ база данных могла обслуживать все виду запросов – OLTP (On-Line Transaction Processing – обработка транзакций в режиме реального времени), OLAP (On-Line Analytical Processing – аналитическа€ обработка данных в режиме реального времени) – все, что нужно дл€ бизнеса.

¬ насто€щее врем€ базы данных работают на самом обычном оборудовании, они также стали более сложными с точки зрени€ высокой доступности и более специализированными дл€ обработки определенного типа трафика. —пециализаци€ позвол€ет добитьс€ гораздо большей производительности баз данных – все оптимизировано дл€ работы с определенным типом данных: оптимизатор, механизм хранени€, даже €зык может быть не SQL, как это бывает обычно. ќн может быть основан на SQL с некоторыми расширени€ми, которые позвол€ют более эффективно манипулировать данными, или может быть чем-то абсолютно новым, созданным с нул€.

Ќа сегодн€ мы имеем аналитические столбчатые базы данных, такие как ClickHouse или MariaDB AX, платформы обработки и анализа больших данных, такие как Hadoop, решени€ NoSQL, такие как MongoDB или Cassandra, хранилища данных типа «ключ-значение», такие как Redis. ћы также имеем базы данных временных р€дов, такие как Prometheus или TimeScaleDB. Ёто именно то, на чем мы акцентируем внимание в данной статье. Ѕазы данных временных р€дов (Time Series Databases) – что это такое и зачем вам нужно еще одно хранилище данных в своей среде.


ƒл€ чего нужны базы данных временных р€дов?

 ак видно из названи€, базы данных временных р€дов предназначены дл€ хранени€ данных, которые измен€ютс€ со временем. Ёто могут быть абсолютно любые данные, собранные с течением времени. Ёто могут быть метрические показатели, собранные из некоторых систем – все системы трендов €вл€ютс€ примерами данных временных р€дов.

ClusterControl

 аждый раз, когда вы смотрите на информационные панели в ClusterControl, на самом деле вы видите визуальное представление временных р€дов, хран€щихс€ в Prometheus – базе данных временных р€дов.

¬ременные р€ды не ограничиваютс€ метрическими показател€ми базы данных. ћетриками может быть что угодно – изменение потока людей, вход€щих в торговый центр, с течением времени, изменение трафика в городе, использование общественного транспорта в течение дн€, течение воды в реке или ручье, количество энергии, вырабатываемое водной установкой – все это и все остальное, что можно измерить во времени, €вл€етс€ примером временных р€дов. “акие данные можно запросить, построить, проанализировать, чтобы найти коррел€ционную зависимость между различными метриками.


—труктура данных в базе данных временных р€дов

 ак вы понимаете, сама€ важна€ составл€юща€ данных в базе данных временных р€дов – это врем€. —уществует два основных способа хранени€ данных. ѕервый способ чем-то похож на хранилище «ключ-значение» и выгл€дит так:

ћетка времени

ћетрика 1

2019-03-28 00:00:01

2356

2019-03-28 00:00:02

6874

2019-03-28 00:00:03

3245

2019-03-28 00:00:04

2340

ѕроще говор€, дл€ каждой метки времени имеетс€ некоторое значение метрики.

¬торой способ подразумевает хранени€ большего числа показателей. ¬место того, чтобы хранить каждую метрику в отдельной таблице или коллекции, их можно хранить вместе.

ћетка времени

ћетрика 1

ћетрика 2

ћетрика 3

ћетрика 4

ћетрика 5

2019-03-28 00:00:01

765

873

124

98

0

2019-03-28 00:00:02

5876

765

872

7864

634

2019-03-28 00:00:03

234

7679

98

65

34

2019-03-28 00:00:04

345

3

598

0

7345

“ака€ структура данных, когда все метрики св€заны, позвол€ет более эффективно запрашивать данные. ¬место того, чтобы читать несколько таблиц и объедин€ть их дл€ получени€ всех метрик, достаточно прочитать лишь одну единственную таблицу, чтобы подготовить данные к обработке и представлению.

” вас может возникнуть вопрос – что же здесь нового? „ем эта база данных отличаетс€ от обычной таблицы в MySQL или в любой другой рел€ционной базе данных? ƒа, действительно, конструкци€ таблиц очень похожа. ќднако есть существенные различи€ в рабочей нагрузке, которые могут существенно повысить производительность, если хранилище данных предназначено дл€ использовани€ такого рода таблиц,

¬ременные р€ды, как правило, только растут. ћаловеро€тно, что вы будете обновл€ть старые данные. „аще всего строки в таблице не удал€ютс€, однако вам может понадобитьс€ кака€-то агрегаци€ данных с течением времени. ≈сли прин€ть это при проектировании внутреннего устройства базы данных, то этот факт будет иметь существенное расхождение в сравнении со «стандартными» рел€ционными (и не рел€ционными) базами данных, предназначенными дл€ обработки транзакций в режиме реального времени. „то здесь €вл€етс€ наиболее важным, так это способность последовательно хранить большие объемы данных, поступающих со временем.

ћожно, конечно, использовать –—”Ѕƒ дл€ хранени€ временных р€дов, но она не оптимизирована дл€ этого. ƒанные и индексы, сгенерированные на ее основе, могут стать слишком большими, и запросы будут проходить очень медленно. ћеханизмы хранени€ данных, используемые в —”Ѕƒ, предназначены дл€ хранени€ различных типов данных. ќбычно они оптимизированы дл€ рабочей нагрузки обработки транзакций в режиме реального времени, котора€ включает в себ€ частое изменение и удаление данных. ¬ рел€ционных базах данных также часто отсутствуют специализированные функции и функции, предназначенные дл€ обработки временных р€дов. ћы уже упоминали, что вы веро€тно столкнетесь с необходимостью агрегировать данные, полученные ранее какой-то временной метки. ¬ы также можете иметь возможность легко запускать некоторые статистические функции дл€ ваших временных р€дов, чтобы сглаживать их, определ€ть и сравнивать тренды, интерполировать данные и многое другое. «десь, например, вы можете найти некоторые функции, которые Prometheus предоставл€ет пользовател€м.


ѕримеры баз данных временных р€дов

Ќа рынке существует множество баз данных временных р€дов, поэтому, естественно, что рассмотреть все мы не сможем. Ќо мы все же хотели привести несколько примеров баз данных временных р€дов, которые, возможно, вам уже знакомы или которые вы уже, возможно, используете (сознательно или нет).

Time Series Databases

InfluxDB

InfluxDB была разработана компанией InfluxData. Ёто база данных временных р€дов с открытым исходным кодом, написанна€ €зыке программировани€ Go. ’ранилище данных позвол€ет вводить запросы данных на €зыке, подобном SQL, что позвол€ет разработчикам легко интегрировать эту базу данных в свои приложени€. InfluxDB также может работать как часть коммерческого решени€, которое охватывает весь стек, предназначенный дл€ обеспечени€ процесса обработки данных временных р€дов, полнофункциональной высоко доступной средой.

Prometheus

Prometheus – это еще один проект с отрытым исходным кодом, который также написан на €зыке программировани€ Go. ќн обычно используетс€ в качестве серверной части дл€ различных инструментов и проектов с открытым исходным кодом, например, Percona Monitoring and Management. Prometheus также €вл€етс€ наилучшим вариантом дл€ ClusterControl.

Prometheus

Prometheus можно развернуть из ClusterControl с целью хранени€ данных временных р€дов, собранных на серверах баз данных, контролируемых и управл€емых ClusterControl:

Prometheus

Prometheus широко используетс€ в мире Open Source, поэтому его довольно легко интегрировать в уже существующую среду с помощью нескольких экспортеров.

RRDtool

Ёто один из примеров базы данных временных р€дов, которую многие используют, даже не подозрева€ об этом. RRDtool – это достаточно попул€рный проект с открытым исходным кодом дл€ хранени€ и визуализации временных р€дов. ≈сли вы хоть раз использовали Cacti, то и RRDtool вы тоже использовали. ≈сли вы разработали свое собственное решение, вполне веро€тно, что и здесь вы тоже использовали RRDtool в качестве серверной части дл€ хранени€ данных. —ейчас RRDtool, возможно, не так попул€рен, как это было в 2000-2010 годах. ¬ те годы это был самый распространенный способ хранени€ временных р€дов. «абавный факт – ранние версии ClusterControl использовали именно RRDtool.

TimeScale

TineScale – это база данных временных р€дов, разработанна€ на основе PostgreSQL. Ёто расширение дл€ PostgreSQL, которое использует основное хранилище данных дл€ предоставлени€ доступа к ним, что означает, что оно поддерживает все разновидности SQL, доступные дл€ использовани€. ѕоскольку это расширение, то оно использует все функции и расширени€ PostgreSQL. ¬ы можете совмещать временные р€ды с другими типами данных, например, объедин€ть временные р€ды с метаданными, пополн€€ информацией выходные данные. ¬ы также можете выполнить более сложную фильтрацию, использу€ JOIN и таблицы без временных р€дов. √еоинформационное обеспечение в PostgreSQL TimeScale можно использовать дл€ отслеживани€ географических местоположений с течением времени, а также использовать все возможности масштабировани€, предлагаемые PostgreSQL, включа€ репликацию.

Timestream

Amazon Web Services также предлагает базы данных временных р€дов. ќ Timestream было объ€влено совсем недавно, в но€бре 2018 года. ќна добавл€ет еще одно хранилище данных в портфель AWS, помога€ пользовател€м обрабатывать временные р€ды, поступающие из таких источников, как устройства »нтернет вещей или отслеживаемые сервисы. ≈го также можно использовать дл€ хранени€ метрических данных, полученных из журналов, созданных несколькими службами. Ёто позвол€ет пользовател€м выполн€ть аналитические запросы к ним, помога€ пон€ть закономерности и услови€, в которых работают службы.

Tiemstream, как и большинство сервисов AWS, обеспечивает простой способ масштабировани€ в случае, если с течением времени возрастает потребность в хранении и анализе данных.

 ак видите, вариантов баз данных временных р€дов на рынке множество, и это не удивительно. ¬ последнее врем€, все более попул€рным становитс€ анализ временных р€дов, поскольку он становитс€ все более важных дл€ различных бизнес-операций.   счастью, есть большое количество проектов как с открытым кодом, так и коммерческих. » с большой долей веро€тности вы сможете найти инструмент, который полностью удовлетворит ваши потребности.


—кидки 50% в Merion Academy

¬ыбрать курс