Гаечный ключ – географически распределенная, масштабируемая, многоверсионная база данных с поддержкой распределенных транзакций.
Хранилище было разработано инженерами Google для внутренних сервисов корпорации.
Исследовательская работа [8], описывающая основные принципы и архитектуру Spanner, была представлена на научной конференции.
10-й симпозиум USENIX по проектированию и внедрению операционных систем в 2012. Spanner — это эволюционное развитие своего предшественника NoSQL. Google Бигтаблица .
Сам Spanner принадлежит к семейству решений NewSQL. В исследовательской статье [8] утверждается, что конструкция Спаннера позволяет системе масштабируйте миллионы вычислительных узлов в сотнях центров обработки данных и работайте с триллионами строк данных.
.
Использование гаечного ключа Колосс (GFS нового поколения) в качестве уровня хранения и алгоритма разрешения коллизий Паксос .
В свою очередь, на основании ( наверху ) Спаннер построил распределенную СУБД Гугл Ф1 .
Гаечный ключ использовал в социальной сети Google+, в почтовом сервисе GMail. СУБД Google F1, построенная на базе Spanner, на момент публикации [8] использовалась в рекламном сервисе Google.
Основные принципы
Данные в Spanner хранятся в полуреляционные таблицы, имеющие схему .Все данные имеют версию — временную метку ( временная метка ) подтверждение записи этих данных (коммит).
У Spanner есть SQL-подобный язык запросов, возможность настройки количества реплик и политики сборщика мусора, отвечающие за удаление записей со «старыми» временными метками.
Помимо уже «знакомых» миру NoSQL возможностей, Spanner также обладает рядом свойств, которые сложно реализовать в распределенных системах.
Такой как:
поддерживать распределенные транзакции ; глобальная согласованность чтения между географически распределенными ДЦ, т.е.данные, возвращаемые операциями чтения из разных ДЦ, всегда непротиворечивы и непротиворечивы.
Кроме того, Spanner обладает более характерными для СУБД функциями, такими как:
неблокирующее чтение данных «из прошлого» (в прошлом); нет блокировок для транзакций только для чтения; атомарное изменение схемы таблицы данных; синхронная репликация; автоматическая обработка отказов как вычислительных узлов, так и ЦОД; автоматическая миграция данных как между вычислительными узлами, так и между ЦОД.
Архитектура
Каждый развернутый экземпляр ( развертывание ) Гаечный ключ называется Вселенная и содержит: Мастер Вселенной — мастер-процесс, координирующий работу множества зон (в терминологии Спаннера — Зона ); Много зон – географически распределенные (в целом) зоны Spanner. Зона — это единица как логической, так и физической изоляции.Каждая Зона, в свою очередь, содержит:
ZoneMaster – мастер-процесс зоны (одиночный); Многие – от сотен до нескольких тысяч – Спансерверы ; Прокси местоположения – раскрывать клиентам местонахождение Spanservers, ответственных за необходимые данные; Драйвер размещения – процесс (как и Zonemaster, синглтон), управляющий перемещением данных между разными Зонами.
В исследовательской работе [8] подробно описаны функции и внутренняя структура только Спансервер.
Каждый Spanserver содержит от 100 до 1000 структур данных, называемых планшет .
(key: string, timestamp: int64) -> string
В отличие от Bigtable, Spanner добавляет в структуру хранимых данных метку времени для добавления этих данных, что является важным введением в реализацию поддержки нескольких версий данных.
Модель данных в Spanner — полуреляционные таблицы с поддержкой схем данных (схематизированных), SQL-подобного языка запросов и распределенных транзакций.
Реализация последних (транзакций) стала возможной благодаря одной из самых инновационных инноваций для такого рода программных систем – программному интерфейсу.
API TrueTime .
TrueTime
Общая цель глобальных систем времени (особенно атомных часов) — обеспечить максимально точное время.TrueTime API предоставляет клиентам глобальное время + некоторая неопределенность – TTинтервал.
Это необходимо, поскольку распределенным системам очень сложно гарантировать мгновенное реагирование узлов, что важно для обеспечения согласованности данных в распределенном хранилище.
В подходе, где вместо точного времени возвращается некоторый интервал времени, выполнение 2-х конкурирующих транзакций сводится (упрощается) к сравнению ТТ-интервала этих транзакций.
Если ТТинтервал транзакций не пересекается, то можно однозначно узнать, какая транзакция должна быть выполнена первой.
Если TTinterval пересекается, то можно сказать только с определенной долей вероятности.
( Подробнее об оборудовании сервиса TrueTime.) В самом Спаннере согласованность данных при проведении сделок обеспечивается протокол двухфазной фиксации транзакции (Протокол двухфазной фиксации), реализованный с использованием алгоритма Paxos.
Лимиты и CAP
На момент публикации исследовательской работы [8] Спаннер не поддержал вторичные индексы И автоматическая перешардинг в целях балансировки нагрузки.Кроме того, авторы [8] отмечают, что Спаннер не способен эффективно выполнять сложные SQL-запросы .
Спаннер также не является «опровержением» теоремы CAP. Spanner не является системой AP, несмотря на свою природу NoSQL; и это не система CA, несмотря на поддерживать приверженность поддержке принципов ACID. Спаннер «жертвует» доступность ( доступность ) за поддержку целостность данных ( последовательность ) и, следовательно, является CP-системой.
Полученные результаты
Спаннер берет лучшие идеи из обоих миров - реляционная СУБД и NoSQL - и представляет СУБД генерации NewSQL .Поддержка распределенных транзакций между центрами обработки данных с объемами данных петабайтного масштаба с такой масштабируемостью, безусловно, является чрезвычайно впечатляющей функцией для любой структурированной и полуструктурированной системы хранения данных.
Эта возможность во многом является результатом симбиоза двух подходов: подхода к хранению данных — данные неизменяемы и содержат метку времени фиксации — и инновационной концепции получения глобального времени — TrueTime.
Список источников*
[8] Джеймс К.Корбетт, Джеффри Дин, Майкл Эпштейн, Эндрю Файкс, Кристофер Фрост, Дж.
Дж.
Фурман и др.
Spanner: глобально распределенная база данных Google. Труды ОСДИ, 2012. * Полный список источников , используемый для подготовки цикла.
Дмитрий Петухов, MCP, аспирант, IT-зомби, человек с кофеином вместо эритроцитов.
Теги: #Google #spanner #Big Data #NewSQL #NoSQL #Big Data
-
Как Починить Принтер В Автономном Режиме?
19 Oct, 24 -
Настройка Windows В Качестве Ntp-Сервера
19 Oct, 24 -
Список Платных Клиентов На Автопилоте?
19 Oct, 24 -
Давайте Будем Честными О Статическом Анализе
19 Oct, 24 -
Выборочная Деанимация Видео
19 Oct, 24 -
Реклама Компьютерной Игры Guitar Hero 5
19 Oct, 24 -
Основные Принципы Разработки Игр
19 Oct, 24 -
Ит-Мысли №1
19 Oct, 24