Тарификация BigQuery

02 мая, 2024

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

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

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

  1. хранение данных;
  2. обработка запросов (включая запросы SQL, пользовательские функции, скрипты и некоторые операторы языка манипулирования данными (DML) и языка определения данных (DDL)).

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

Однако не стоит забывать про ограничения ежедневного экспорта для стандартных ресурсов GA4 - до 1 млн событий в день. Если объем загружаемых данных для вашего проекта превышает это число, вы можете перейти на Google Analytics 360 (там это ограничение составляет 20 миллиардов событий в день) или отфильтровать какие-то данные о событиях из экспорта вручную.

BigQuery взимает плату и за другие операции, включая использование BigQuery Omni, BigQuery ML, BI Engine, а также потоковые операции чтения и записи.

Но в нем также есть бесплатные операции и уровень бесплатного использования. Например:

  • пакетная загрузка данных (batch load data);
  • копирование данных (copy data) - не нужно платить за копирование данных из одной таблицы BigQuery в другую. Однако при копировании таблиц между регионами взимается плата за репликацию данных;
  • экспорт данных (export data) - не нужно платить за экспорт данных из других сервисов, например из Google Analytics;
  • удаление операций (delete operations) - удаление наборов данных (датасетов), таблиц, представлений, партиций и функций;
  • операции с метаданными (metadata operations) - чтение данных из метатаблиц __PARTITIONS_SUMMARY__ и __TABLES_SUMMARY__.

К каждому созданному проекту в Google Cloud прикреплен платежный аккаунт. За все расходы, связанные с работой с BigQuery, выставляется счет за услуги.

Вы можете просматривать расходы BigQuery, используя страницу отчетов Cloud Billing в консоли Google Cloud:

Cloud billing

Цена на хранение данных — это стоимость хранения данных, которые вы загружаете в BigQuery. Вы платите за активное хранение (active storage) и долгосрочное хранение (long-term storage).

  • Активное хранилище включает в себя любую таблицу или раздел таблицы, которые были изменены за последние 90 дней;
  • Долгосрочное хранение включает любую таблицу или раздел таблицы, которые не были изменение в течение последних 90 дней. Цена хранения такой таблицы автоматически снижается примерно на 50%. и применяется только к хранилищу BigQuery, а не к данным, хранящимся во внешних источниках данных, таких как Bigtable, Cloud Storage и Google Drive.

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

Существует еще так называемое хранилище метаданных (metadata storage), которое включает хранилище логических и физических метаданных для наборов данных, таблиц, разделов, моделей и функций, хранящихся в метахранилище BigQuery.

В BigQuery различают два типа активного хранения данных - Active logical storage и Active physical storage.

Active logical storage - это уровень логического представления данных. Он включает в себя метаданные и схемы, которые описывают, как данные организованы и структурированы в таблицах. Логическое хранение позволяет пользователям взаимодействовать с информацией, используя SQL-запросы, без необходимости беспокоиться о том, как эти данные физически хранятся на диске. Логическое хранилище может включать в себя представления, результаты запросов, временные таблицы и т.д.

Active physical storage - это уровень физического хранения данных. Он включает в себя фактические байты данных, которые хранятся на дисках Google. Физическое хранилище отвечает за то, как данные размещаются, сжимаются и оптимизируются для быстрого доступа и обработки. Пользователи не взаимодействуют напрямую с физическим хранилищем; вся работа осуществляется через логический уровень.

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

Плата за Active logical storage составляет 0,02$ за 1 ГиБ (гибибайт) в месяц, а за Active physical storage - 0,04$ за 1 ГиБ в месяц. Цена за Long-term logical storage - 0,01$ за 1 ГиБ в месяц, а за Long-term physical storage - 0,02$ за 1 ГиБ в месяц. Первые 10 ГиБ хранилища в месяц предоставляются бесплатно.

Тарификация цен за хранение данных

Использование хранилища рассчитывается в гибибайтах в месяц (GiB в месяц), где 1 GiB равен 230 байтам (1024 MiB). Аналогично, 1 тебибайт (TiB) равен 240 байтам (1024 GiB). Конечное значение использования – это произведение объема данных в гибибайтах и времени использования хранилища в месяцах.

Все перечисленное относится к хранению данных в BigQuery. Однако, при работе с данными Google Analytics 4, нас также интересует обработка запросов, так как в будущем мы будем выполнять множество различных SQL-команд для анализа неагрегированной статистики счетчика.

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

BigQuery предлагает на выбор две модели ценообразования для выполнения запросов:

  1. Цена за запросы (On-demand). Взимается плата за количество байтов, обработанных каждым запросом. Первый 1 ТиБ (тебибайт) в месяц предоставляется бесплатно, далее - 6,25$ за ТиБ. Минимальный объем обработанных данных составляет 10 МБ на каждую таблицу, на которую ссылается запрос, и минимальный объем обработанных данных составляет 10 МБ на каждый запрос. Таким образом, если запрос обращается к одной таблице и обрабатывает 5 МБ данных, с вас будет списана оплата за 10 МБ;

Цена за запросы (On-demand)

Цены за обработку запросов в BigQuery указаны в тебибайтах (ТиБ, TiB), а не терабайтах (ТБ, TB). 1 тебибайт [ТиБ] = 1,09951162778 ~ 1,1 [ТБ]. Между размером тебибайта и терабайта разница составляет примерно 10%. А размер ваших сохраненных данных и размер данных, обработанных вашими запросами, рассчитывается в гибибайтах (ГиБ), где 1 ГиБ равен 230 байт (1024 МиБ). Аналогично, 1 тебибайт (ТиБ) равен 240 байт (1024 ГиБ).

Обратите внимание на следующие ограничения:

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

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

Безусловно, с данными Google Analytics 4 можете работать не только вы, но и целая команда или даже отдел. И в крупных компаниях это так и происходит. Несколько человек может одновременно работать с одним проектом и выполнять разные SQL-запросы, тем самым быстрее расходовать выделенные вам бесплатные лимиты.

Давайте рассмотрим простой пример. Возьмем один SQL-запрос и вставим его в редактор BigQuery. В правом верхнем углу отобразится количество потребляемых байтов (сколько именно данных этот запрос обработал):

Размер обрабатываемых данных

В этом случае при выполнении запрос будет обрабатывать 3,37 ГБ. И это только один запрос. А теперь представьте, что несколько человек из вашей компании в течение дня выполняют множество таких запросов. В результате выделенный вам бесплатный 1 ТиБ в месяц закончится очень быстро. Далее – вы начнете расходовать средства согласно выбранной тарификации.

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

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

Maximum bytes billed

На скриншоте выше на уровне запроса выставлено ограничение в 100000000 байт (~ 100 мегабайт). Если ваш итоговый SQL-запрос будет превышать это установленное значение, он будет отклонен без взимания платы. Если значение не указано, выставленные байты будут установлены на уровне проекта по умолчанию.

Limit the number of query bytes processed

А вот так выглядит пример установки пороговых значений контроля бюджета в одном из моих проектов – BillingBudgets and alerts:

Billing – Budgets and alerts

А установленные по умолчанию квоты и лимиты на проект Google Cloud находятся в разделе IAM & Admin – Quotas:

IAM & Admin – Quotas

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

  1. Цена за вычислительные мощности (Capacity pricing). Вы приобретаете слоты (=виртуальные процессоры), то есть выделенную вычислительную мощность, которую можете использовать для выполнения запросов.

Слот (Slot) — это виртуальная вычислительная единица, используемая BigQuery для выполнения SQL-запросов или других типов заданий. Во время выполнения запроса BigQuery автоматически определяет, сколько слотов используется запросом. Количество используемых слотов зависит от объема обрабатываемых данных, сложности запроса и количества доступных слотов.

Емкость слота BigQuery:

  • доступна в трех редакциях - Standard, Enterprise и Enterprise Plus;
  • применяется к расходам на запросы, включая операторы BigQuery ML, DML и DDL;
  • не распространяется на расходы на хранение или расходы на BI Engine;
  • не распространяется на streaming insert и использование BigQuery Storage API;
  • возможно использовать автомасштабирование BigQuery;
  • тарифицируется посекундно, минимальный срок - одна минута.

Количество используемых слотов зависит от объема обрабатываемых данных, сложности запроса и количества доступных слотов. Оплата происходит по мере использования слотов:

- в стандартной версии - 0,04$ / слот в час:

Цена за вычислительные мощности (Capacity pricing) - Standard Edition

- в корпоративной версии - 0,06$ / слот в час:

Цена за вычислительные мощности (Capacity pricing) - Enterprise Edition

Редакции Enterprise и Enterprise Plus доступны на период в один или три года.

Вы можете переключаться между моделями цены за запросы (On-demand) и цены за вычислительные мощности (Capacity pricing) в любое время. Вы также можете использовать комбинацию этих двух моделей.

Для оценки стоимости хранения данных и выполнения запросов в BigQuery вы можете использовать специальный калькулятор. Для этого перейдите по ссылке. На открывшейся странице нажмите на кнопку Add to estimate:

Google Cloud pricing calculator

В открывшемся окне выберите BigQuery:

BigQuery

Теперь вы можете выбрать настроить конфигурацию и рассчитать итоговую стоимость использования BigQuery для своего проекта. Для этого в выпадающем списке выберите модель ценообразования – за запросы или за вычислительную мощность (слоты):

Выбор модели ценообразования

Самый простой способ ценообразования – это именно оплата за запросы (On-Demand). В качестве примера выберем его. Далее вам необходимо указать регион для своих данных (тот, который вы выбрали при настройке связи Google Analytics 4 и BigQuery).

Как вы уже знаете, Google предоставляет бесплатно:

  • 10 ГиБ в месяц для хранения данных;
  • 1 ТиБ в месяц на запросы.

Пока вы не превысите эти лимиты, деньги с вашей карты списываться не будут. Поэтому если вы в полях Amount of data queried и Active logical storage не будете дополнительно вводить никакие значения, то стоимость обслуживания составит 0$ в месяц:

Расчетная стоимость обслуживания

Для небольших проектов, к которым относится и мой сайт osipenkov.ru, ежемесячная стоимость использования BigQuery будет невысокой.

Активировав расширенные настройки (Advanced settings), вы сможете задать значение для каждого компонента:

Расширенные настройки калькулятора Google Cloud

Аналогичный расчет стоимости можно выполнить и для хранения данных.

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

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

Любые данные, которые вы храните в Google BigQuery (данные о рекламе, Google Analytics 4, из CRM-системы и т.д.), занимают определенное количество места. И эти данные, так же, как и файлы на вашем компьютере, хранятся на дисках. Только дома – это жесткий диск C, D, E и т.д., а в облаке – это те же самые компьютеры (сетевое и серверное оборудование), которые расположены в дата-центрах (центрах обработки данных, ЦОД) Google по всему миру и подключены к внешним сетям, как инженерным, так и телекоммуникационным. Благодаря этому вы можете иметь распределенный доступ к информации компании круглогодично 24/7.

Дата-центры Google

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

Жесткие диски на вашем компьютере имеют размер. Например, 512 ГБ, 1 ТБ или 2 ТБ. Когда вы размещаете данные Google Analytics 4 в BigQuery, то объем информации тоже измеряется в так называемых единицах хранения.

Например, килобайт (KB) - единица, основанная на десятичной системе. 1 килобайт равен 1000 байт, 1 мегабайт (МБ) — 1000 КБ, 1 гигабайт (ГБ) — 1000 МБ и так далее. Эта единица часто используется в контексте хранения данных и передачи информации. Есть единица измерения кикибайт (KiB). Она основана на двоичной системе, то используется степень числа 2. 1 кикибайт равен 1024 байтам (210). Как правило, кикибайты распространены в компьютерной памяти и операционных систем, где удобнее работать с двоичными значениями.

Примеры десятичных единиц измерения:

  • Бит (bit) - базовая единица информации, может принимать значение 0 или 1;
  • Байт (byte) - равен 8 битам (чаще всего используется для измерения объема данных);
  • Килобайт (KB) - равен 1000 байтам;
  • Мегабайт (MB) - равен 1000 килобайтам;
  • Гигабайт (GB) - равен 1000 мегабайтам;
  • Терабайт (TB) - равен 1000 гигабайтам;
  • Петабайт (PB) - равен 1000 терабайтам.

Примеры двоичных единиц измерения:

  • Кибибайт (KiB) - 1 кибибайт = 210 байт = 1024 байта;
  • Мебибайт (MiB) - 1 мебибайт = 220 байт = 1024 кибибайта;
  • Гибибайт (GiB) - 1 гибибайт = 230 байт = 1024 мебибайта;
  • Тебибайт (TiB) — 1 тибибайт = 240 байт = 1024 гибибайта;
  • Пебибайт (PiB) — 1 пебибайт = 250 байт = 1024 тебибайта.

Подводя итог, 1 КБ (килобайт) = 1000 байт (десятичные единицы измерения), а 1 КиБ (кибибайт) = 1024 байта (двоичная система). Это означает, что КиБ примерно на 2,4% больше, чем Кбайт.

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

Все единицы измерения определяются с использованием двоичной системы

Таким образом, ежемесячная стоимость использования BigQuery зависит от:

  • объема данных, хранящихся в BigQuery (стоимость хранения данных);
  • объема данных, обработанных вами при каждом выполненном запросе (стоимость обработки данных);
  • объема данных, которые вы передаете в BigQuery и из него (стоимость передачи данных)

10 ГиБ в месяц для активного хранения данных BigQuery предоставляет бесплатно. При превышении этого объема взимается плата в размере 0,02$ за каждый дополнительный 1 ГиБ в месяц.

Каждый месяц 1 ТиБ обрабатываемых данных также включается в бесплатное использование BigQuery. При превышении этого предела вы будете оплачивать дополнительно 6,25$ за каждый ТиБ обрабатываемых данных.

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

И не забывайте, что стоимость вашего запроса зависит от количества и/или размера возвращаемых столбцов, а не строк. Возврат результата в 10 строк:

Пример SQL-запроса с LIMIT 10

Обойдется вам столько же, сколько возврат 10 000 записей:

Пример SQL-запроса с LIMIT 10 000

Примечание: применение оператора LIMIT в запросе SELECT * не влияет на стоимость запроса, так как LIMIT возвращает количество строк/записей, а это не влияет на стоимость.

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

Получайте бесплатные уроки и фишки

По контекстной, таргетированной рекламе и аналитике