Cloud Spanner
Cloud Spanner — это глобально распределённая реляционная система управления базами данных (СУБД), разработанная компанией Google и предоставляемая как облачный сервис (база данных как услуга, DBaaS). Она сочетает в себе свойства реляционных баз данных (поддержка SQL-запросов, транзакций ACID) с горизонтальной масштабируемостью и высокой доступностью, характерными для нереляционных (NoSQL) систем, таких как Bigtable. Cloud Spanner обеспечивает синхронную репликацию данных между несколькими регионами мира, гарантируя внешнюю согласованность (strong consistency) и отказоустойчивость.
История
Разработка Cloud Spanner началась внутри Google в середине 2000-х годов как ответ на растущие потребности компании в масштабируемой и согласованной системе хранения данных, которая могла бы работать на глобальном уровне. Внутренние проекты, такие как Google Ads (ранее AdWords) и Google Play, требовали базы данных, способной обрабатывать миллиарды запросов в день с гарантией целостности данных. Существующие решения — традиционные реляционные СУБД (например, MySQL) — не могли масштабироваться горизонтально, а NoSQL-системы (Bigtable) не поддерживали транзакции ACID и сложные SQL-запросы.
Проект, первоначально называвшийся «Spanner», был описан в научной статье Google в 2012 году, что вызвало значительный интерес в сообществе разработчиков. В 2017 году Google объявила о коммерческой доступности Cloud Spanner как облачного сервиса. С тех пор сервис постоянно развивался, добавляя новые функции, такие как поддержка SQL-запросов с использованием стандарта ANSI 2011, хранение данных в формате JSON, автоматическое масштабирование и интеграция с другими сервисами Google Cloud Platform (GCP).
Архитектура и принципы работы
Глобальная распределённость
Cloud Spanner использует концепцию «узлов» (nodes), которые являются физическими или виртуальными серверами, распределёнными по дата-центрам Google в разных регионах мира. Данные автоматически разбиваются на фрагменты (splits) и реплицируются на несколько узлов. Репликация может быть настроена на уровне региона, страны или континента, что позволяет обеспечить как низкую задержку для локальных пользователей, так и глобальную доступность.
Синхронная репликация и TrueTime
Ключевая технологическая инновация Cloud Spanner — использование распределённой системы синхронизации времени TrueTime. TrueTime основана на атомных часах и GPS-приёмниках, установленных в каждом дата-центре Google. Она позволяет серверам получать высокоточные метки времени с известной границей погрешности (обычно в диапазоне от 1 до 10 миллисекунд). Это даёт возможность реализовать внешнюю согласованность (external consistency) — то есть все транзакции, выполняемые в разных частях мира, видят данные в том же порядке, в котором они были записаны, как если бы они выполнялись на одной машине.
Транзакции ACID
Cloud Spanner поддерживает полные транзакции ACID (Atomicity, Consistency, Isolation, Durability). Это означает, что операции чтения и записи являются атомарными, согласованными, изолированными друг от друга и долговечными. Сервис поддерживает как обычные транзакции (с явным началом и завершением), так и оптимистичные транзакции (snapshot reads), которые не блокируют другие операции записи.
SQL-интерфейс
Cloud Spanner предоставляет интерфейс, совместимый с SQL-92, с расширениями для работы с распределёнными данными. Пользователи могут выполнять запросы SELECT, INSERT, UPDATE, DELETE, а также использовать соединения (JOIN), подзапросы, агрегатные функции и оконные функции. Поддержка SQL позволяет разработчикам, знакомым с традиционными реляционными базами данных, быстро адаптироваться к Cloud Spanner.
Классификация и характеристики
Типы баз данных
Cloud Spanner относится к классу NewSQL — систем, которые стремятся объединить преимущества реляционных баз данных (SQL, ACID) с масштабируемостью NoSQL. В отличие от традиционных реляционных СУБД, которые масштабируются вертикально (увеличение мощности одного сервера), Cloud Spanner масштабируется горизонтально — добавлением новых узлов. В отличие от NoSQL-систем, она сохраняет строгую согласованность и поддержку транзакций.
Ключевые характеристики
- Глобальная доступность: данные могут быть доступны из любого региона мира с задержкой менее 10 миллисекунд для чтения и записи.
- Автоматическое масштабирование: сервис автоматически распределяет нагрузку между узлами, не требуя ручного управления шардированием.
- Высокая доступность (SLA 99.999%): Google гарантирует доступность сервиса на уровне 99.999% для мультирегиональных конфигураций.
- Безопасность: данные шифруются как при передаче (TLS), так и при хранении (AES-256). Поддерживается управление доступом на основе ролей (IAM).
- Интеграция с GCP: Cloud Spanner интегрируется с другими сервисами Google Cloud, такими как BigQuery, Cloud Storage, Dataflow и Cloud Functions.
Применение
Финансовые услуги
Cloud Spanner используется в банках, страховых компаниях и платёжных системах, где требуется строгая согласованность данных и высокая доступность. Например, для обработки транзакций, ведения бухгалтерских книг и управления счетами клиентов. Пример: компания Coinbase (криптовалютная биржа) использует Cloud Spanner для хранения данных о транзакциях и балансах пользователей, обеспечивая целостность данных в глобальном масштабе.
Игры и развлечения
В игровой индустрии Cloud Spanner применяется для хранения профилей игроков, игровых состояний, лидербордов и внутриигровых покупок. Благодаря низкой задержке и глобальной доступности, игроки из разных стран могут одновременно взаимодействовать с игрой. Пример: Pokémon GO (разработчик Niantic) использует Cloud Spanner для хранения данных о миллионах игроков, обеспечивая синхронизацию их действий в реальном времени.
Розничная торговля и электронная коммерция
Крупные ритейлеры и онлайн-магазины используют Cloud Spanner для управления каталогами товаров, обработки заказов, управления запасами и персонализации рекомендаций. Высокая согласованность данных критична для предотвращения ситуаций, когда два пользователя одновременно пытаются купить последний товар на складе.
Социальные сети и платформы
Социальные сети и платформы обмена сообщениями используют Cloud Spanner для хранения профилей пользователей, лент новостей, сообщений и других данных, требующих глобальной согласованности. Пример: Snapchat (владелец Snap Inc.) использует Cloud Spanner для хранения данных о пользователях и их взаимодействиях.
Преимущества и недостатки
Преимущества
- Глобальная согласованность: единственная коммерческая СУБД, обеспечивающая внешнюю согласованность на глобальном уровне.
- Горизонтальная масштабируемость: автоматическое масштабирование без ручного шардирования.
- Высокая доступность: SLA 99.999% для мультирегиональных конфигураций.
- Стандартный SQL: снижает порог входа для разработчиков.
- Управляемый сервис: не требует администрирования серверов, резервного копирования или настройки репликации.
Недостатки
- Стоимость: Cloud Spanner является одним из самых дорогих облачных сервисов баз данных, особенно при использовании мультирегиональных конфигураций.
- Сложность настройки: для достижения оптимальной производительности требуется правильное проектирование схемы данных и выбор ключей шардирования.
- Ограниченная экосистема: по сравнению с PostgreSQL или MySQL, количество инструментов и библиотек для Cloud Spanner меньше.
- Зависимость от Google Cloud: сервис привязан к платформе GCP, что может быть ограничением для компаний, использующих другие облака.
Конкуренты и альтернативы
Cloud Spanner конкурирует с другими облачными базами данных, которые предлагают глобальную распределённость и согласованность. Основные конкуренты:
- Amazon Aurora Global Database (AWS) — реляционная база данных с глобальной репликацией, но с ограниченной поддержкой ACID-транзакций на больших расстояниях.
- Azure Cosmos DB (Microsoft) — глобально распределённая база данных, поддерживающая несколько моделей данных (документы, графы, ключ-значение), но с ограниченной поддержкой SQL и ACID.
- CockroachDB — независимая распределённая СУБД, совместимая с PostgreSQL, которая может быть развёрнута как в облаке, так и на собственных серверах.
Интересные факты
- Cloud Spanner изначально разрабатывался для внутренних нужд Google, и его первым крупным пользователем была рекламная система Google Ads.
- В 2017 году Google опубликовала техническую статью, описывающую архитектуру TrueTime, которая была удостоена награды «Best Paper» на конференции ACM SIGMOD.
- Cloud Spanner поддерживает до 1000 узлов в одной конфигурации, что позволяет обрабатывать более 2 миллиардов запросов в день.
- В 2021 году Google добавила поддержку хранения данных в формате JSON, что упростило интеграцию с современными веб-приложениями.
Источники
- Google Cloud. «Cloud Spanner Documentation». Официальная документация Google Cloud.
- Corbett, J. C., et al. «Spanner: Google’s Globally-Distributed Database». ACM Transactions on Computer Systems, 2013.
- Google Cloud. «TrueTime: The Global Clock for Spanner». Google Research Blog, 2017.
- Niantic, Inc. «How Pokémon GO Scales with Google Cloud». Google Cloud Case Study, 2019.
- Coinbase. «How Coinbase Uses Cloud Spanner for Global Transactions». Google Cloud Blog, 2020.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →