Какую базу данных использует Google? - PullRequest
357 голосов
/ 12 декабря 2008

Это Oracle или MySQL или что-то, что они создали сами?

Ответы [ 7 ]

565 голосов
/ 12 декабря 2008

Bigtable

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

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

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

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

Некоторые функции

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

Архитектура

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

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

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

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

Осуществление

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

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

Существует три основных типа серверов , представляющих интерес для системы Bigtable:

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

Пример из исследовательской работы Google:

alt text

фрагмент таблицы с примерами хранит веб-страницы. Имя строки обратный URL . Столбец содержимого семейство содержит содержимое страницы и семейство якорных столбцов содержит текст любых якорей , которые ссылаются на стр. На главную страницу CNN ссылаются И Спорт Иллюстрированный и MY-посмотрите домашние страницы, поэтому строка содержит столбцы с именем anchor:cnnsi.com и anchor:my.look.ca. Каждая якорная клетка имеет одну версию ; столбец содержимого имеет три версии , в метках времени t3, t5 и t6.

API

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


Вот ссылка на PDF исследовательской работы .

И здесь вы можете найти видео, показывающее Джеффа Дина из Google на лекции в Университете Вашингтона , где обсуждается система хранения контента Bigtable, используемая в бэкэнде Google.

50 голосов
/ 12 декабря 2008

Это то, что они построили сами - это называется Bigtable.

http://en.wikipedia.org/wiki/BigTable

В базе данных есть статья Google:

http://research.google.com/archive/bigtable.html

28 голосов
/ 28 сентября 2013

Spanner - глобально распределенная система управления реляционными базами данных (RDBMS) от Google, преемник BigTable . Google утверждает, что это не чисто реляционная система, поскольку каждая таблица должна иметь первичный ключ.

Здесь - ссылка на статью.

Spanner - это масштабируемая, многоверсионная, глобально распространяемая и синхронно реплицируемая база данных. Это первая система, которая распространять данные в глобальном масштабе и поддерживать внешнюю согласованность распределенные транзакции. Эта статья описывает, как работает Spanner структурированный, его набор функций, обоснование различного дизайна решения, и новый API времени, который выставляет неопределенность часов. это API и его реализация имеют решающее значение для поддержки внешних последовательность и множество мощных функций: неблокирующее чтение в прошлые транзакции только для чтения без блокировки и изменения атомарной схемы, по всему Шпаннеру.

Другая изобретенная Google база данных - Megastore . Вот реферат:

Megastore - это система хранения, разработанная для удовлетворения требований Современные интерактивные онлайн-сервисы. Megastore сочетает в себе масштабируемость хранилища данных NoSQL с удобством традиционной СУБД в новый способ, и обеспечивает как сильные гарантии согласованности и высокий доступность. Мы предоставляем полностью сериализуемую семантику ACID в пределах мелкозернистые разделы данных. Это разделение позволяет нам синхронно реплицировать каждую запись через глобальную сеть с разумная задержка и поддержка плавного переключения между центрами обработки данных. Эта статья описывает семантику и алгоритм репликации Megastore. В нем также описывается наш опыт поддержки широкого спектра Google Производственные услуги построены с Megastore.

19 голосов
/ 12 декабря 2008

Как уже упоминали другие, Google использует собственное решение под названием BigTable, и они выпустили несколько статей, описывающих его в реальном мире.

У людей Apache есть реализация идей, представленных в этих статьях, под названием HBase . HBase является частью более крупного проекта Hadoop, который, согласно их сайту ", представляет собой программную платформу, позволяющую легко создавать и запускать приложения, которые обрабатывают огромные объемы данных." Некоторые тесты впечатляют. Их сайт на http://hadoop.apache.org.

13 голосов
/ 12 декабря 2008

Хотя Google использует BigTable для всех своих основных приложений, они также используют MySQL для других (возможно, второстепенных) приложений.

9 голосов
/ 20 января 2009

И, возможно, также полезно знать, что BigTable - это не реляционная база данных (например, MySQL), а огромная (распределенная) хеш-таблица , которая имеет очень разные характеристики. Вы можете поиграть с (ограниченной версией) BigTable самостоятельно на платформе Google AppEngine .

Помимо упомянутого выше Hadoop существует множество других реализаций, которые пытаются решить те же проблемы, что и BigTable (масштабируемость, доступность). Вчера я видел хороший пост в блоге, в котором перечислено большинство из них здесь .

6 голосов
/ 14 марта 2013

Google в основном использует Bigtable.

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

Для получения дополнительной информации загрузите документ с здесь .

Google также использует базы данных Oracle и MySQL для некоторых своих приложений.

Любая дополнительная информация, которую вы можете добавить, высоко ценится.

...