Какую базу данных использует Google?

370

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

solrevdev
источник
187
Он будет использовать Google, когда захочет узнать, какое переполнение стека баз данных используется
flybywire
340
Эй, не ругай его, я попал сюда из поиска Google LOL.
Шон Маклин
141
Дальнейшая ирония заключается в том, что главным результатом поиска по «Базе данных Google» в Google стала эта страница, на которой первым комментарием является использование Google?
Патрик Салапски
89
@ Патрик Салапски звучит как переполнение стека.
Томас
5
Перед поиском мне было интересно, если Google даст мне правильный ответ, но здесь мы идем: P
Абдул Сабур

Ответы:

581

Большой стол

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

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

Многие проекты в Google хранят данные в Bigtable, включая веб-индексацию, Google Earth и Google Finance. Эти приложения предъявляют к 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 позволяет клиентам захватить блокировку, возможно, связав ее с некоторыми метаданными, которые он может обновить, отправив сообщения о том, что они активны, обратно в Chubby. Блокировки хранятся в иерархической структуре именования в виде файловой системы.

В системе Bigtable интерес представляют три основных типа серверов :

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

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

альтернативный текст

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

API

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


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

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

безупречно
источник
4
Кто-нибудь знает, было ли это сделано с нуля или на основе какого-то продукта? Я слышал где-то, что я не помню, где, что Google однажды использовал Oracle, но они отбрасывают его, потому что им нужны некоторые модификации, которые Oracle не сделает и не позволит им сделать. Я постараюсь получить ссылку.
OscarRyz
5
Это с нуля, как и большинство других их основных компетенций (веб-сервер, GFS, ...).
Мэтт Дж
5
Я искал информацию об алгоритмах сжатия (BMDiff и Zippy) и обнаружил, что теперь Zippy называется Snappy и опубликован в коде Google: code.google.com/p/snappy
helios
7
Теперь они используют Spanner, преемник BigTable
deltonio2
Итак, это похоже на базу данных nosql, например Mongodb или Marklogic.
stuckedoverflow
32

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

Вот ссылка на статью.

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

Еще одна база данных, изобретенная Google - Megastore . Вот тезисы:

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

пользователь
источник
Обидно, что Spanner это закрытый исходный проект. Согласно описанию, я бы тоже хотел использовать это для своих проектов.
Микко Ранталайнен,
2
@MikkoRantalainen Вы можете проверить экосистему Apache Hadoop или CockroachDB (хотя Cockroach является альфа-
версией
Спасибо, CockroachDB выглядит интересно. Я должен проверить это, чтобы увидеть, какие у него есть характеристики. Особенности выглядят так, как хотелось бы.
Микко Ранталайнен
1
Spanner доступен для всех пользователей в Google Cloud с 2017 года: cloud.google.com/spanner
Miscreant
19

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

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

EvilRyry
источник
Ссылка 404 не найдена
Shivam Jha
9

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

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

Коен Бок
источник
6

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

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

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

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

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

Суреш Кумар Амрани
источник
17
Google also use Oracle- ссылка необходима.
пользователь
@user cloud.google.com/sql/docs ? Если разработчики могут использовать MySQL, Google должен, по крайней мере, создать «переводчик базы данных» с MySQL и Bigtable.
1

Сервисы Google имеют постоянную архитектуру полиглота. BigTable используется большинством своих сервисов, таких как YouTube, Google Search, Google Analytics и т. Д. Поисковая служба первоначально использовала MapReduce для своей инфраструктуры индексирования, но позже перешла на BigTable во время выпуска Caffeine.

В хранилище данных Google Cloud работает более 100 приложений в Google, как для внутренних, так и для внешних пользователей. Такие приложения, как Gmail, Picasa, Календарь Google, Android Market и AppEngine, используют Cloud Datastore & Megastore.

Google Trends использует MillWheel для потоковой обработки. Google Ads изначально использовал MySQL, а затем перенесен в F1 DB - пользовательскую письменную распределенную реляционную базу данных. Youtube использует MySQL с Vitess. Google хранит эксабайты данных на обычных серверах с помощью файловой системы Google.

Источник: Google Базы данных: Как Службы Google хранят данные в масштабе петабайта-эксабайта?

База данных YouTube - Как в нем хранится так много видео без недостатка места на диске?

введите описание изображения здесь

неудачник
источник