Какова максимальная длина аналитического запроса в браузере в байтах

Обновлено: 21.11.2024

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

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

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

Запрашивать меньше данных

Этот пункт слишком очевиден, поэтому его часто упускают из виду, но с него следует начинать в первую очередь. Вам действительно нужны данные, которые вы запрашиваете? И даже если вам нужны все эти данные, как часто они вам нужны?

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

И даже если вам нужно знать эту информацию, нужна ли она вам каждый день? Не могли бы вы перенести этот вопрос на другую панель инструментов, которая обычно проверяется раз в неделю или раз в месяц?

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

Кэшировать ответы на вопросы

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

Рис. 2. Включите кэширование для хранения результатов запросов, выполнение которых занимает много времени.

Вы можете настроить кэширование в настройках панели администратора. Эти параметры позволяют настроить минимальную продолжительность запроса для кэширования (чтобы кэшировать только длительные запросы), множитель времени жизни кэша (TTL) (чтобы указать, как долго кэш должен храниться) и максимальный кэш Размер записи (чтобы вы могли установить верхний предел объема кэшируемых данных).

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

Организуйте данные, чтобы предвидеть распространенные вопросы

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

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

Индексировать часто запрашиваемые столбцы

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

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

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

Кроме того, вы можете использовать инструменты аудита Metabase в Enterprise Edition, которые позволяют легко увидеть, кто какие запросы выполняет, как часто и сколько времени эти запросы возвращали записи.

После того как вы определили таблицы и столбцы, которые хотите индексировать, обратитесь к документации по вашей базе данных, чтобы узнать, как настроить индексы (например, вот индексирование в PostgreSQL).

Индексы легко настроить (и удалить). Вот основной формат оператора CREATE INDEX:

Поэкспериментируйте с индексированием, чтобы понять, как повысить производительность запросов. Если ваши пользователи обычно используют несколько фильтров для одной таблицы, попробуйте использовать составные индексы.

Репликация вашей базы данных

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

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

Денормализация данных

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

Материализировать представления: создавать новые таблицы для хранения результатов запроса

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

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

Разница между материализованным представлением и Common Table Expression (CTE, иногда называемым представлением) заключается в том, что материализованное представление сохраняет свои результаты в базе данных (и, следовательно, может быть проиндексировано). CTE по сути являются подзапросами и вычисляются каждый раз. Они могут кэшироваться, но не сохраняются в базе данных.

Однако материализованные представления потребляют ресурсы вашей базы данных, и вам придется обновлять представление вручную (обновить материализованное представление [имя]).

Заблаговременно агрегируйте данные с помощью сводных таблиц

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

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

Извлечь данные из JSON и вставить их ключи в столбцы

Часто организации хранят объекты JSON в одном столбце реляционной базы данных, такой как MySQL или PostgreSQL. Как правило, эти организации хранят полезные данные JSON из программного обеспечения для анализа событий, такого как Segment или Amplitude.

Хотя некоторые базы данных могут индексировать JSON (например, PostgreSQL может индексировать двоичные файлы JSON), вам все равно придется каждый раз получать полный объект JSON, даже если вас интересует только одна пара "ключ-значение" в объекте. Вместо этого рассмотрите возможность извлечения каждого поля из этих объектов JSON и сопоставления этих ключей со столбцами в таблице.

Рассмотрите базу данных, оптимизированную для аналитики

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

Традиционные реляционные базы данных, такие как PostgreSQL и MySQL, предназначены для обработки транзакций и относятся к категории баз данных для оперативной обработки транзакций (OLTP). Эти базы данных лучше подходят для использования в качестве операционных баз данных, например для хранения данных для веб-приложений или мобильных приложений. Они довольно хорошо справляются со следующим сценарием: кто-то отправляет вдумчивый, уместный и совсем не подстрекательский комментарий на ваш веб-сайт, ваше приложение отправляет запрос POST на ваш сервер, который направляет комментарий и метаданные в вашу базу данных для хранения. Базы данных OLTP могут обрабатывать большие объемы одновременных транзакций, таких как публикации комментариев, проверки корзины, обновления биографии профиля и т. д.

Основное различие между системами OLAP и OLTP заключается в том, что базы данных OLAP оптимизируют аналитические запросы, такие как суммирование, агрегирование и другие аналитические операции с большими объемами данных, а также массовый импорт (через ETL), в то время как базы данных OLTP должны балансировать большие объемы данных. читает из базы данных с другими типами транзакций: небольшими вставками, обновлениями и удалениями.

В OLAP обычно используется столбцовое хранилище. В то время как традиционные (OLTP) реляционные базы данных хранят данные по строкам, базы данных, использующие столбцовое хранилище (что неудивительно), хранят данные по столбцам. Эта стратегия хранения столбцов дает базам данных OLAP преимущество при чтении данных, поскольку запросам не нужно просеивать ненужные строки. Данные в этих базах данных обычно организованы в виде таблиц фактов и измерений с (часто массивными) таблицами фактов, содержащими события. Каждое событие содержит список атрибутов и ссылок внешнего ключа на таблицы измерений, которые содержат информацию об этих событиях: кто был вовлечен, что произошло, информация о продукте и т. д.

Metabase поддерживает несколько популярных хранилищ данных: Google BigQuery, Amazon Redshift, Snowflake и Apache Druid (специализируется на аналитике в реальном времени). Metabase также поддерживает Presto — механизм запросов, который можно использовать в паре с различными хранилищами данных, включая Amazon S3.

Приступая к работе с Metabase, не беспокойтесь о базовом хранилище данных. Но по мере роста ваших данных и распространения метабазы ​​следите за показателями, которые вы, возможно, захотите исследовать с помощью хранилища данных. Redshift, например, может запрашивать петабайты данных и масштабироваться до запроса исторических данных в Amazon S3. А Snowflake позволяет динамически масштабировать вычислительные ресурсы по мере роста вашей организации.

Дополнительная литература

Для получения дополнительных советов по повышению производительности ознакомьтесь с нашими статьями о масштабировании метабазы ​​и рекомендациях по SQL-запросам.

Если вы улучшили производительность информационной панели в своей организации, поделитесь своими советами на нашем форуме.

В этом документе блокируется отправка данных в Google Analytics с помощью протокола передачи зарегистрированных данных (Measurement Protocol).

Обзор

Процесс сбора статистики в Google Analytics с помощью Measurement Protocol включает два компонента:

  • Транспортировка: куда и как вы закрываете данные.
  • Полезная нагрузка: сама отправляет вам информацию.

Далее рассказывается о составе исходного компонента.

Транспортировка

URL конечной точки

Данные можно отправить по почте POST и GET.

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

Если значение не задано, эти параметры не вычисляются.

Данные передаются в виде экранированных запросов в параметрах URI. Длина всего закодированного URL не должна превышать 8000 Б.

Очистка кеша

Мы рекомендуем добавлять параметр очистки кеша событий:

Коды ответа

Строка надежных данных

Все данные, собираемые Google Analytics с помощью Measurement Protocol, передаются в виде строки, напоминающей параметры запроса запроса в URL. Параметры заменяются парой "ключ = значение", разделяемые символом & . Пример:

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

Полный список всех параметров, которые можно выбрать с помощью протокола передачи реестров данных, представленных в Справке по параметрам.

Значения, обязательные для всех файлов

Следующие параметры должны возвращаться всегда:

< td>Уникальный идентификатор, присвоенный пользователю.
Название Параметр Пример Описание
Версия протокола v v= 1 Версия протокола. должно быть равно 1 .
Идентификатор производства tid tid= UA-123456-1 Идентификатор ресурса Google Analytics, в который отправляются данные.
Идентификатор клиента cid cid= xxxxx
Тип обращения t t= pageview Тип развлечения.

Обратите внимание, что символ косой черты ( / ) был перекодирован в %2F .

Кодирование значений

Все, допустимые значения в Google Analytics, должны быть закодированы в UTF-8 и URL-кодированы. Например, вот как будет выглядеть ключ dp со значением /my page после кодирования в UTF-8 и URL-кодирования:

Если какие-либо символы закодированы неправильно, они будут заменены подстановочным символом Unicode xFFFD .

Значения, обязательные для разрешений типов

Некоторые параметры могут передаваться только с обнаружением типов насекомых. Например, тип запроса pageview (просмотр) требует, чтобы был задан параметр страницы пути к странице ( dp ). В Справке по параметрам запроса, какие параметры требуются для каждого типа преступников.

Максимальная длина

Для некоторых текстовых значений в протоколе измерений обеспечивается получение доступа в байтах. Например, длина потолка для поля др (URL перехода к документу) составляет 2048 байт. Если длина некоторых признаков допустима, они автоматически укорочены. Если многобайтовый символ слишком длинный, он будет удален.

Поддерживаемые типы данных

Каждое поле данных в протоколе измерений относится к высоким стандартам, и для каждого типа частных правил. Если какой-либо параметр им не подходит, этот параметр параметра не соответствует Google Analytics. Остальные параметры обработаны, как обычно.

Протокол измерения поддерживает различные типы данных:

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

Текст

Представляет строки. Тестовые поля проходят дополнительную обработку: начальные и конечные пробелы удаляются, а двойные, тройные и более характерные признаки (включая пробелы, табуляцию, разрывы строк и т. д.) преобразуются в одинарные. Это преобразование претерпело изменения над необработанным текстом до каких-либо сокращений. Например,

примет следующий вид:

Валюта

Предполагаемая сумма рассчитывается в валюте. Десятичная часть отделяется от целой точки. После десятичной точки может пройти до 6 знаков. Пример допустимого значения в поле валюты:

После отправки в Google Analytics будет удален весь текст до первой цифры, дефиса (-) или десятичной точки (.). Таким образом,

примет следующий вид:

логическое значение

Позволяет установить достоверность значений. Возможные варианты:

Целое число

Представляет целое число. Сохраняется как значение int64 со знаком.

Число

Представляет целое число или число с плавающей запятой.

Если не указано иное, содержимое этой страницы предоставляется по лицензии Creative Commons Attribution 4.0, а образцы кода — по лицензии Apache 2.0. Подробнее см. в Правилах сайта Google Developers. Java является зарегистрированным товарным знаком Oracle и/или ее дочерних компаний.

В этой статье показаны максимальные размеры и количество различных объектов, определенных в SQL Server 2016 и более поздних версиях.

В дополнение к информации в этой статье вам также могут быть полезны следующие ссылки:

Объекты Database Engine

Максимальные размеры и количество различных объектов, определенных в базах данных SQL Server или упоминаемых в инструкциях Transact-SQL.

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

Для ключа хеш-индекса нет жестких ограничений на размер.

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

25 экземпляров отказоустойчивого кластера при использовании общих дисков кластера в качестве хранилища.

Объекты утилиты SQL Server

Максимальные размеры и количество различных объектов, протестированных в утилите SQL Server.

< tr> < td>5 < td>1,000
Объект утилиты SQL Server Максимальные размеры/числа SQL Server (64-разрядная версия)
Компьютеры (физические компьютеры или виртуальные машины) на утилиту SQL Server 100
Экземпляры SQL Server на компьютер
Общее количество экземпляров SQL Server на одну утилиту SQL Server 200 *
Пользовательских баз данных на экземпляр SQL Server, включая приложения уровня данных 50
Общее количество пользовательских баз данных на одну утилиту SQL Server
Группы файлов на базу данных 1
Файлы данных на группу файлов 1
Файлов журнала на базу данных 1
Томов на компьютер< /td> 3

* Максимальное количество управляемых экземпляров SQL Server, поддерживаемых утилитой SQL Server, может варьироваться в зависимости от аппаратной конфигурации сервера. Сведения о начале работы см. в разделе Возможности и задачи служебной программы SQL Server. Контрольная точка служебной программы SQL Server доступна не во всех выпусках SQL Server. Список функций, поддерживаемых выпусками SQL Server, см. в разделах Функции, поддерживаемые выпусками SQL Server 2019, Функции, поддерживаемые выпусками SQL Server 2017, или Функции, поддерживаемые выпусками SQL Server 2016.

Объекты приложения уровня данных SQL Server

Максимальные размеры и количество различных объектов, протестированных в приложениях уровня данных SQL Server (DAC).

< tr>
объект DAC SQL Server Максимальные размеры/числа SQL Server (64-разрядная версия)
Базы данных на DAC 1
Объектов на DAC* Ограничено количеством объектов в базе данных или доступной памяти.

* Типы объектов, включенные в ограничение, включают пользователей, таблицы, представления, хранимые процедуры, пользовательские функции, пользовательский тип данных, роли базы данных, схемы и пользовательские типы таблиц.

Объекты репликации

Максимальные размеры и количество различных объектов, определенных в репликации SQL Server.

< tr>
Объект репликации SQL Server Максимальные размеры/числа SQL Server (64-разрядная версия)
Статьи (объединенная публикация) 2048
Статьи (моментальные или транзакционные публикации) 32 767
Столбцы в таблице * (публикация слияния) 246
Столбцы в таблице ** (SQL Снимок сервера или публикация транзакций) 1,000
Столбцы в таблице** (снимок состояния Oracle или публикация транзакций) 995< /td>
Байт для столбца, используемого в фильтре строк (публикация слияния) 1,024
Байт для столбец, используемый в фильтре строк (снимок или публикация транзакций) 8,000

* Если для обнаружения конфликтов используется отслеживание строк (по умолчанию), базовая таблица может включать не более 1024 столбцов, но столбцы должны быть отфильтрованы из статьи, чтобы было опубликовано не более 246 столбцов. Если используется отслеживание столбцов, базовая таблица может включать не более 246 столбцов.

** Базовая таблица может включать максимально допустимое количество столбцов в базе данных публикации (1024 для SQL Server), но столбцы должны быть отфильтрованы из статьи, если они превышают максимальное количество, указанное для типа публикации.

На этой справочной странице описывается, как реализовать свойства. Информацию о том, как props работает как измерение, см. в разделе prop в руководстве пользователя по компонентам.

Реквизиты — это настраиваемые переменные, которые вы можете использовать по своему усмотрению. Они не сохраняются после установленного попадания.

В большинстве случаев Adobe рекомендует использовать eVars. В предыдущих версиях Adobe Analytics props и eVars имели преимущества и недостатки друг перед другом. Тем не менее, Adobe улучшила eVars, и теперь они подходят почти для всех вариантов использования реквизита.

Если у вас есть проектный документ решения, вы можете назначить эти настраиваемые параметры значениям, характерным для вашей организации. Количество доступных реквизитов зависит от вашего контракта с Adobe. Доступно до 75 реквизитов, если это предусмотрено вашим договором с Adobe.

Реквизиты с использованием тегов в Adobe Experience Platform

Вы можете установить реквизиты либо при настройке расширения Analytics (глобальные переменные), либо в правилах.

  1. Войдите в пользовательский интерфейс сбора данных, используя свои учетные данные AdobeID.
  2. Нажмите на нужное свойство.
  3. Перейдите на вкладку "Правила", затем щелкните нужное правило (или создайте правило).
  4. В разделе «Действия» щелкните существующее действие Adobe Analytics — «Установить переменные» или нажмите значок «+».
  5. Установите в раскрывающемся списке «Расширение» значение «Adobe Analytics», а в поле «Тип действия» выберите «Установить переменные».
  6. Найдите раздел "Реквизиты".

Вы можете установить свойство на значение или элемент данных.Вы также можете скопировать значение из другой переменной Analytics.

s.prop1 – s.prop75 в редакторе AppMeasurement и пользовательского кода

Каждая переменная реквизита представляет собой строку, содержащую настраиваемые значения, характерные для вашей организации. Их максимальная длина составляет 100 байт; значения длиннее 100 байт автоматически усекаются при отправке в Adobe.

Список реквизита

Список реквизитов — это параметр, применяемый к реквизитам, который позволяет переменной содержать несколько значений в одном и том же обращении. Если этот параметр не включен или используется неправильный разделитель, переменная рассматривается как одно значение.

Настроить свойства списка

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

Обычными разделителями, используемыми в реализациях, являются запятая ( , ), двоеточие ( : ), точка с запятой ( ; ) или вертикальная черта ( | ). Вы можете использовать любой разделитель, который лучше всего подходит для вашей реализации.

Установить реквизиты списка

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

Список реквизитов по-прежнему ограничен максимальной длиной 100 байт. Списковые реквизиты легче достичь этого предела и быть усеченными, поскольку они могут содержать несколько значений. Рассмотрите возможность использования аббревиатур или сокращений значений, если вы можете превысить ограничение в 100 байт.

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

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