Spanner (бази даних)

Матеріал з Вікіпедії — вільної енциклопедії.
Версія від 21:27, 25 липня 2020, створена CommonsDelinker (обговорення | внесок) (Вилучив файл Cloud-Spanner-Logo.svg, оскільки він був вилучений з Wikimedia Commons користувачем Túrelio. Причина: Copyright violation: logo.)
Перейти до навігації Перейти до пошуку

Spanner — географічно розподілена масштабована багатоваріантна база даних з підтримкою розподілених транзакцій. Сховище було розроблено інженерами Google для внутрішніх сервісів корпорації. Spanner є еволюційним розвитком NoSQL-попередника — Google Bigtable. Сам же c Spanner відносять до сімейства NewSQL-рішень. У research paper[1] заявляється, що дизайн Spanner дозволяє системі масштабуватись на мільйони обчислювальних вузлів через сотні дата-центрів і працювати з трильйонами рядків даних. Spanner використовується в соціальній мережі Google+ та в поштовому сервісі GMail

Базові принципи

Spanner є новим типом БД (NewSQL), який об'єднує в собі два світи SQL та NoSQL. Крім наявності NoSQL можливостей, Spanner також володіє складно реалізованими в розподілених системах властивостями :

  • підтримка розподілених транзакцій;
  • глобальна узгодженість операцій читання між географічно розподіленими ДЦ, таким чином дані, які повертають операції читання з різних ДЦ, завжди узгоджені і несуперечливі;
  • не заблокованого читання даних «з минулого» (in past);
  • відсутність блокувань для read-only транзакцій;
  • атомарне змінення схеми таблиць даних;
  • синхронна реплікація;
  • автоматична обробка відмов як обчислювальних вузлів, так і ДЦ;
  • автоматична міграція даних як між обчислювальними вузлами, так і між ДЦ.

Недоліки

  • Ключі таблиці не можуть змінюватися. Не можна додавати key column до існуючої таблиці або видалити з існуючої таблиці. Це означає, що якщо потрібно змінити PK таблиці, то доведеться видалити та створити заново цю таблицю;
  • Рекомендується використовувати interleaved table[2] для каскадного оновлення та видалення.

Переваги

  • Надається можливість для обробки величезної кількості транзакцій;
  • Гарантується цілісність даних з можливістю їх розподілення по всьому світі без обмежень розміром сховища.

Об'єкти для зберігання даних в Cloud Spanner

Для роботи з даними в Spanner існує два типи об'єктів: ключ таблиці і індекси. Призначення даних типів схоже з аналогами в традиційних реляційних базах. Приклад визначення таблиці:

CREATE TABLE Persons (
PersonId INT64 NOT NULL;
FirstName STRING (32);
LastName STRING (32), PRIMARY KEY
(PersonId)).

Порівняння з реляційними і не реляційними БД

В якості керованої реляційної хмарної бази даних Google Cloud Spanner є альтернативою іншим базам даних

Google Cloud Spanner Реляційні БД Не реляційні БД
Схема + + -
SQL + + -
Узгодженість сильна сильна кінцева
Доступність висока відмовостійкість висока
Масштабованість горизонтальна вертикальна горизонтальна
Реплікація автоматична налаштована налаштована

Примітки

  1. James C. Corbett, Jeffrey Dean, Michael Epstein, Andrew Fikes, Christopher Frost, JJ Furman, et al.
  2. https://cloud.google.com/spanner/docs/schema-and-data-model

Джерела