Медленно ли выполняются запросы при использовании традиционных таблиц базы данных? Как TDengine решает проблемы приложений «Sohu Fund»

Этот проект должен отображать чистую стоимость и доходы внутренних фондов (денежных средств) в режиме реального времени. На основе обеспечения соответствия функции отображения линейной диаграммы ему также необходимо добавить такие функции, как статистическое ранжирование и отображение страниц в предоставлять пользователям наиболее полные службы запросов в режиме реального времени. База данных MySQL, ранее использовавшаяся командой Sohu Fund, имела узкие места при работе с большими объемами данных. На этом фоне было решено попробовать новое решение на базе TDengine .  

Фон выбора

До использования TDengine мы использовали базу данных MySQL.

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

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

В то же время, испытав вышеизложенное, мы также сомневаемся в способности традиционной реляционной базы данных обрабатывать большие объемы данных. В это время мы узнали о TDengine. Его ядром является база данных временных рядов . Его специальный дизайн «одно устройство, одна таблица» соответствует работе над подтаблицей «один фонд, одна таблица» . Поэтому мы решили попробовать новое решение на базе TDengine.

Используйте опыт

После тщательного исследования и тестирования мы обнаружили:

Благодаря существованию «супертаблицы» моделирование данных стало очень понятным, и почти все запросы можно выполнить с помощью простого SQL, используя «супертаблицу» в качестве ядра.

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

Можно сказать, что предварительная подготовка к доступу к TDengine прошла очень гладко.

Медленно ли выполняются запросы при использовании традиционных таблиц базы данных?  Как TDengine решает прикладные проблемы «Sohu Fund» - База данных временных рядов TDengine Database

Для настройки кластера TDengine мы использовали три сервера 4C по 16 ГБ.

Инструкция создания базы данных выглядит следующим образом:

Медленно ли выполняются запросы при использовании традиционных таблиц базы данных?  Как TDengine решает прикладные проблемы «Sohu Fund» - База данных временных рядов TDengine Database

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

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

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

Супертаблица моделируется следующим образом:

Медленно ли выполняются запросы при использовании традиционных таблиц базы данных?  Как TDengine решает прикладные проблемы «Sohu Fund» - База данных временных рядов TDengine Database

Медленно ли выполняются запросы при использовании традиционных таблиц базы данных?  Как TDengine решает прикладные проблемы «Sohu Fund» - База данных временных рядов TDengine Database

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

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

select time, code, name, manager_id, manager_name, unit_net_value, pre_unit_net_value, accumulate_net_value, pre_day_rate, pre_week_rate, pre_month_rate, pre_three_month_rate, pre_half_year_rate, pre_year_rate, pre_cur_year_rate, pre_start_rate, last_time, last_unit_net_value, last_accumulate_net_value, asset_size from fund_net_value where time = #{date} and (type = '003009' or type = '003010')

Медленно ли выполняются запросы при использовании традиционных таблиц базы данных?  Как TDengine решает прикладные проблемы «Sohu Fund» - База данных временных рядов TDengine Database

В качестве другого примера, запрос текущего рейтинга чистой стоимости фонда и рейтинга доходов может быть достигнут с помощью простого SQL:

select time, code, name, manager_id, manager_name, unit_net_value, pre_unit_net_value, accumulate_net_value, pre_day_rate, pre_week_rate, pre_month_rate, pre_three_month_rate, pre_half_year_rate, pre_year_rate, pre_cur_year_rate, pre_start_rate, last_time, last_unit_net_value, last_accumulate_net_value, asset_size from fund_net_value where time = #{date} and order by ${column} ${sort} limit #{offset}, #{size}

Медленно ли выполняются запросы при использовании традиционных таблиц базы данных?  Как TDengine решает прикладные проблемы «Sohu Fund» - База данных временных рядов TDengine Database

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

напиши в конце

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

Профиль компании

Sohu — известная в Китае комплексная интернет-компания. Ее основные направления деятельности включают новые медиа, коммуникации и мобильные дополнительные услуги, объединяя различные функции, такие как развлекательный центр, спортивный центр, центр моды и культурный центр.

об авторе

Вупенг, старший инженер-разработчик Sohu Intelligent Platform.

Microsoft официально запускает новое «приложение для Windows» .NET 8, последняя версия LTS. Xiaomi официально объявила, что Xiaomi Vela имеет полностью открытый исходный код, а базовым ядром является NuttX Alibaba Cloud 11.12. Причина сбоя раскрыта: Служба ключей доступа (Access) Ключевое) исключение Vite 5 официально выпустил отчет GitHub: TypeScript заменяет Java и становится третьим по популярности языком Предлагает вознаграждение в сотни тысяч долларов за переписывание Prettier на Rust Спрашивает автора открытого исходного кода: «Проект еще жив?» Очень грубо и неуважительный Bytedance: использование искусственного интеллекта для автоматической настройки операторов параметров ядра Linux. Магическая операция: отключить сеть в фоновом режиме, деактивировать широкополосную учетную запись и заставить пользователя сменить оптический модем.
{{o.name}}
{{м.имя}}

рекомендация

отmy.oschina.net/u/4248671/blog/10141605
рекомендация