Бессерверная база данных временных рядов AWS наконец доступна после двух лет предварительной версии - первый обзор основных функций

Объем и популярность данных временных рядов экспоненциально растут. По сути, это набор числовых значений, присвоенных определенным временным меткам, и он используется для описания того, как вещи меняются с течением времени. Данные с устройств Интернета вещей, датчики, прогнозы погоды, поток кликов, данные финансового фондового рынка или даже измерения вашего пульса - все это примеры временных рядов.

Сценарии использования, требующие отслеживания изменений во времени, настолько распространены, что многие продукты на рынке были разработаны специально для эффективного хранения этого типа данных. Во время re: Invent в 2018 году AWS анонсировала новый облачный сервис Amazon Timestream, который должен обеспечивать в 1000 раз более высокую производительность запросов и снижение затрат в десять раз по сравнению с реляционными базами данных [1]. И самое лучшее - это то, что он не требует сервера, что упрощает масштабирование, поскольку объем данных временных рядов, хранящихся с течением времени, продолжает расти.

Несмотря на то, что продукт был анонсирован еще в 2018 году, он не был общедоступным до прошлой недели.

В этой статье мы рассмотрим функции, преимущества, ограничения и цены Amazon Timestream, а затем сделаем короткую демонстрацию и сделаем вывод.

Функции

AWS много раз доказывала, что они хотят упростить для своих клиентов использование их сервисов, абстрагируя ИТ-операции и вещи, необходимые для начала использования их продуктов. Timestream не исключение - нет Ops, даже если вы захотели это сделать. Все, что вы можете настроить для своей базы данных, - это имя базы данных и то, как долго вы хотите хранить данные внутри этой базы данных. С технической точки зрения вы можете выбрать период хранения для уровня краткосрочного хранения в памяти и для долгосрочного магнитного хранилища. Это различие имеет решающее значение, поскольку оно подчеркивает одно из основных преимуществ использования Timestream по сравнению с обычными базами данных. Объясним почему.

Горячие и холодные данные

Представьте, что вы управляете парком серверов и вам необходимо предоставить панель мониторинга в реальном времени, которая отображает все соответствующие показатели, касающиеся использования памяти, ЦП и т. Д. Для этой цели вы постоянно вводите новые измерения с течением времени в свое время. -серийная база данных. Поскольку вы хотите видеть только «свежие» недавно обновленные данные для показателей, собранных за последние пару часов, вам не нужно хранить данные за последний месяц в памяти - это будет пустой тратой дорогостоящих ресурсов. В то же время вы, вероятно, не захотите выбрасывать данные за прошлую неделю, потому что вы можете использовать их для анализа тенденций с течением времени и обнаружения аномалий, которые могут быть обнаружены только при просмотре более крупного временного окна.

Мы часто называем эти недавно обновляемые, часто используемые записи горячими данными. Напротив, все, что произошло давным-давно и к чему вы получаете доступ только для нескольких конкретных случаев использования аналитики и науки о данных, называется холодными данными [2]. Amazon Timestream позволяет хранить и то, и другое в одной базе данных, что действительно полезно. До Timestream, чтобы обеспечить информационные панели с малой задержкой, вам обычно приходилось кэшировать горячие данные в некоторых хранилищах данных в памяти, таких как Redis, а холодные данные нужно было хранить в какой-то другой базе данных, которая может обрабатывать большие объемы данных без взлома банка.

Указание срока хранения горячих и холодных данных

Amazon Timestream автоматически управляет перемещением данных между памятью и магнитным хранилищем. В нашей базе данных может быть много разных таблиц. Затем для каждой таблицы мы можем указать, как долго мы хотим хранить эти данные на каждом уровне хранения - на изображении ниже мы определяем, что хотим хранить горячие данные в памяти в течение 24 часов, а затем переместим их в долгосрочное магнитное хранилище.

Нам не нужно заранее гадать, сколько лет мы хотим хранить эти данные - мы можем легко изменить эту конфигурацию позже:

Изменения в сроке хранения вступают в силу немедленно.

Дополнительные преимущества

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

AWS делает упор на безопасность, поэтому все данные, как в пути, так и в состоянии покоя, хранящиеся внутри Timestream, зашифрованы.

Еще одним преимуществом продукта является интерфейс SQL, который позволяет получать данные на простом общеизвестном языке запросов. Помимо интерфейса SQL, существует также интеграция SDK, так что вы можете взаимодействовать со службой через библиотеки, такие как Python boto3, и есть коннектор JDBC. , который позволит вам запрашивать Timestream как традиционную реляционную базу данных с помощью клиентов SQL, таких как Datagrip.

Когда дело доходит до записи, выделяется одна особенность: Timestream включает семантику «первый писатель побеждает», которая автоматически проверяет наличие дубликатов при записи данных в базу данных. Таким образом, если вы попытаетесь записать идентичную запись во второй раз, Timestream сохранит первую запись и отменит вторую запись. Это особенно полезно, если вы хотите отслеживать изменения с течением времени, и если бы никаких изменений не произошло, у вас не было бы тысяч одинаковых строк.

Несмотря на все упомянутые до сих пор преимущества, мне больше всего нравится то, что эта служба была специально разработана для простого управления обычными операциями временных рядов - есть много полезных функций для:

  • агрегировать данные «на лету» по выбранному вами диапазону времени (например, bin(time_column, 7d) → группировать данные в еженедельные интервалы),
  • заполните отсутствующие значения с помощью одной из доступных функций интерполяции, например. interpolate_linear(),
  • функции для преобразования любой временной метки в определенный формат или для простой фильтрации данных за последнее временное окно, например, за последние 3 часа (WHERE my_time_column <= ago(3h)).

Вдобавок к этому AWS предлагает подключаемый модуль Grafana (для Grafana версии ≥ 7.1) и интеграцию с AWS Quicksight для создания красивых панелей мониторинга временных рядов.

Структура временного ряда в Amazon Timestream

В целом, мы можем создать множество таблиц в каждой базе данных. В каждой таблице может храниться несколько записей. Коллекция записей может создавать временной ряд, если в ней есть столбец с отметкой времени и хотя бы одно измерение, имя измерения и столбцы значений измерения. На изображении ниже показана взаимосвязь между таблицей, временными рядами, измерениями и измерениями.

В табличной форме это могло бы выглядеть следующим образом (на изображении выше вы видите третью строку):

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

Ценообразование

На момент написания цены основаны на [3]:

  • объем данных, хранящихся в памяти (краткосрочное хранилище), измеряемый в ГБ за ЧАС
  • объем данных, хранящихся в магнитном хранилище или хранилище SSD (долгосрочное хранилище), измеряемый в ГБ за МЕСЯЦ
  • запросов на отсканированный ГБ
  • количество операций записи измеряется миллионами операций записи блоков данных размером 1 КБ
  • межрегиональная передача данных (если применимо).

Демонстрация: настройте первую базу данных и запросите данные образца в течение 2 минут

В приведенной ниже анимации я демонстрирую, как создать базу данных Timestream и использовать образец таблицы IoT для экспериментов со службой. Используя образцы запросов, предоставленные AWS, вы можете увидеть, как выполнять агрегирование на лету с синтаксисом bin(time_column, time_interval), который понижает дискретизацию числовых данных до указанного временного интервала - в приведенном ниже примере это один день (1d).

Вот пример запроса из демонстрации, который показывает, как использовать функции временных рядов:

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

Ограничения

Перед использованием Timestream для любых производственных рабочих нагрузок следует учитывать три основных момента.

  1. В настоящее время услуга поддерживается только в 4 регионах: us-east-1, us-east-2, us-west-2 и eu-west-1.
  2. Timestream поддерживает ANSI-2003 SQL, но не поддерживает соединения между таблицами. Вы можете использовать объединения между CTE, основанными на одной и той же таблице, но таблицы изолированы друг от друга, и, следовательно, вы не можете выполнять соединения между ними. С моей точки зрения, это требует более тщательного проектирования, чтобы хранить данные, которые необходимо запрашивать, вместе в одной таблице.
  3. В отличие от реляционных баз данных, таблицы внутри Timestream предназначены только для добавления, что означает, что удаление или обновление не разрешены.

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

Заключение

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

Чтобы ответить на вопрос из заголовка: да, кажется, стоит попробовать эту базу данных. С моей точки зрения, самым большим преимуществом является возможность хранить горячие и холодные данные в одной системе без необходимости перемещать данные между базами данных в памяти для обслуживания информационных панелей в реальном времени и централизованной базы данных для аналитики. рабочие нагрузки. Вдобавок ко всему, Timestream может ускорить разработку благодаря функции временных рядов, которая позволяет группировать по времени и агрегировать на лету, интерполировать недостающие данные и интегрировать с Grafana, клиентами SQL ( через JDBC) и Python boto3 SDK.

В целом я рад, что AWS наконец-то выпустил сервис, потому что я много работаю с данными временных рядов. Я не знаю, почему для окончательного выпуска потребовалось два года, но зная AWS, они, вероятно, хотели продолжить тестирование и улучшить сервис, пока работа с ним не станет почти «скучной».

Спасибо за чтение! Я планирую создать следующую статью с подробным описанием конкретных функций и более подробным обзором после работы с сервисом с моими собственными данными - подписывайтесь на меня, чтобы не пропустить.

Ссылки

[1] Блог AWS: https://aws.amazon.com/blogs/aws/store-and-access-time-series-data-at-any-scale-with-amazon-timestream-now-generally-available /

[2] Горячие и холодные данные: https://data-management-experts.com/data-management/what-is-the-data-temperature/

[3] Цены на Amazon Timestream: https://aws.amazon.com/timestream/pricing/

[4] Канал AWS на YouTube: https://www.youtube.com/watch?v=8RHFPNReylI&t=1434s