Описание тега bigtable

Bigtable - это распределенная система хранения (созданная Google) для управления структурированными данными, которая предназначена для масштабирования до очень большого размера: петабайтов данных на тысячах обычных серверов.

Большой стол

Распределенная система хранения структурированных данных

Bigtable - это распределенная система хранения (созданная Google) для управления структурированными данными, которая предназначена для масштабирования до очень большого размера: петабайтов данных на тысячах обычных серверов.

Многие проекты Google хранят данные в Bigtable, включая веб-индексирование, Google Планета Земля и Google Финансы. Эти приложения предъявляют к Bigtable очень разные требования как с точки зрения размера данных (от URL-адресов до веб-страниц до спутниковых изображений), так и требований к задержке (от внутренней обработки данных до обслуживания данных в реальном времени).

Несмотря на эти разнообразные требования, Bigtable успешно предоставила гибкое и высокопроизводительное решение для всех этих продуктов Google.

Некоторые особенности

  • быстрая и очень крупномасштабная СУБД
  • разреженная, распределенная многомерная отсортированная карта, разделяющая характеристики как строковых, так и столбцовых баз данных.
  • разработан для масштабирования до петабайтного диапазона
  • он работает на сотнях или тысячах машин
  • легко добавить больше машин в систему и автоматически начать использовать эти ресурсы без какой-либо реконфигурации
  • каждая таблица имеет несколько измерений (одно из которых - поле для времени, позволяющее управлять версиями)
  • таблицы оптимизированы для GFS (файловая система Google) за счет разделения на несколько планшетов - сегменты таблицы разделены по строке, выбранной таким образом, что размер планшета будет ~200 мегабайт.

Архитектура

BigTable - это не реляционная база данных. Он не поддерживает объединения и не поддерживает сложные запросы, подобные SQL. Каждая таблица - это многомерная разреженная карта. Таблицы состоят из строк и столбцов, и каждая ячейка имеет отметку времени. Может быть несколько версий ячейки с разными отметками времени. Отметка времени позволяет выполнять такие операции, как "выбрать n" версий этой веб-страницы "или" удалить ячейки, которые старше определенной даты / времени ".

Чтобы управлять огромными таблицами, Bigtable разбивает таблицы по границам строк и сохраняет их в виде планшетов. Размер планшета составляет около 200 МБ, и каждая машина сохраняет около 100 планшетов. Такая настройка позволяет распределять планшеты из одной таблицы по множеству серверов. Это также позволяет выполнять точную балансировку нагрузки. Если одна таблица получает много запросов, она может избавиться от других планшетов или переместить занятую таблицу на другой компьютер, который не так занят. Кроме того, если машина выходит из строя, планшет может быть распределен по множеству других серверов, так что влияние на производительность любой данной машины будет минимальным.

Таблицы хранятся в виде неизменяемых SSTables и хвоста журналов (один журнал на машину). Когда на машине заканчивается системная память, она сжимает некоторые планшеты, используя собственные методы сжатия Google (BMDiff и Zippy). Незначительное сжатие затрагивает только несколько планшетов, в то время как большое сжатие затрагивает всю систему таблиц и восстанавливает место на жестком диске.

Расположение планшетов Bigtable хранится в ячейках. Поиск любого конкретного планшета обрабатывается трехуровневой системой. Клиенты получают точку в таблице META0, из которой только одна. Таблица META0 отслеживает многие планшеты META1, которые содержат местоположения просматриваемых планшетов. И META0, и META1 интенсивно используют предварительную выборку и кэширование, чтобы минимизировать узкие места в системе.

Реализация

BigTable построен на файловой системе Google (GFS), которая используется в качестве резервного хранилища для файлов журналов и данных. GFS обеспечивает надежное хранилище для SSTables, проприетарного формата файлов Google, используемого для хранения табличных данных.

Еще одна служба, которую активно использует BigTable, - это Chubby, высокодоступная и надежная служба распределенных блокировок. Chubby позволяет клиентам брать блокировку, возможно, связывая ее с некоторыми метаданными, которые он может обновлять, отправляя сообщения keep alive обратно в Chubby. Блокировки хранятся в иерархической структуре именования, подобной файловой системе.

В системе Bigtable есть три основных типа серверов:

  1. Главные серверы: назначайте планшеты серверам планшетов, отслеживает расположение планшетов и перераспределяет задачи по мере необходимости.
  2. Серверы планшетов: обрабатывают запросы чтения / записи для планшетов и разделенных планшетов, когда они превышают ограничения по размеру (обычно 100–200 МБ). Если планшетный сервер выходит из строя, то каждый из 100 планшетных серверов получает по 1 новому планшету, и система восстанавливается.
  3. Серверы блокировки: экземпляры службы распределенной блокировки Chubby. Многие действия в BigTable требуют установки блокировок, в том числе открытия планшетов для записи, обеспечения одновременного наличия не более одного активного Мастера и проверки контроля доступа.

API

Типичные операции BigTable - создание и удаление таблиц и семейств столбцов, запись данных и удаление столбцов из строки. BigTable предоставляет эти функции разработчикам приложений в API. Транзакции поддерживаются на уровне строк, но не для нескольких ключей строк.

Ссылки

Связанные теги