Spanner – СУБД глобального масштаба работает по самому точному времени
Впервые обнародованы технические данные о системе управления базами данных Spanner. Главная ее особенность состоит не столько в изначально распределенном характере системы, сколько в технологии True Time API. В частности, эта СУБД использует настоящее точное время, комбинируя данные от эталонных атомных часов и сигналов со спутников навигационной системы GPS. Точное время используется для вставки меток времени – они позволяют синхронизировать данные по множеству отдельных центров обработки данных и машин в любой удобный момент.
Оценивая масштаб и характер технологии Spanner, способной обслуживать миллионы машин и триллионы строк с данными, нетрудно догадаться, какая компания ее создала. Автором технологии является компания Google. Строго говоря, размер БД Spanner не крупнее уже используемых глобальных решений. Однако на стороне новой технологии остается преимущество в виде точного определения мест хранения данных и минимальные задержки в обработке информации.
Концептуальным фундаментом БД Spanner является уже упомянутый механизм True Time API, который помог превратить более раннюю технологию BigTable (хранилище пар «ключ-значение» с поддержкой версий) в БД со строгим учетом меток времени и хранением множества версий сохраненных пар. В БД Spanner данные хранятся в виде схематических полуреляционных таблиц. Для всех данных поддерживается хранение предыдущих версий, причем каждая версия снабжается собственной меткой времени (обозначается точное время создания очередной версии). Старые версии данных подвергаются очистке согласно заданным политикам «сбора мусора», но при этом приложения, использующие эту БД, могут считывать данные со старыми метками времени (если запрошенные версии еще не удалены). Платформа Spanner поддерживает работу в режиме неспецифических транзакций, а также предлагает язык запросов на базе стандарта SQL.
Поскольку вся работа технологии Spanner строится на точности меток времени, разработчики установили GPS-приемники и атомные часы на серверах в каждом центре обработки данных, где работают компоненты Spanner. Такой подход можно назвать необычным, но инновации Google часто получают широкое распространение после публичного освещения.
Опубликованные материалы о технологии Spanner содержат довольно подробное описание всех аспектов новой платформы. Например, разработчики сообщают, что СУБД Spanner автоматически распределяет фрагменты данных между отдельными машинами, а в дальнейшем автоматически перемещает данные между машинами и центрами обработки данных, чтобы сбалансировать нагрузку и компенсировать отказы оборудования. Таким образом, СУБД Spanner вполне обеспечивает повышенную доступность данных, а приложения, которым нужна полуреляционная база данных, получают более высокую скорость чтения и записи данным по сравнению с платформой Google Megastore.
Целевым приложениям платформа Spanner предлагает такие важные инструменты, как модель данных, построенная на полуреляционных таблицах на основе заранее заданных схем, язык запросов и транзакции общего характера. Стоит обратить внимание на тот факт, что модель данных в технологии Spanner не является чисто реляционной. В частности, строкам (кортежам) не обязательно нужны названия, зато у них обязательно должны быть упорядоченные наборы из одного или нескольких столбцов с первичным ключом – такой подход знаком разработчикам, имеющим дело с хранилищами пар «ключ-значение». Первичные ключи образуют имя строки, а каждая таблица определяет привязку от столбцов первичного ключа к столбцам, не образующим первичный ключ. Разработчики Spanner отдельно подчеркивают практичность такой структуры, поскольку она позволяет приложениям самим контролировать физическое размещение данных в конкретных центра обработки данных путем выбора ключей.
Платформа Spanner представляет собой современный и актуальный взгляд на СУБД эпохи доступа к данным в реальном времени. Кроме того, эта технология показывает, как компания подходит Google к построению вычислительной инфраструктуры, способной справляться с динамической нагрузкой, где оборудование, программное обеспечение и сами данные подвергаются постоянным изменениям.