Быстрый доступ к данным для обработки — ключевой запрос для многих компаний. И подходов к обеспечению требуемого уровня скорости доступа к данным много. Вместе с тем не всегда решения и технологии, ставшие «классическими», способны справляться с современными запросами.
В этой статье разбираемся, как обеспечивать быстрый доступ к данным и какие преимущества дает возможность их обработки в реальном времени.
Подходы к обеспечению быстрого доступа к данным и их оперативной обработки
Есть несколько способов обеспечить высокую скорость доступа к данным, а также обработки запросов. Среди них:
- Перенос данных и вычислений в оперативную память. Использование систем хранения данных в памяти (in-memory databases) позволяет значительно ускорить выполнение операций чтения и записи данных. Такие системы могут работать в несколько раз быстрее, чем традиционные хранилища данных на жестких дисках.
- Декомпозиция и распараллеливание. Разделение задачи на множество мелких частей и их параллельное выполнение может значительно ускорить общий процесс. Это применимо как в многопроцессорных системах, так и в системах с одним процессором, с использованием многопоточности.
- Технология репликации данных. Развертывание дополнительных копий базы данных (реплик) на разных серверах и распределение нагрузки между ними. Репликации могут использоваться для масштабирования и повышения производительности системы.
- Кэширование. Перенос наиболее часто используемых данных в отдельную систему для обеспечения быстрого доступа к ним. Это позволяет значительно сократить время выполнения операций и повысить производительность системы.
На практике подходы часто комбинируются — например, данные могут предварительно обрабатывать, сжимать и только после кэшировать. Вместе с тем одной из ключевых практик обеспечения быстрого доступа к данным зачастую считалось именно кэширование данных, которое:
- имеет понятные алгоритмы работы;
- позволяет гибко масштабировать системы;
- помогает оптимизировать использование ресурсов;
- снижает нагрузку на основное хранилище и повышает отказоустойчивость ИТ-систем за счет исключения «единой точки отказа».
Со временем принцип кэширования стал драйвером для развития технологий in-memory хранения, которые позволяют хранить данные прямо в оперативной памяти вместо использования жесткого диска. Таким образом, in-memory хранение делает работу с данными очень быстрой, так как они всегда под рукой и нет необходимости ждать, пока данные будут прочитаны с диска.
К решениям, реализующим такой подход к хранению данных, относят Memcached, Hazelcast, MongoDB и Redis. Причем Redis, как стабильная и быстрая БД, в какое-то время стала не только самым популярным решением данного класса, но и де-факто стандартом отрасли. Так было до определенного времени.
Переход от Redis к Tarantool
Redis отличает ряд свойств:
- Повышенная производительность, которую обеспечивает хранение данных в оперативной памяти сервера.
- Отсутствие языка SQL (вместо этого используется get/set интерфейс).
- Хранение данных в формате строк, списков, хешей и других структурированных представлений.
Redis выгодно выделялся параметрами и архитектурой среди аналогов. Как результат, многие компании строили свой стек для работы с данными с применением Redis.
Но по разным причинам (как на уровне законодательства РФ, так и на уровне реализации рисков vendor lock-in) российские компании столкнулись с невозможностью работать с Redis в будущем.
В результате перед бизнесом стал выбор между несколькими вариантами.
- Сделать свой форк Redis и внести его в реестр отечественного ПО. Но этот вариант слишком трудозатратен, поскольку подразумевает выделение отдельной команды разработчиков и администраторов для поддержания и регулярного обновления продукта.
- Использовать форк Redis от сторонней компании. В этом случае возникают риски vendor lock, а также зависимость от вендора продукта (в том числе в части выбранной им частоты и полноты обновления форка).
- Найти замену Redis среди in-memory инструментов. В идеале — со сходной функциональностью и уже внесенную в реестр отечественного программного обеспечения.
С точки зрения ресурсозатрат и рисков третий вариант с переходом на аналог — приоритетный. И таким аналогом вполне может стать российская БД Tarantool DB.
Для выбора Tarantool DB в качестве альтернативы Redis есть несколько весомых причин.
- Tarantool относится к тому же классу решений, что и Redis.
- Tarantool и Redis имеют сходный набор возможностей.
- Tarantool и Redis одинаково эффективно применяются в сходных сценариях.
- Tarantool DB входит в реестр отечественного ПО (реестровая запись № 23005 от 28.06.2024).
Сложности перехода (и как их преодолеть)
К сожалению, переход с Redis на Tarantool осложняет то, что протоколы взаимодействия приложений в Redis и Tarantool различаются. Чтобы обеспечить клиентам возможность бесшовного перехода с инструмента на инструмент, нам требовалось разработать «прокладку», с помощью которой Tarantool сможет работать со скриптами, написанными под Redis.
Благодаря опыту команды Tarantool мы сделали подобную реализацию, и сейчас мы можем без внесения изменений в скрипты подменять Redis на Tarantool. То есть обеспечили возможность абсолютно бесшовного перехода на новый стек без необходимости перестройки архитектуры, получения многочисленных согласований и изменения алгоритмов взаимодействия. Благодаря такому «коннектору», для клиентов всё сводится к запросу «раскатить Tarantool DB с Redis-протоколом».
После этого достаточно перезагрузить приложение, чтобы БД подключалась по новому адресу.
Действительно ли так важна возможность работы с данными в real-time
Всё сказанное выше о полезности Redis и Tarantool справедливо только в том случае, если с данными действительно важно работать в реальном времени. Давайте определим, что дает бизнесу возможность обрабатывать данные на лету:
- Быстрое реагирование. Обработка данных в реальном времени позволяет своевременно реагировать на любые чувствительные изменения, например в работе приложения или других систем. Это важно в ИТ, промышленности, телемедицине и не только.
- Безопасность и мониторинг. Использование инструментов для обработки данных в режиме реального времени позволяет осуществлять непрерывный мониторинг ситуации и оперативно реагировать на инциденты, в том числе в сфере киберугроз или для выявления отклонения от привычных паттернов.
- Улучшение обслуживания клиентов. Аналитическая обработка данных в реальном времени позволяет персонализировать предложения для клиентов. Например, интернет-магазины могут предлагать товары на основе предыдущих покупок клиента. Чаще это относится к системам, которые решают задачи аналитики для ритейла, телекома, банкинга.
- Предсказание и предотвращение проблем. С помощью анализа данных в режиме реального времени бизнес может предсказывать потенциальные проблемы и принимать меры до того, как они возникнут. Например, принятие решений в реальном времени помогает выявлять потенциальное мошенничество еще до выдачи кредита, оформления страховки или заключения договоров.
Что в итоге
Возможность принятия бизнес-решений в реальном времени становится все более востребованной во многих направлениях и практически критической необходимостью в сферах, где контакт компании и клиента непродолжительный, а «время жизни» его интересов незначительно. Соответственно, важность качества и своевременности взаимодействия с клиентами возрастает.
Чтобы соблюдать эти условия, нужно не только держать данные рядом, но и иметь возможность оперативно обрабатывать и даже анализировать их. Эффективно помочь в этих задачах могут продукты Tarantool.
Остались вопросы?
Расскажите о ваших задачах и узнайте больше
о реализации на платформе Tarantool