Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Общий конспект по Технологии анализа и обработ...docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
2.66 Mб
Скачать
  1. Технология BigTable (Google)

Введение

Big Table является закрытой разработкой компании Google, используемой для хранения структурированных данных многочисленными сервисами и проектами Google. Внутри Google функционирует более 500 экземпляров BigTable (т.н. cells), крупнейший из которых насчитывает более 3 тысяч машин, хранящих свыше 6 петабайт данных. Наиболее загруженные экземпляры BigTable обслуживают в круглосуточном режиме более 500 тысяч запросов в секунду.

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

BigTable построена на основе собственной специализированной файловой системы - Google File System (GFS), использующей технологию Chubby Lock Service и некоторые другие продукты Google. В настоящий момент она не распространяется и не используется за пределами Google, хотя Google предлагает использовать её как часть Google App Engine, предоставляя пользователям лишь ограниченные привилегии клиентов.

Работа над BigTable была начата в 2004 году и сейчас СУБД используется в различного рода приложениях Google, таких как MapReduce, которое часто используется для создания и модификации данных хранящихся в BigTable, Google Reader, Google Maps, Google Book Search, Search_History, Google Earth, Google Analytics, Blogger.com, Google Code hosting, Orkut и YouTube. Причины, побудившие Google к созданию собственной базы данных – масштабируемость, высокая производительность и живучесть.

На основе BigTable в 2009 году была создана Google Fusion Tables - экспериментальная СУБД для управления данными в облаке.

При создании системы акцент делался на следующих характеристиках: универсальность, масштабируемость, высокая производительность и надежность. Во многом BigTable напоминает базу данных и использует многие стратегии реализации, применяемые в высокопроизводительных СУБД. Однако, как будет ясно из описания, существует ряд принципиальных отличий BigTable от традиционных систем.

Общее техническое описание

BigTable – многоразмерная (multidimentional) и многоядерная (multimap) СУБД. В отличие от реляционной модели данных, в BigTable применяется более простая модель разреженной, многомерной, сортированной хэш-таблицы. Данные в ней хранятся в виде простых строк. Ключами для доступа к данным являются три строки:

  • Ключ строки (row key)

  • Ключ столбца (column key)

  • Временная метка (timestamp)

Таким образом, получаем (string, string, int64) ->> (string);

Подобную хэш-таблицу можно представить в виде таблицы, каждая строка и столбец которой имеют уникальные ключи. В ячейках таблицы могут содержаться значения, причем у значения может быть несколько версий, с каждой из которых связана временная метка (timestamp). Иными словами, у таблицы есть несколько временных слоев. Выбранная модель данных обусловлена спецификой приложений Google. Например, Web-страницы могут храниться в таблице, ключами строк в которой являются URL страниц, а в ячейках находятся несколько версий содержимого страницы, загруженных роботом в разные моменты времени. Другой особенностью хранимых данных является то, что в разных строках таблиц могут быть заполнены различные группы столбцов. Зачастую таблицы являются разреженными, что повлияло на выбор модели хранения данных, ориентированной на столбцы (column-oriented).

Ключ строки (row key)

Строки в базе данных отсортированы по этому ключу. Все данные делятся на некоторые диапазоны значений данного ключа, которые динамически изменяются. Диапазон значений называется таблеткой (tablet) и именно он является единицей балансировки нагрузки. Клиент может указать, какие данные должны храниться в непосредственной близости друг от друга, и соответственно этим добиться удобного и быстрого доступа к данным. То есть связанная информация будет храниться в одном месте.

Ключ столбца (column key)

Относительно этого ключа данные делятся на семейства столбцов (column families). Обычно в них хранится информация одного типа. Они являются единицей доступа к данным. Ключи столбцов также организованы в группы, называемые семействами столбцов (column family). Ключ столбца имеет вид family:qualifier, где family – имя семейства, а qualifier – уникальное имя столбца в рамках семейства.

Временная метка (timestamp)

Для каждой сохраненной строчки имеется несколько версий. Они различаются временной меткой, причем в базе они хранятся сортированными, начиная от самых новых, заканчивая самыми старыми, для того, чтобы доступ к последней версии был максимально быстрым. Также в BigTable существует сборщик мусора (garbage-collector). В настройках базы можно указать, сколько версий будет храниться для каждой ячейки.

API

В отличие от реляционных СУБД, BigTable не поддерживает язык SQL. Доступ к BigTable из приложений обеспечивается с помощью клиентской библиотеки, реализующей довольно простой интерфейс прикладного программирования (API). BigTable API содержит операции как для управления таблицами и семействами столбцов, так и для чтения и записи данных.

BigTable позволяет:

  • Создавать и удалять таблицы и семейства столбцов

  • Изменять метаданные для кластера, таблицы и семейства столбцов (Например, изменение прав доступа)

  • Клиенты могут добавлять и удалять значения из базы данных, находить отдельный набор строк, а также находить значения в некотором диапазоне. Поиск может проводиться по урезанному набору данных: например, по определенному диапазону временных меток, или по ключам, ограниченным некоторым регулярным выражением.

Дополнительно BigTable может выполнять более сложные операции, такие как

  • Использование значения некоторой ячейки как целочисленного счетчика

  • Выполнение клиентских скриптов на стороне сервера. Скрипты должны быть написаны на Sawzall - языке, разработанном Google для обработки данных. Правда, на данный момент скрипты не могут записывать информацию обратно в базу, но позволяют выполнить преобразования данных, в том числе фильтрацию и группировку по многим параметрам.

Используемые продукты

BigTable основана на

  • Google File System (GFS) для хранения файлов

  • SSTable - формат файлов, который представляет собой карту хранения данных в BigTable

  • Chubby - сервис, который используется в том числе для хранения информационной схемы базы данных (information schema). Он предоставляет постоянный доступ к информации.

Также в ней используются многие технологии и алгоритмы, например, секретный алгоритм сжатия (Zippy) для уменьшения объема данных.

Реализация

В общем, структура BigTable состоит из:

  • Библиотеки, которая находится на каждом клиенте;

  • Одного главного мастер-сервера. В обязанности главного сервера входит распределение таблетов по таблет-серверам, отслеживание состояния таблет-серверов, балансировка нагрузки между среверами и удаление неиспользуемых файлов. Кроме того, главный сервер управляет созданием и изменением таблиц и семейств столбцов. Каждый таблет-сервер предоставляет доступ к выделенному набору таблетов. Сервер обрабатывает запросы на чтение и запись в обслуживаемые таблеты, а также разбивает таблеты, размер которых стал слишком большим. Как и в предыдущих описанных системах, данные передаются между клиентом и таблет-сервером напрямую, минуя главный сервер. В отличие от GFS, клиенты не используют главный сервер для определения местоположения таблетов. Поэтому главный сервер обычно загружен слабо;

  • Множества серверов, на которых хранится информация (Tablet Servers). Сами таблеты хранятся в виде файлов в распределенной файловой системе GFS (см. раздел 1.1), что обеспечивает надежное хранение данных. Список GFS-файлов с данными таблета хранится в таблице METADATA. Для хранения данных BigTable используется специальный формат SSTable, позволяющий реализовать эффективный поиск значений по их ключам, а также итерации по значениям, связанным с заданным диапазоном ключей. SSTable состоит из несколько блоков и индекса блоков, хранимого в конце файла. Для быстрого поиска блоков таблет-сервер загружает индекс в оперативную память. Каждый сервер управляет некоторым набором таблеток (от ~10 до 1000 штук), причем каждая единица информации занимает примерно 100-200 Мб.

Заключение

BigTable - это система управления большими объемами данных. В заключение, перечислим основные отличительные особенности BigTable в сравнении с реляционными СУБД:

• Ориентация на хранение больших объемов слабоструктурированных, разреженных данных;

• Высокая производительность, масштабируемость и устойчивость;

• Модель хранения, ориентированная на столбцы, аналогичная column-oriented базам данных (C-Store, Vertica, Sybase IQ, SenSage, KDB+, MonetDB/X100);

• Нет поддержки реляционной модели, типов данных у столбцов, языка SQL, транзакций и т.д. только в Google. Доступ к ней некоторым образом предоставляет Google App Engine.

Существуют некоторые аналоги, которые основаны на выложенной в сети информации о том, как работает BigTable. Такими аналогами являются:

  • HyperTable - система предназначена для управления хранением данных и обработки информации в больших кластерах серверов;

  • HBase - система написана на Java, добавляет поддержку Bigtable в ядро Hadoop;

  • Cassandra - распределённая система хранения данных Facebook, основанная на модели данных Bigtable;

  • Project Voldemort - распределённая система хранения данных используемая LinkedIn;

  • Neptune - система написана на Java, использует компоненты Hadoop, ZooKeeper и HDFS;

  • KDI — клон BigTable созданный в Kosmix.

  1. MapReduce