Открыть сервис

GoogleSQL

GoogleSQL — это реляционная система управления базами данных (СУБД), разработанная компанией Google, предназначенная для выполнения аналитических запросов и обработки больших объёмов данных. Она представляет собой диалект языка SQL, используемый в экосистеме Google Cloud, в частности в сервисах BigQuery, Cloud Spanner, Cloud SQL и других. GoogleSQL сочетает в себе стандартный синтаксис SQL с расширениями, такими как поддержка вложенных и повторяющихся полей, пользовательских функций, машинного обучения и работы с геопространственными данными. Система ориентирована на высокую производительность, масштабируемость и интеграцию с облачными сервисами Google.

История

GoogleSQL возник как внутренний проект Google в начале 2010-х годов для замены устаревших систем обработки данных, таких как MapReduce и ранние версии BigQuery. Первоначально он был известен как Dremel SQL — язык запросов для системы Dremel, которая лежит в основе BigQuery. В 2016 году Google объявила о выпуске BigQuery, использующего Dremel SQL, а в 2018 году представила Cloud Spanner — глобально распределённую базу данных с поддержкой SQL. В 2020 году Google унифицировала синтаксис для всех своих сервисов, переименовав его в GoogleSQL. С тех пор он стал стандартным языком запросов для BigQuery, Cloud Spanner, Cloud SQL (для PostgreSQL и MySQL) и других продуктов Google Cloud.

Архитектура и принципы работы

GoogleSQL основан на распределённой архитектуре, где запросы обрабатываются на кластерах серверов. Система использует механизм Dremel для выполнения запросов в режиме реального времени, разбивая их на подзадачи, которые параллельно обрабатываются на тысячах узлов. Это позволяет обрабатывать петабайты данных за секунды. В отличие от традиционных СУБД, GoogleSQL не требует предварительного создания индексов или схем — данные хранятся в столбцовом формате (columnar storage), что ускоряет чтение и агрегацию.

Ключевые компоненты:

  • Фронтенд — парсер запросов, проверяющий синтаксис и семантику.
  • Оптимизатор — выбирает наилучший план выполнения, учитывая стоимость операций и распределение данных.
  • Исполнитель — распределяет задачи по узлам кластера и собирает результаты.

Синтаксис и расширения

GoogleSQL поддерживает стандарт SQL:2011 с рядом расширений, характерных для облачных систем.

Основные типы данных

  • Числовые: INT64, FLOAT64, NUMERIC, BIGNUMERIC.
  • Строковые: STRING, BYTES.
  • Дата и время: DATE, TIMESTAMP, DATETIME, TIME.
  • Структурированные: STRUCT, ARRAY, JSON.
  • Геопространственные: GEOGRAPHY (на основе WKT/WKB).

Расширенные возможности

  • Вложенные и повторяющиеся поляподдержка массивов и структур в одной строке таблицы, что позволяет хранить иерархические данные без нормализации.
  • Пользовательские функции (UDF) — можно создавать на SQL, JavaScript или Python (в BigQuery).
  • Машинное обучение — оператор CREATE MODEL позволяет обучать модели прямо внутри SQL-запроса (например, линейную регрессию, кластеризацию или нейронные сети).
  • Геопространственные запросы — функции ST_* для работы с географическими объектами (например, ST_DISTANCE, ST_WITHIN).
  • Оконные функцииROW_NUMBER, RANK, LAG, LEAD и другие.
  • Аналитические функцииAPPROX_QUANTILES, APPROX_COUNT_DISTINCT для работы с большими данными.

Пример запроса

``sql SELECT user_id, ARRAY_AGG(DISTINCT product_name ORDER BY purchase_date) AS products FROM project.dataset.orders WHERE purchase_date >= '2023-01-01' GROUP BY user_id HAVING COUNT(DISTINCT product_name) > 5; ``

Применение

GoogleSQL используется в основном в облачных средах Google Cloud для следующих задач:

  • Аналитика больших данных — BigQuery является основным сервисом для выполнения SQL-запросов к терабайтам и петабайтам данных. Применяется в финансовой аналитике, маркетинге, логистике, научных исследованиях.
  • Транзакционные системыCloud Spanner использует GoogleSQL для глобально распределённых транзакций с уровнем изоляции Serializable.
  • Геопространственные приложения — анализ картографических данных, геолокация, маршрутизация.
  • Машинное обучение — построение моделей непосредственно в SQL без написания отдельного кода.
  • Интеграция с другими сервисами — GoogleSQL может обращаться к данным из Google Sheets, Cloud Storage, Pub/Sub, Dataflow и других продуктов.

Преимущества и недостатки

Преимущества

  • Масштабируемость — автоматическое распределение запросов по кластеру.
  • Производительностьстолбцовое хранение и параллельная обработка.
  • Гибкость — поддержка сложных типов данных и пользовательских функций.
  • Интеграция — единый язык для всех сервисов Google Cloud.
  • Безопасность — встроенные механизмы шифрования, управления доступом (IAM) и аудита.

Недостатки

  • Привязка к экосистеме Google — миграция на другие платформы затруднена.
  • Стоимость — для больших объёмов данных может быть высокой, особенно при частых запросах.
  • Ограничения стандарта — не поддерживаются некоторые возможности SQL:2003, например, MERGE, UPDATE с подзапросами (в BigQuery).
  • Зависимость от интернета — для работы требуется подключение к облаку.

Сравнение с другими SQL-диалектами

ХарактеристикаGoogleSQLPostgreSQLMySQLSnowflake SQL
Тип храненияСтолбцовоеСтрочноеСтрочноеСтолбцовое
МасштабированиеАвтоматическоеРучное (шардинг)РучноеАвтоматическое
Поддержка JSONДа (нативный)Да (JSONB)Да (JSON)Да (VARIANT)
Машинное обучениеВстроенноеЧерез расширенияНетВстроенное
Геопространственные данныеДа (GEOGRAPHY)Да (PostGIS)Да (MySQL Spatial)Да (GEOGRAPHY)
ЦенаPay-as-you-goБесплатно (с ограничениями)БесплатноPay-as-you-go

Интересные факты

  • GoogleSQL в BigQuery поддерживает запросы к данным, хранящимся в форматах Avro, Parquet, ORC и CSV, без предварительной загрузки.
  • В 2023 году Google добавила поддержку CREATE MODEL для обучения моделей глубокого обучения через TensorFlow внутри SQL.
  • GoogleSQL используется в Google Ads для обработки миллиардов запросов в день.
  • Система Dremel, лежащая в основе GoogleSQL, была описана в научной статье 2010 года, которая вдохновила создание Apache Drill и Apache Impala.

Критика

Основные претензии к GoogleSQL связаны с его закрытостью и зависимостью от Google Cloud. Сообщество разработчиков отмечает, что синтаксис и поведение некоторых функций (например, ARRAY_AGG с ORDER BY) отличаются от стандарта SQL, что затрудняет перенос кода. Также критикуется отсутствие поддержки MERGE в BigQuery, что требует обходных путей для обновления данных. Кроме того, стоимость запросов может быть непредсказуемой, особенно при использовании сложных аналитических функций.

Источники

  1. Google Cloud Documentation. GoogleSQL Reference. Google, 2024.
  2. Melnik, S., Gubarev, A., Long, J. J., et al. Dremel: Interactive Analysis of Web-Scale Datasets. Proceedings of the VLDB Endowment, 2010.
  3. Lakshman, A., Malik, P. Cassandra: A Decentralized Structured Storage System. ACM SIGOPS Operating Systems Review, 2010.
  4. Google. BigQuery: Cloud Data Warehouse. Google Cloud, 2023.
  5. Stonebraker, M., et al. C-Store: A Column-oriented DBMS. Proceedings of the VLDB Endowment, 2005.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →