33
Big Data’15 Лекция X: Google Spanner Дмитрий Барашев [email protected] Computer Science Center 28 апреля 2015 1/27

Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Embed Size (px)

Citation preview

Page 1: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Big Data’15Лекция X: Google Spanner

Дмитрий Барашев[email protected]

Computer Science Center

28 апреля 2015

1/27

Page 2: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Этот материал распространяется под лицензией

Creative Commons ”Attribution - Share Alike” 3.0http://creativecommons.org/licenses/by-sa/3.0/us/deed.ru

сверстано в онлайн LATEX редакторе

Pa

peeriapapeeria.com

2/27

Page 3: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Сегодня в программе

Google Spanner: глобально распределённая БД

3/27

Page 4: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Сегодня в программе

Google Spanner: глобально распределённая БД

4/27

Page 5: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Google Spanner

▶ глобально распределённая▶ версионированная▶ транзакционная▶ строго согласованная▶ автонастраивающаяся

5/27

Page 6: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Предпосылки

▶ Bigtable шустрая, но не годится для сложныхприложений

▶ Megastore – надстройка над Bigtable,добавляющая транзакции и SQL-подобный языкзапросов – используется многимиприложениями, несмотря на невысокуюпроизводительность

▶ Хочется собрать всё лучшее из миратрадиционных и нетрадиционных СУБД

▶ транзакции + высокая пропускная способность+ низкое время отклика + масштабируемость

6/27

Page 7: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Используемые технологии

▶ Распределённая файловая система: Colossus▶ Алгоритмы консенсуса: Paxos и двухфазноеподтверждение1

▶ Изоляция транзакций: двухфазные блокировки2и моментальные срезы3

▶ GPS сигналы и атомные часы

1two-phase commit2two-phase locking3snapshot isolation

7/27

Page 8: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Используемые технологии

▶ Распределённая файловая система: Colossus▶ Алгоритмы консенсуса: Paxos и двухфазноеподтверждение1

▶ Изоляция транзакций: двухфазные блокировки2и моментальные срезы3

▶ GPS сигналы и атомные часы

1two-phase commit2two-phase locking3snapshot isolation

7/27

Page 9: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Spanner с точки зрения клиента

▶ Модель данных: (ключ, временна́я метка) ⇒значение

▶ Компоненты ключа: название базы данных,название таблицы, идентификатор строки,название столбца

▶ Корзина4 – единица размещения данных5

4directory, bucket5data placement

8/27

Page 10: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Размещение данных в Bigtable▶ В Bigtable единицейразмещения являетсятаблет – непрерывноеподмножествоключей

▶ Таблетобслуживается однимтаблет сервером

▶ Таблет живет в одномкластере( датацентре)

9/27

Page 11: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Размещение данных в Spanner

▶ В одной корзинемогутнаходитьсястроки разныхтаблиц

10/27

Page 12: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Размещение данных в Spanner

▶ Приложение определяет параметрыразмещения и репликации корзины

▶ например: одна корзина на пользователя,корзина реплицируется в трех зонах в Европе идвух в Северной Америке

▶ Реплики корзин на одном сервереобъединяются в таблет

11/27

Page 13: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Программный стек спан-сервера

12/27

Page 14: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Paxos

▶ Записи производятся в реплики-лидеры▶ Лидер инициирует очередной раунд Paxos, иутвержденное значение записывается вструктуры хранения (B-дерево) и оперещающийжурнал

▶ Лидер в Paxos долгоживущий: он продляет своёлидерство во время успешной записи иперевыборами раз в 10 секунд

▶ Множество реплик таблета называетсяPaxos-группой

13/27

Page 15: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Таблица блокировок

▶ Лидер поддерживает таблицу блокировокдвухфазного протокола

▶ Блокировки используются для операций записии read-commited чтения

▶ Транзакциям, использующим одну Paxos-группудостаточно таблицы блокировок дляподтверждения

14/27

Page 16: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Двухфазное подтверждение

▶ Используется если транзакция затрагиваетнесколько Paxos групп

▶ Координатор выбирается клиентом▶ Главная сложность – гарантировать внешнююсогласованность транзакций

15/27

Page 17: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Внешняя согласованность

▶ Если транзакция T1 подтверждается раньше,чем транзакция T2 начинается, то временна́яметка подтверждения T1 меньше, чемвременна́я метка подтверждения T2

16/27

Page 18: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Внешняя согласованность: зачем

▶ Если хочется читать моментальные срезы БД изпрошлого

▶ вы: окей гугл, дай мне состояние, актуальное намомент времени 12 апреля 1961 года 09:07

▶ гугл: Поехали!▶ вы: а секундой позже?▶ гугл: Старт!▶ вы: ой, а точно не наоборот?

17/27

Page 19: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Внешняя согласованность: зачем

▶ Если хочется читать моментальные срезы БД изпрошлого

▶ вы: окей гугл, дай мне состояние, актуальное намомент времени 12 апреля 1961 года 09:07

▶ гугл: Поехали!▶ вы: а секундой позже?▶ гугл: Старт!▶ вы: ой, а точно не наоборот?

17/27

Page 20: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Внешняя согласованность: зачем

▶ Если хочется читать моментальные срезы БД изпрошлого

▶ вы: окей гугл, дай мне состояние, актуальное намомент времени 12 апреля 1961 года 09:07

▶ гугл: Поехали!▶ вы: а секундой позже?

▶ гугл: Старт!▶ вы: ой, а точно не наоборот?

17/27

Page 21: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Внешняя согласованность: зачем

▶ Если хочется читать моментальные срезы БД изпрошлого

▶ вы: окей гугл, дай мне состояние, актуальное намомент времени 12 апреля 1961 года 09:07

▶ гугл: Поехали!▶ вы: а секундой позже?▶ гугл: Старт!

▶ вы: ой, а точно не наоборот?

17/27

Page 22: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Внешняя согласованность: зачем

▶ Если хочется читать моментальные срезы БД изпрошлого

▶ вы: окей гугл, дай мне состояние, актуальное намомент времени 12 апреля 1961 года 09:07

▶ гугл: Поехали!▶ вы: а секундой позже?▶ гугл: Старт!▶ вы: ой, а точно не наоборот?

17/27

Page 23: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Внешняя согласованность: в чемпроблема?

▶ В нераспределённой системе проблемы нет▶ В распределённой системе нет единых точныхчасов

18/27

Page 24: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Интервал неопределённости

▶ Если у вас есть часы с несколькимициферблатами, вы не сможете абсолютно точноопределить момент времени

▶ Одна стрелка дергается в момент t0, другая вt0 + ϵ

▶ Интервал ϵ – интервал неопределённости6▶ ϵ может быть довольно большим, может бытьмаленьким, но он есть

6time uncertainty19/27

Page 25: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

TrueTime

▶ Момент времени в Spanner – интервал [earliest,latest]

▶ TrueTime значения сообщаются специальнымсервисом TT

▶ Гарантируется, что

tt.earliest ≤ tabs(enow) ≤ tt.latest

где значение tt получено вызовом enow сервисаTT в абсолютный момент времени tabs(enow)

20/27

Page 26: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Реализация сервиса TrueTime

▶ В каждом Spanner-датацентре есть TrueTimeмастера с GPS-приемниками(большинство.мастеров) и атомными часами(мастера Армагеддона)

▶ на каждом GPS спутнике тоже есть атомныечасы, несколько штук

▶ На машинах в датацентре крутятся демоны,общающиеся с мастерами и вычисляющиеинтервалы

▶ В реальности интервал ϵ меняется от 1мс до 7мс

21/27

Page 27: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Использование TrueTime▶ В кросс-групповой транзакции Ti координатордолжен назначить метку подтверждениятранзакции si

▶ Каждый участник 2PC▶ получает блокировки на запись▶ выбирает метку подготовки (больше чем меткалюбой ранее подтверждённой транзакции)

▶ сообщает координатору о готовности ивозвращает метку

▶ Координатор выбирает время подтверждения siбольшее каждой метки подготовки и большеечем TT.now().latest

▶ Надо убедиться, что никто не увидитподтверждённые данные до моментаsj : sj.earliest > Si

▶ Координатор тупо ждёт этого момента

22/27

Page 28: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Использование TrueTime▶ В кросс-групповой транзакции Ti координатордолжен назначить метку подтверждениятранзакции si

▶ Каждый участник 2PC▶ получает блокировки на запись▶ выбирает метку подготовки (больше чем меткалюбой ранее подтверждённой транзакции)

▶ сообщает координатору о готовности ивозвращает метку

▶ Координатор выбирает время подтверждения siбольшее каждой метки подготовки и большеечем TT.now().latest

▶ Надо убедиться, что никто не увидитподтверждённые данные до моментаsj : sj.earliest > Si

▶ Координатор тупо ждёт этого момента22/27

Page 29: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Как вычислить завтрашнюю дату?

1 class Timer {2 public static long getTomorrowDate() {3 Thread.currentThread().sleep(86400); // 60 * 60 * 244 return System.currentTimeMillis();5 }6 }

23/27

Page 30: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Использование Spanner

▶ Первым клиентом стал F1 – масштабируемаярспределённая SQL СУБД

▶ F1 заменил MySQL в хранении финансовойинформации AdWords

24/27

Page 31: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Использование Spanner

Космос, атомные часы, всадники армагеддона,древнегреческие парламентарии – всё это длятого чтобы показать вам рекламу ужекупленных ботинок

25/27

Page 32: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Литература I

James C Corbett, Jeffrey Dean, Michael Epstein,Andrew Fikes, Christopher Frost, Jeffrey JohnFurman, Sanjay Ghemawat, Andrey Gubarev,Christopher Heiser, Peter Hochschild, et al.Spanner: Google’s globally distributed database.ACM Transactions on Computer Systems (TOCS),31(3):8, 2013.Jeff Shute, Mircea Oancea, Stephan Ellner, BenHandy, Eric Rollins, Bart Samwel, Radek Vingralek,Chad Whipkey, Xin Chen, Beat Jegerlehner, et al.F1: the fault-tolerant distributed rdbms supportinggoogle’s ad business.

26/27

Page 33: Технологии хранения и обработки больших объёмов данных, весна 2015: Google Spanner

Литература II

In Proceedings of the 2012 ACM SIGMODInternational Conference on Management of Data,pages 777–778. ACM, 2012.

27/27