Недавно компания Cloudflare объяснила, почему для своей платформы DEX (Digital Experience Monitoring) она выбрала расширение PostgreSQL, известное как TimescaleDB, вместо специализированной OLAP-системы. DEX обеспечивает наблюдаемость за производительностью устройств, сетей и приложений в средах Zero Trust, предлагая прозрачность и надежность для сложных инфраструктур.
Cloudflare с 2017 года использует ClickHouse, но для DEX данное решение оказалось недопустимым. Дело в том, что механизм MergeTree ClickHouse оптимизирован для пакетных вставок с высокой пропускной способностью, тогда как DEX сталкивается с миллионами небольших записей, что вызывает увеличение числа операций записи и приводит к конфликтах доступов.
В попытке быстро выпустить минимально жизнеспособный продукт, команда сперва использовала PostgreSQL для конфигураций и аналитических логов, обрабатывая результативные в сотни миллисекунд запросы при 200 вставках в секунду. Но когда число вставок возросло до 1000 в секунду, а размер таблиц достиг миллиардов строк, долгие запросы стали оперативной проблемой.
Для улучшения производительности команда применила метод предварительного вычисления агрегатов (т.н. downsampling), что обеспечило тысяча кратный прирост в производительности запросов.
Решение на базе TimescaleDB
Для автоматизации обновлений материализованных представлений, управления разделами и поддержки колонносторных и редких индексов, Cloudflare выбрала TimescaleDB. Это позволило автоматизировать агрегацию и удержание данных, упростить стек, оставив аналитику и конфигурацию в одной экосистеме. В результате удалось достичь улучшения производительности от 5 до 35 раз в зависимости от типа запроса и временного диапазона благодаря сжатию и редким индексам.
Компании удалось уменьшить сложность эксплуатации и одновременно достичь требуемой производительности аналитики. TimescaleDB стал основным решением не только для DEX, но и нашел применение в других проектах Cloudflare, включая аналитическое и отчетное обеспечение Zero Trust.