BigTable - это распределенная проприетарная, то есть не распространяемая, система для управления большими объемами данных. Она была создана Google и используется более чем в 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 - экспериментальная СУБД для управления данными в облаке.
Внутри Google функционирует более 500 экземпляров (cells) BigTable , крупнейший из которых насчитывает более 3 тысяч машин, хранящих свыше 6 петабайт данных. Наиболее загруженные экземпляры BigTable обслуживают в круглосуточном режиме более 500 тысяч запросов в секунду.
BigTable – многоразмерная (multidimentional) и многоядерная (multimap) СУБД. Данные в ней хранятся в виде простых строк. Ключами для доступа к данным являются три строки:
Таким образом, получаем (string, string, int64) ->> (string);
Строки в базе данных отсортированы по этому ключу. Все данные делятся на некоторые диапазоны значений данного ключа, которые динамически изменяются. Диапазон значений называется таблеткой (tablet) и именно он является единицей балансировки нагрузки. Клиент может указать какие данные должны храниться в непосредственной близости друг от друга, и соответственно этим добиться удобного и быстрого доступа к данным. То есть связанная информация будет храниться в одном месте.
Относительно этого ключа данные делятся на семейства столбцов (column families). Обычно в них хранится информация одного типа. Они являются единицей доступа к данным и имеют наименование: family.qualifier.
Для каждой сохраненной строчки имеется несколько версий. Они различаются временной меткой, причем в базе они хранятся сортированными, начиная от самых новых, заканчивая самыми старыми, для того, чтобы доступ к последней версии был максимально быстрым. Также в BigTable существует сборщик мусора (garbage-collector). В настройках базы можно указать, сколько версий будет храниться для каждой ячейки.
Bigtable позволяет:
Дополнительно BigTable может выполнять более сложные операции, такие как
BigTable основана на
Также в ней используются многие технологии и алгоритмы, например, секретный алгоритм сжатия (Zippy) для уменьшения объема данных.
В общем, структура BigTable состоит из:
Каждый сервер управляет некоторым набором таблеток (от ~10 до 1000 штук), причем каждая единица информации занимает примерно 100-200 Мб.
BigTable - это система управления большими объемами данных. Она является проприетарной, то есть используется только в Google. Доступ к ней некоторым образом предоставляет Google App Engine.
Существуют некоторые аналоги, которые основаны на выложенной в сети информации о том, как работает BigTable. Такими аналогами являются
HyperTable - система предназначена для управления хранением данных и обработки информации в больших кластерах серверов;
HBase - система написана на Java, добавляет поддержку Bigtable в ядро Hadoop;
Cassandra - распределённая система хранения данных Facebook, основанная на модели данных Bigtable;
Project Voldemort - распределённая система хранения данных используемая LinkedIn;
Neptune - система написана на Java, использует компоненты Hadoop, ZooKeeper и HDFS;
KDI — клон BigTable созданный в Kosmix.