Выпущена база данных временных рядов с открытым исходным кодом


Выпущена новая база данных временных рядов с открытым исходным кодом, созданная с помощью движка Postgres. TimeScaleDB в настоящее время доступен в версии с одним узлом и оптимизирован для быстрого приема и сложных запросов.

Разработчики говорят, что это дает преимущества, потому что, в отличие от традиционных СУБД, TimescaleDB горизонтально масштабируется между несколькими серверами; хотя, в отличие от баз данных NoSQL, он изначально поддерживает все SQL

База данных была создана, потому что ее разработчикам нужно было иметь дело с данными шкалы времени, которые были большими по объему и сложными по своей природе, с несколькими измерениями и метками, связанными с одним временем. Хранение таких данных временных рядов требует как масштабирования, так и эффективных сложных запросов. Разработчики заявляют, что не желали идти на компромисс между горизонтальной масштабируемостью NoSQL и мощностью запросов реляционных баз данных:

«Нам нужно было что-то, что предлагало и то, и другое, поэтому мы построили это».

Поддержка SQL обеспечивается движком PostgreSQL и включает такие функции, как вторичные индексы, JOINs и оконные функции. TimescaleDB действует и выглядит так, как будто это просто база данных PostgreSQL: вы подключаетесь к базе данных, как если бы это был PostgreSQL, и вы можете управлять базой данных, как если бы это был PostgreSQL. Любые инструменты и библиотеки, которые связаны с PostgreSQL, будут автоматически работать с TimescaleDB.

Разработчики говорят, что TimescaleDB предлагает преимущества по сравнению с обычным PostgreSQL, поскольку PostgreSQL плохо масштабируется в соответствии с объемом данных, который создает большинство приложений временных рядов, особенно при работе на одном сервере. Они говорят, что, в частности, ванильный PostgreSQL имеет низкую производительность записи для больших таблиц, и эта проблема со временем только усугубляется, поскольку объем данных растет линейно во времени. Эти проблемы возникают, когда индексы таблиц больше не помещаются в памяти, поскольку каждая вставка будет транслироваться во множество операций выборки с диска для обмена частями B-деревьев индексов.

Эти проблемы с базами данных SQL в целом привели к движению NoSQL, но разработчики TimescaleDB говорят, что рабочие нагрузки временных рядов различаются по двум ключевым причинам. Во-первых, данные временных рядов в значительной степени неизменны. Постоянно поступают новые данные, обычно соответствующие самым последним периодам времени. Другими словами, записи в основном происходят как новые вставки, а не как обновления существующих строк.

Во-вторых, рабочие нагрузки имеют естественное разделение как по времени, так и по пространству. Записи обычно производятся в самый последний временной интервал и по «ключу разделения» в пространственном измерении (например, источники данных, устройства, пользователи и т. Д.). Запросы обычно задают вопросы о конкретном временном ряду или источнике данных или о многих источниках данных, ограниченных некоторым временным интервалом.

TimescaleDB использует эти свойства, автоматически разделяя данные на двумерные фрагменты по нескольким узлам (или одному узлу), выполняя параллельные операции и оптимизируя планирование запросов по всем фрагментам, а также предоставляя этим данным единый интерфейс таблицы («гипертаблица» ).

TimescaleDB обеспечивает иллюзию единой непрерывной таблицы базы данных во всем времени и пространстве, даже если эта таблица разбита на множество частей по серверам. Вы запускаете стандартные SQL-запросы к этой гипертаблице, а распределенный планировщик запросов TimescaleDB автоматически оптимизирует запрос для доступа только к нужному набору фрагментов. База данных может иметь несколько гипертаблиц, каждая со своей схемой и секциями.

Есть технический документ, описывающий идеи, лежащие в основе TimescaleDB, и то, как он был разработан и работает.


Добавить комментарий