Pattern

Блог Tarantool

BackIcon

Строим кэши и витрины данных с Tarantool DB

Строим кэши и витрины данных с Tarantool DB

CalendarIcon

29.03.2024

TimeIcon

10 мин.

scroll iconScroll

Сегодня Tarantool предлагает экосистему связанных между собой решений. Они закрывают основные потребности в хранении и обработке данных, при этом помогая улучшить производительность и надежность сервисов. Один из важных элементов этой экосистемы — Tarantool DB.

Рассказываем, что такое Tarantool DB, какие функции он скрывает «под капотом», разбираем нюансы работы с инструментом и показываем реальные кейсы его применения.

Статья подготовлена по мотивам вебинара «Строим кэши и витрины данных».

Знакомство с Tarantool DB

Tarantool DB — это мультипротокольная (работает с протоколами Redis и IPROTO) NoSQL система управления базами данных на основе платформы Tarantool Enterprise Edition (EE).

2.jpg

Она позволяет создавать высокоскоростные отказоустойчивые хранилища данных. С помощью Tarantool DB можно:

  • ускорять доступ к данным;
  • сокращать Time-to-market бизнес-сервисов;
  • объединять данные из разных систем и подготавливать витрины.

Основной сценарий использования Tarantool DB — кэш, витрина «горячих» данных.

При этом Tarantool DB — отечественная разработка, поэтому инструмент можно рассматривать в качестве основного в случае «локализации» ИТ-ландшафта или миграции с NoSQL БД зарубежных вендоров.

Архитектурно Tarantool DB включает компоненты:

  • для хранения данных: поддерживает кластеризацию, репликацию, шардирование, схемы данных и индексов;
  • работы с данными: есть поддержка CRUD-операций и Redis-команд;
  • интеграции с бизнес-приложениями: позволяет использовать для интеграции Java, Python, GO-коннекторы, Redis-коннектор.

Кейсы применения Tarantool DB

Сервис аутентификации. Личный кабинет

Tarantool DB используется в сервисе аутентификации в личном кабинете для хранения сессий пользователей и кодов авторизации. База хранит более 20 млн записей, поддерживает до 2 тысяч одновременных сессий и обеспечивает скорость отклика менее 100 мс при нагрузке до 2 тысяч запросов в секунду.

При этом БД одновременно решает задачи как краткосрочного, так и долгосрочного хранения. Это важно, поскольку время сессий может различаться — сессии могут храниться минуты (браузеры), а могут месяцы (мобильные приложения). RTO и RPO — меньше 1 часа.

Вместе с Tarantool DB, разнесенным на два ЦОДа, в архитектуре решения также есть сервис SSO и шлюз аутентификации. К данным из Tarantool обращаются сервисы для пользователей и личный кабинет пользователей.

5.jpg

Банковская система. Оперативное хранилище

Tarantool DB применяют в качестве оперативного хранилища банковской системы. БД хранит данные об остатках на счетах клиентов и журнал проводок в течение банковского рабочего дня, после чего передает данные в дисковую базу данных для архивного хранения.

На Tarantool DB приходится нагрузка в виде 150 ГБайт данных и более 20 тысяч запросов в секунду. Что важно — для банковской системы недопустима потеря данных, и синхронная репликация, поддерживаемая Tarantool DB, позволяет выполнять это требование.

6.jpg

Провайдер. Оценка в онлайне расходов клиентов

Один из провайдеров использует Tarantool DB для хранения информации о всевозможных пользовательских счетчиках (минуты, гигабайты, бонусные баллы и другие). Особенность реализации в том, что в рамках единого хранилища нужно работать с данными, относящимися к разным типам услуг.

Клиентское решение подразумевает недопустимость потери данных, большое количество запросов (более 60 тысяч в секунду) и большой объем данных (больше 1 ТБайт), поэтому Tarantool DB работает в рамках Tarantool Clusters Federation, используется синхронная репликация и репликация в резервный ЦОД.

7.jpg

Возможности «под капотом»

Tarantool DB имеет расширенные возможности хранения данных. Среди них:

  • гарантированная персистентность хранимых данных;
  • оптимизация хранения данных за счет сжатия и управление временем жизни данных;
  • поддержка разных моделей данных: key-value, документарная БД, классические таблицы;
  • поддержка вторичных индексов;
  • гибкая настройка и управление схемой данных в кластерном хранилище данных.

Помимо прочего, в Tarantool DB вшита возможность полнофункциональной работы с протоколом Redis. В том числе есть:

  • поддержка типов данных и более 60 команд Redis;
  • поддержка Redis ACL;
  • интеграция с LDAP/AD;
  • логирование событий;
  • шифрование TLS;
  • совместимость настроек с Redis.

4.jpg

Такая совместимость позволяет переносить прикладные системы, работающие с Redis, на Tarantool DB — и прилагать для этого минимум усилий.

Безопасность и эксплуатационные возможности Tarantool DB

Здесь Tarantool DB обладает следующими возможностями:

  • возможность управлять кластерным хранилищем данных как через интерфейс, так и через командную строку;
  • поддержка механизма failover для повышения отказоустойчивости кластера;
  • поддержка ролевой модели назначения прав доступа к объектам хранилища;
  • журналирование всех событий для последующего аудита безопасности;
  • интеграция с LDAP и шифрование TLS.

При этом Tarantool DB умеет работать на всех отечественных операционных системах, без проблем развертывается в среде Kubernetes, умеет раскатываться через Ansible, позволяет экспортировать метрики мониторинга (например, в Grafana или Prometheus).

Работа Tarantool DB с приложениями на Java

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

Для совместимости Tarantool с приложениями на Java у нас есть свой Java-коннектор. Недавно он был обновлен до третьей версии и теперь имеет следующие особенности:

  • Полная поддержка протокола Tarantool (iProto). Реализованы и поддерживаются: -- маппинг типов данных Tarantool и Java; -- преобразование исключений Tarantool в исключения Java, в том числе вложенных исключений; -- преобразование Message Pack к структурам Java, в том числе к пользовательским классам; -- пагинация массива данных; -- интерактивные транзакции; -- подписка на события Tarantool.
  • Удобство работы. Коннектор получил упрощенный API, поддержку фреймворка Spring, возможность конвертации объектов с помощью Jackson.
  • Надежность. Есть и можно использовать: -- healthscheck работоспособности и переподключение к работающему инстансу БД; -- авторизацию (CHAP-SHA1, PAP-SHA256); -- поддержку TLS/MTLS; -- ограничение времени выполнения подключения; -- мониторинг.

В перспективе мы планируем реализовать enterprise-решение Spring Data, а также имплементировать разные обертки в виде спринт-кэша, G-кэша, API для кэширования.

Нюансы эксплуатации Tarantool DB

Tarantool и ускорение микросервисов. В микросервисной архитектуре БД может использоваться для постоянного хранения данных, в виде кэша или витрины данных и для других нагрузок. При этом Tarantool DB хранит данные в оперативной памяти, что положительно сказывается на скорости приложения и доступа к данным.

Tarantool DB и OLAP. Есть два типа систем. Одни ориентированы на OLAP-запросы (оперативная обработка данных), другие — на OLTP-запросы (обработка транзакций в реальном времени). Tarantool DB ориентирован именно на OLTP-нагрузку. Для работы с OLAP лучше использовать Tarantool Column Store — in-memory колоночную СУБД для транзакционно-аналитической обработки данных в реальном времени.

Tarantool DB и транзакции. Tarantool поддерживает транзакции ACID (Atomicity, Consistency, Isolation, Durability), но поддержка ACID обеспечивается только внутри экземпляра Tarantool. Если транзакция кластерная — нужен дополнительный контроль и вспомогательные триггеры для обработки таких запросов. Зависимость скорости работы от платформы развертывания. Классически физический сервер обеспечивает производительность выше, чем виртуальный. Это связано с тем, что любая виртуальная система неизбежно становится «прослойкой» и добавляет различные задержки. Вместе с тем при правильной настройке виртуальной среды развертывания, Tarantool DB может демонстрировать высокую производительность при обработке десятков и сотен тысяч запросов даже при незначительном объеме вычислительных мощностей. Это доказывает и практика — многие компании работают с Tarantool именно на виртуальных машинах.

Алгоритмы синхронизации данных. Для синхронизации данных между разными серверами и ЦОДами Tarantool DB использует репликационные потоки. При этом вариантов синхронизации несколько: асинхронная репликация, синхронная репликация, Tarantool Cluster Federation (TCF). При синхронной репликации можно использовать как классический Stateful Failover с Failover-координатором, так и алгоритм Raft (находится в бета-версии). В Stateful Failover мастером назначается следующий по приоритету узел.

Действия миграций при запуске рестарта. В Tarantool есть файл schema.yml, в котором лежит вся информация о кластере и его компонентах. Причем об этом файле знает каждый инстанс Tarantool. При рестарте БД миграции, указанные в schema.yml, запускаются автоматически.

Примечание: В ходе вебинара «Строим кэши и витрины данных» мы провели демо, где показали, как разворачивать Tarantool DB, настраивать кластер, загружать данные и работать с ними. Посмотреть его можно здесь.

Мы постарались «упаковать» в Tarantool DB максимум функций и возможностей, чтобы уже «из коробки» БД могла закрыть основные потребности и боли пользователей при построении кэшей и витрин данных.

Читайте также

Графовые базы данных: определение, принципы, применение

Графовые базы данных — один из эффективных способов масштабирования доступа к данным и управления ими. По оценке MarketsandMarkets, объем рынка ПО для графовых БД к 2026 году достигнет 5,1 млрд долларов. В 2021 году рынок составлял 1,9 млрд, то есть рынок за 5 лет вырастет на 268%. Эксперты Emergen Research считают, что к 2030 году объем рынка превысит 11,25 млрд долларов, то есть суммарно за 9 лет рынок увеличится на 590%.
ArrayIcon

Что такое Tarantool 3.0 и почему он стал удобнее для пользователей

В течение долгого времени Tarantool воспринимался как инструмент, который обладает впечатляющими возможностями, но требует экспертных знаний для настройки. Однако в последние годы количество внедрений Tarantool в бизнесе заметно выросло. Стали важны не только функциональность и потенциал решения, но и удобство его использования. Поэтому мы изменили концепцию решения и, сохранив лучшие качества, сделали Tarantool версии 3.0.
ArrayIcon

Middleware для IoT и цифровых двойников

Цифровые двойники позволяют создавать точные копии физических объектов или процессов в цифровом пространстве. Этот термин известен еще с 2002 года и подразумевает создание цифровых двойников реальных объектов в виртуальном мире для оптимизации производственных процессов — например, определения оптимального расположения оборудования на заводе или оптимизации логистики.
ArrayIcon