Введение | We Анализ — это платформа анализа данных, официально запущенная WeChat Mini Program для поставщиков услуг мини-программ, в которой портретное понимание является очень важным функциональным модулем. Инженер-разработчик WeChat Чжун Вэньбо расскажет We Проанализировать, как устроен каждый модуль системы визуализации, представить существующий Базовый модуль После этикеток сосредоточьтесь на Модуль. группы Разработано пользователями. Надежда, связанная с Технической идеи реализации могут вас вдохновить.
Оглавление
1 Общие сведения
1.1 Краткое описание системы визуализации
1.2 Цели проектирования системы изображений
2 Общий обзор системы визуализации
3 Базовый модуль этикеток
3.1 Описание функции
3.2 Техническая реализация
4 Модуль группы пользователей
4.1 Описание функции
4.2 Прогноз толпы в режиме реального времени
4.3 создание толпы
4.4 приложение для отслеживания толпы
5 Резюме
Предыстория
We Analysis — это платформа анализа данных, официально запущенная Mini Programs для поставщиков услуг мини-программ, в которой портретное понимание является важным функциональным модулем. Эта функция предоставит пользователям базовые возможности анализа портретных тегов и предоставит настраиваемые функции группировки пользователей для удовлетворения более персонализированных потребностей анализа и поддержки большего количества портретных сценариев применения.
До этого исходный портретный анализ MP включал только базовые портреты, что было эквивалентно анализу только основных атрибутов рынка мини-программ за фиксированный период, но не мог анализировать и применять его к конкретным группам людей или индивидуальным группам. Пользователи, находящиеся на вершине платформы, надеются, что платформа предоставит полные возможности анализа изображений. В дополнение к самым базовым атрибутам портрета он также предоставляет пользователям более богатые теги и более гибкие возможности приложений для групп пользователей. Поэтому мы анализируем планы по оптимизации соответствующих возможностей.
общий,Платформа поддерживает гибкие теги и методы создания толпы.,Пользователи могут произвольно выбирать нужную группу людей по собственным представлениям.,Выбирайте крауд-пакеты вручную или автоматически в зависимости от разных периодов. Кроме того, он также поддерживает анализ отслеживания толпы.,Crowd существует в различных сценариях применения и многом другом.
Общий обзор системы визуализации
система изФорма продуктаиз Начиная с перспективы,существовать Следующее подразделяется на2модули для объяснения——Они естьБазовый модуль этикетоки Модуль группы пользователей。
Базовый модуль этикеток
Этот модуль в основном отвечает потребностям пользователя в базовом анализе портретов.,Ожидается, что он удовлетворит требования большинства пользователей со средним и длинным хвостом к портретам.из Используйте требования к глубине。основнойпоставлятьиздаАнализ основных тегов для рынка мини-программ и ориентированных на определенные группы людей(как активный:1активный день、Активен 7 дней、Активен в течение 30 дней、180активный день)из Специфический анализ тегов。Как показано ниже:
Из описания приведенной выше функции видно, что функция характеризуется управляемым диапазоном официально определенных данных и поддерживает анализ конкретных меток для конкретных групп людей.
Данные анализа конкретных меток для конкретных групп рассчитываются с использованием автономных задач улья T + 1. Процесс заключается в следующем.
Рассчитайте статистику официальных конкретных меток, статистику конкретных групп людей и данные конкретных групп людей, пересекающих определенные метки.
В настоящее время объем предварительно вычисленных данных, экспортируемых в TDSQL со всей платформы, достигает одного миллиарда уровней с более чем 100 таблицами данных и сотнями терабайт фактического хранилища. Общие функции TDSQL относительно обширны. Разработчикам необходимо только дополнять и разрабатывать инструменты управления жизненным циклом данных. Методам удаления следует уделять то же внимание, что и MySQL.
Если для хранения используется двигатель типа КВ, ключ хранения должен быть разумно спроектирован в соответствии с характеристиками КВ. На стороне запроса Key монтируется и собирается, и на запрос отправляется запрос BatchGet. Логика разработки всего процесса будет относительно сложной, и больше внимания необходимо уделять дизайну Key. Чтобы реализовать диаграмму тенденций только с сводными данными, сохраненный ключ должен быть оформлен в аналогичном формате: {Дата} # {Мини-программа} # {Тип индикатора}.
Модуль группы пользователей
Этот модуль в основном предоставляет возможность настройки групп пользователей.Группировка пользователей по пользователюизсвойствоиповеденческие характеристики Воля Классифицировать группы пользователей,Чтобы пользователи могли наблюдать, анализировать и применять это. Настраиваемая группировка пользователей может удовлетворить персонализированный анализ и операционные потребности клиентов среднего уровня.,Например, клиент хочет увидеть последний раз 618 Для пользователей, которые участвовали в определенной деятельности, сравните разницу между последующей активной торговой тенденцией и рынком, или клиент хочет проверить и сравнить чувствительность определенных групп к купонам, выбрать группу и затем пройти мимо; AB Экспериментально проверьте. Существует множество приложений, подобных приведенным выше.
существуют функциональный дизайн,Платформа должна быть богатой данными, гибкой в правилах и быстрой в запросах.,Необходимость поддержки обширных данных выбора толпы,И предустановленные ярлыки、тег толпы、поведение платформы、Настраиваемое поведение отчетов и т. д.。Гибкая поддержкаиз Этикеткаисоздание Метод толпы позволяет клиентам произвольно выбирать желаемую группу людей в соответствии с их собственными идеями, вручную или автоматически выбирать пакеты толпы в соответствии с разными периодами, а также поддерживает анализ отслеживания толпы и возможности многосценарного применения.
Прогноз толпы в режиме реального время основано на определяемых пользователем правилах и подсчитывает, сколько пользователей выполнило правило в рамках текущего правила. Взаимодействие с продуктом обычно выглядит следующим образом:
Чтобы клиенты могли выбирать нужные группы людей в соответствии со своими идеями, платформа поддерживает богатые источники данных. Объем данных общего портрета велик. Вертикальная таблица предустановленных портретов меток в автономной файловой системе HDFS достигает почти одного триллиона в день. Поведение платформы составляет десятки миллиардов в день, а размеры настроенных отчетов — десятки. миллиардов/день.
Как спроектироватьЭкономьте место и ускоряйте запросыда Важные соображенияизодин из вопросов。грубоиз Идеида:Изображение предустановленных ярлыков Преобразовать в Bitmap Сжатое хранилище, предварительное агрегирование сведений о поведении платформы и значений перечисления измерений. ID Кодирование с автоинкрементом: строка преобразуется в целое число данных для экономии места для хранения. В то же время на уровне продукта добавляется кнопка включения для импорта последних данных после активации для контроля потребления хранилища. Подробности следующие.
Например, для активного тега 10002 каждое значение тега кодируется следующим образом:
Чтобы закодировать определенную группу людей, базовая группа используется в качестве обязательного условия фильтра для ограничения круга пользователей:
Данные тегов существуютоффлайнизхранилищеон,использоватьвертикальный столизхранилище Способ。структура таблицы Как показано ниже,Теги могут создаваться параллельно, не затрагивая друг друга. использовать вертикальный стол при проектировании конструкции,Преимущество в том, что нет необходимости разрабатывать большую таблицу изображений.,Даже если в задаче произойдет аномальная задержка, это не повлияет на вывод других тегов. Широкая таблица портретной ориентации должна дождаться завершения заполнения всех тегов портретной ориентации, прежде чем можно будет начать создание данных широкой таблицы.,Это приведет к повышенному риску задержки данных. Когда вам нужно добавить или удалить теги,Структуру таблицы необходимо изменить. поэтому,Существует ли поддержка механизма линейного изхранилища, соответствующая структуре изхранилищ в режиме автономной вертикальной таблицы?,Станьте очень важным моментом рассмотрения.
При хранении с использованием больших широких таблиц, таких как хранилище Elasticsearch и Hermes, хранение тегов изображений, которые необходимо использовать онлайн, может начаться только после того, как все теги изображений, которые необходимо использовать онлайн, будут обработаны в процессе автономного расчета. Например, ClickHouse и Doris могут принять структуру таблицы, соответствующую вертикальной таблице. После завершения обработки этикетки ее можно немедленно отправить в онлайн-кластер, тем самым снижая риск общей задержки, вызванной задержкой одной этикетки.
CREATE TABLE table_xxx(
ds BIGINT COMMENT 'дата данных',
label_name STRING COMMENT «Имя тега»,
label_id BIGINT COMMENT 'идентификатор тега',
appid STRING COMMENT 'Приложение мини-программы',
useruin BIGINT COMMENT 'useruin',
tag_name STRING COMMENT 'имя тега',
tag_id BIGINT COMMENT 'tag id',
tag_value BIGINT COMMENT 'значение веса тега'
)
PARTITION BY LIST( ds )
SUBPARTITION BY LIST( label_name )(
SUBPARTITION sp_xxx VALUES IN ( 'xxx' ),
SUBPARTITION sp_xxxx VALUES IN ( 'xxxx' )
)
Если под метками понимать группу пользователей, то все пользователи, соответствующие определенному значению определенной метки Идентификатор (тип UInt) составляют один за другимизтолпа。Bitmap Он используется для отображения отношений тег-пользователь хранилища, очень идеальная структура. данных,последняя потребностьизда构建出每个Этикеткаиз Каждое значение соответствуетиз Растровое изображение. Например, пол группы меток соответствует группам пользователей мужского и женского пола.
Половая маркировка: Мужской -> Пакет толпы пользователей мужского пола, женский → Пакет для женщин-пользователей.
В то же время значение перечисления измерения будет закодировано с автоматическим приращением идентификатора, с целью снижения использования памяти, производительности записи и чтения. С точки зрения эффекта команда может сэкономить 60% стоимости перечислимых типов; путем кодирования идентификаторов словаря по сравнению с исходным типом символов в онлайн-хранилище, одновременно увеличивая скорость запросов в 2 раза при том же объеме данных.
На основе вышеуказанных исследований,командаиспользовать ClickHouse какизображениехранение данныхдвигатель。существовать ClickHouse используется в RoaringBitmap как Bitmap решение. Программа поддерживает богатый Bitmap Операционная функция может быть очень гибкой и удобной для определения веса и статистических операций мощности, как показано ниже.
использовать RoaringBitmap(RBM) Сжатие разреженных растровых изображений может уменьшить использование памяти и повысить эффективность.Программаизядерный心Идеида,Воля 32 битовое беззнаковое целое число в порядке старшинства 16 Битовое ведро, то есть их может быть не более 216=65536 ведро, называется контейнер. При хранении данных в зависимости от высоты данных 16 бит найден container (Если его не удастся найти, будет создан новый), а затем установите низкий уровень 16 немного положить container середина. То есть, RBM Просто много container Коллекция . Подробную информацию см. в разделе «Растровое изображение эффективного сжатия». RoaringBitmap принципы и приложения.
Конкретные шаги заключаются в том, что задача Spark сначала выполнит обработку сегментов в соответствии с идентификатором, а затем сгенерирует растровое изображение для каждого значения тега в каждом сегменте, чтобы гарантировать совместимость настроенного метода сериализации с RBM в ClickHouse. Растровое изображение, обработанное Spark, преобразуется в строковый тип, а затем записывается в таблицу онлайн-тегов. В этой таблице бизнес-группа определяет поле материализованного столбца для фактического хранения битового изображения. В процессе записи сериализованная строка Bitmap преобразуется в структуру данных AggregateFunction (groupBitmap, UInt32) в ClickHouse с помощью функции base64Decode.
Конкретная структура таблицы следующая:
CREATE TABLE xxxxx_table_local on CLUSTER xxx
(
`ds` UInt32,
`appid` String,
`label_group_id` UInt64,
`label_id` UInt64,
`bucket_num` UInt32,
`base64rbm` String,
`rbm` AggregateFunction(groupBitmap, UInt32) MATERIALIZED base64Decode(base64rbm)
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/xxx_table_local', '{replica}')
PARTITION BY toYYYYMMDD(toDateTime(ds))
ORDER BY (appid, label_group_id, label_id)
TTL toDate(ds) + toIntervalDay(5)
SETTINGS index_granularity = 16
для Производительность запросовиз Гарантировать,команда Всегда гарантирую все ЗапросвсесуществоватьОсновная поверхность землиЗаканчивать。Уже представлено вышеданныесуществовать При складировании,будет основан на том же пользователе ID из hash Правила группирования экспортируются в соответствующий узел компьютера. Используя размерное числовое кодирование, протестируйте числовое кодирование и сравните методы символов. Запрос увеличился более чем в 2 раза. Соответствие тегам из толпы Преобразовать в Bitmap Способы борьбы с пользователями по разным правилам будут Преобразовать в конце концов в Игла Bitmap из Пересечение и разность дополняют операцию.
дляповедение платформы,Если существующий пользователь использует нечеткое сопоставление из,Таблица сопоставления идентификаторов для преобразования видимых пользователем измерений в коды измерений. ID, затем закодированный ID и правила построения SQL-запроса.,Затем через объединитель правил передаются различные подзапросы, чтобы окончательно определить, соблюдает ли пользователь правило толпы.
Разработать интерфейс сервиса на базе RPC.:Запросиз Сервисный интерфейсиспользовать rpc рамки для развития.
существует служба передачи данных. Верхний уровень — это команда промежуточного программного обеспечения данных.,Унифицированное управление потоками, асинхронные вызовы, мониторинг вызовов и проверка безопасности параметров.,Особенно при запросе нескольких правил для приложений с большим количеством пользователей.,Кропотливый,поэтому бизнес-команда настроила детальное управление потоками,Убедитесь, что запросы запросов в порядке, а услуги стабильны и доступны.
Судя по данным производительности, у него большое количество пользователей. app Вообще говоря, правил много, а ждать так долго все равно приходится десятки секунд. поэтому имеет большое количество пользователей для этой группы пользователей Приложение, стратегия использования бизнес-команды — это выборка. За счет выборки скорость может быть значительно улучшена, а ошибка точности прогнозирования невелика и находится в пределах допустимого диапазона.
Создание пакета толпы в реальном времени аналогично описанию, приведенному выше, с учетом оценки размера толпы в реальном времени, разница заключается в том, что существует последнее создание. толпы требует записи пользовательских данных выбранного пакета толпы в хранилище, а затем возврата размера пакета толпы пользователю. То же, что существует Основная поверхность Земля, генерируйте пакеты из толпы и записывайте их на одну и ту же машину, сохраняя согласованность правил группирования.
Создание клиентов и рутинизация крауд-пакетов,Нужно считать каждый день。Как непрерывно отслеживать тенденции анализа, не вызывая чрезмерной вычислительной нагрузки на кластер?командаиз做法利用Оставлять Проволока Гипермасштабные вычисленияизспособность,существуют Начинайте все задачи по крауд-вычислению рано утром,Это снижает вычислительную нагрузку на онлайн-кластер ClickHouse. Все мини-программы по созданию клиентов и рутинные расчеты пакетов сосредоточены в одной задаче, выполняемой ранним утром.,Прочитайте данные один раз,Завершение расчетов по всем крауд-пакетам,Экономьте вычислительные ресурсы в максимальной степени,Подробный проект выглядит следующим образом:
первый,команда Вечеринка ВоляПолные данные(Этикеткасвойстводанные+Поведениеданные)Фильтрация по степени детализации мини-программы и временному диапазону выбора.,Сохраняйте достоверные данные;
Во-вторых,Предварительные агрегированные данные,Перевести данные о поведении пользователей за определенный период времени,Данные зеркального отображения атрибутов тегов агрегируются в соответствии с степенью детализации мини-программы и пользователя.,Окончательные данные будут такими: для каждой мини-программы и одного пользователя будет только одна строка данных, а затем краудсорсинговый расчет;,Фактически, цель состоит в том, чтобы увидеть, соответствуют ли поведение и характеристики атрибутов тегов этого пользователя в течение определенного периода времени определенным клиентом правилам групповой упаковки;
наконец,Агрегируйте данные с пользовательской степенью детализации и выполняйте сложное сопоставление правил.,ядерный Основная задача — получить атрибуты поведения и групповых тегов пользователя в течение определенного периода времени.,Определите, каким группам людей этот пользователь удовлетворяет определяемым пользователем правилам.,Если пользователь доволен, он принадлежит к этой группе пользователей.
существуют После выбора группы людей согласно правилам пользователя,Единое отслеживание общих показателей (таких как активность, транзакции и т. д.) для толпы. Весь процесс обрабатывается с использованием автономных задач,Будет экспортировать генерируемые в реальном времени пакеты из существующего линейного хранилища.,И автономная пакетная генерация синхронизированных пакетов толпы.,Собрать вместе,Таблица соответствующих показателей посткорреляции,Вывод в Проволоканачальство OLTP хранилище выполняет линию существования из анализа запросов. Среди них экспорт существующего пакета линии толпы будет осуществляться ранним утром в свободное время путем преобразования толпы RBM Преобразовать в данные пользователя ID。
Конкретный метод: arrayJoin(bitmapToArray(groupBitmapMergeState(rbm))).
Базовый анализ Большинство проводит базовый анализ меток для настраиваемой группы пользователей, например распределение меток по провинциям, городам, транзакциям и т. д. группы. Анализ поведения толпы, анализ различных событий поведения толпы и т. д.
существует эксперимент AB в эксперименте из толпы,Пользователи выбирают назначенную группу людей с помощью правил (например, если они хотят проверить, соответствует ли определенная область определенным условиям и с большей вероятностью люди в определенной области будут участвовать в этой деятельности).,Сравните соответствующие показатели с контрольной группой.,чтобы проверить гипотезу.
Подвести итог
В этой статье рассматривается We Дизайнерские идеи для каждого модуля системы портретного анализа. В качестве базового модуля существования бизнес-команда выбрала Tencent Cloud исходя из его функциональных характеристик. TDSQL каксуществовать линейный движок хранилища данных, который использует все предварительно вычисленные данные TDSQL Вынесите хранилище. существует модуль анализа толпы, с целью достижения гибкости изготовления толпы, анализ и приложения, используемые бизнес-командами ClickHouse какизображениеданныеизхранилищедвигатель,Разработайте сервисы верхнего уровня на основе этой функции хранилища.,Для достижения оптимальной производительности.
Последующие мероприятия, небольшая программа We Возможности существующего продукта системы портретного анализа будут продолжать обогащать функции и возможности, одновременно расширяя новые сценарии применения. Вышеупомянутое We По всем идеям дизайна и реализации модуля системы портретного анализа заинтересованные читатели могут общаться в области комментариев.
-End-
Автор оригинала|Чжун Вэньбо
Технический редактор|Чжун Вэньбо, Се Хуэйчжи
Вас могут заинтересовать работы инженеров Tencent
| Углубленный анализ ChatGPT: эволюционная история семейства GPT.
| Чат инженера Tencent ChatGPT Техническая «Антология»
| Время полнотекстового поиска в WeChat сократилось на 94%? Мы использовали это решение
| Как решить проблему зависания прокрутки ячейки на 10 Вт? Документы Tencent из 7 советов
Технический глухой короб:внешний интерфейс|задняя часть|ИИ и алгоритмы|Эксплуатация и обслуживание|Инженерная культура
Ответьте на «мини-программу» в фоновом режиме, чтобы получить дополнительную информацию, рекомендованную автором этой статьи.
🔹Следуй за мной и зажги звезду🔹
Посмотрите технологии Tencent и перенимайте опыт экспертов в 20:00 по будням.
Нравиться|делиться|существоватьсмотреть Передавайте хорошие технологии