45
Выбираем СУБД для хранения временных рядов Павел Филонов

Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

  • Upload
    ontico

  • View
    138

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Выбираем СУБД для хранения временных рядовПавел Филонов

Page 2: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Мы слишком часто склонны доверять своему оптимизму (или эксплуатировать оптимистические надежды своих спонсоров). Мы слишком часто не хотим прислушиваться к голосу рассудка и обращаем много внимания на продавцов панацей, поющих голосами сирен.

Фредерик Брукс «Мифический человеко-месяц»

Page 3: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)
Page 4: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

digitalsubstation.ru

Page 5: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

http://taneco.tatneft.ru/

Page 6: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Как мы видим данные

Page 7: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Модель данных и характеристики

• Схема{

“id”: 42, “ts”: 1023213221, “value”: 3.14}

• Число сенсоров ~ 104

• Частота опроса сенсоров ~ 1 раз в секунду

Page 8: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Проблема выбора!

www.wordclouds.com

Page 9: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Неинженерный подходя в другом проекте все хранил в X. Значит, нужно использовать X;

я в другом проекте все хранил в X. Значит, нужно использовать всё что угодно, кроме X;

а давайте возьмем X, а там уже разберемся;мне на конференции рассказали, что X - это очень «круто»;

я раньше никогда не работал с X. Давайте отправим его в «продакшн».

Page 10: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Инженерный подход

1. Ознакомиться с литературой2. Выбрать критерии сравнения3. Выбрать конкурсантов4. Выбрать методику тестирования5. Провести тестирование6. Провести анализ результатов7. Оформить отчет8. Предложить рекомендации

Трудозатраты

Page 11: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Критический обзор

• Если тест проводит компания-разработчик СУБД Bingo-BongoDB, то в нем побеждает

• Bingo-BongoDB

• Для грамотного сравнения пропускной способности нужно для разных СУБД

• использовать разные данные

Page 12: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Критерии

• Пропускная способность на запись• В зависимости от размеров «батча»• В зависимости от числа потоков• Под продолжительной нагрузкой

• Время выполнения запросов

• В зависимости от длины запрашиваемого интервала

• Степень сжатия

Page 13: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Конкурсанты

Page 14: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Тестовый стенд и версииHardware

Core i7-479032 Gb RAM256 Gb SSD (OS)1 Tb HDD (data)

SoftwareUbuntu 16.04.1 amd64Docker 1.11.2OpenTSDB 2.2.0InfluxDB 13.0MongoDB 3.2.10PostgreSQL 9.6.0Client

Rust 1.12.1postgres 0.11mongo-driver 0.3.0hyper 0.9

Page 15: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Пропускная способность на запись

m — размер батча

k — число потоков

MongoDB

Page 16: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Пропускная способность на запись

m — размер батча

k — число потоков

MongoDB

Page 17: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Пропускная способность на запись

m — размер батча

k — число потоков

MongoDB

Page 18: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Пропускная способность и размер батча

Page 19: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Пропускная способность и размер батча

Page 20: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Линейная регрессия

𝛼𝛽

Page 21: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Нормированные результаты

Page 22: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Пропускная способность и число клиентов

Page 23: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Пропускная способность и число клиентов

Page 24: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Пропускная способность и число клиентов

Page 25: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Нормированные результаты

Page 26: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Пропускная способность под нагрузкой

Page 27: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Пропускная способность под нагрузкой

Page 28: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Пропускная способность под нагрузкой

Page 29: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Нормированные результаты

Page 30: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Время выполнения запросов

Page 31: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Время выполнения запросов

Page 32: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Нормированные результаты

Page 33: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Нормированные результаты

Page 34: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Многокритериальное сравнение Важностькритериев

Скалярнаяоценка

×

InfluxDB

OpenTSDB

MongoDB

PostgreSQL

Вне конкурса

Page 35: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Многокритериальное сравнение Важностькритериев

Скалярнаяоценка

×

InfluxDB

OpenTSDB

MongoDB

PostgreSQL

Вне конкурса

Page 36: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Многокритериальное сравнение Важностькритериев

Скалярнаяоценка

×

InfluxDB

OpenTSDB

MongoDB

PostgreSQL

Вне конкурса

Page 37: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Image from: http://analitika-forex.ru

Page 38: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Последний конкурсант

Image from: habrahabr.ru

Page 39: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Нормированные результаты

Page 40: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

×ClickHouse

InfluxDB

Page 41: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

×ClickHouse

InfluxDB

Page 42: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Заключение

• Доверяй, но проверяй

• Use math, Luke

• Субъективную оценку тоже можно измерить

Page 43: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Источники1. Y. Bassil. A Comparative Study on the Performance of the Top DBMS Systems

– paper2. C. Pungila, O. Aritoni, TF. Fortis. Benchmarking Database Systems for the

Requirements of Sensor Readings – paper3. B. Cooper, , A. Silberstein, E.Tam, R. Ramakrishnan, and R. Sears.

Benchmarking Cloud Serving Systems with YCSB – paper4. T. Goldschmidt, H. Koziolek, A. Jansen. Scalability and Robustness of Time-

Series Databases for Cloud-Native Monitoring of Industrial Processes – paper5. T. Person. InfluxDB Markedly Outperforms Elasticsearch in Time-Series Data

& Metrics Benchmark – blogpost6. Д. Калугин-Балашов. Как выбрать In-memory NoSQL базу данных с

умом? - slides

Page 44: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Источники7. B. Schwartz. Time-Series Databases and InfluxDB – blogpost8. K. Eamonn and K. Shruti. On the Need for Time Series Data Mining

Benchmarks: A Survey and Empirical Demonstration – paper9. R. Sonnenschein. Why industrial manufactoring data need special

considerations – slides10. S.Acreman. Top10 Time Series Databases – blogpost11. J. Guerrero. InfluxDB Tops Cassandra in Time-Series Data & Metrics

Benchmark – blogpost12. J.Guerrero. InfluxDB is 27x Faster vs MongoDB for Time-Series Workloads –

blogpost13. Яндекс открывает ClickHouse - blogpost

Page 45: Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Касперского)

Спасибо за внимание!

email: [email protected]: github.com/sdukshistwitter: @filonovpv