Яку базу даних використовує Google?


370

Це Oracle чи MySQL чи щось вони створили самі?


187
Він використовуватиме Google, коли захоче дізнатись, що використовує переповнення стека баз даних
flybywire

340
Гей, не лай його, я опинився тут із пошуку Google lol.
Шон Мклін

141
Чи додатково іронізує те, що головним результатом пошуку "Бази даних Google" в Google є саме ця сторінка, на якій перший коментар - це використання Google?
Патрік Шалапський,

89
@Patrick Szalapski звучить як ситуація переповнення стека.
Томас

5
Перш ніж шукати, мені було цікаво, чи Google дасть мені правильну відповідь, але ось ми підемо: P
Абдул Сабур

Відповіді:


581

Bigtable

Розподілена система зберігання структурованих даних

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 вимагають придбання замків, включаючи відкриття планшетів для запису, гарантуючи, що одночасно не більше ніж один активний Master та перевірка контролю доступу.

Приклад з дослідницької роботи Google:

alt текст

Фрагмент прикладної таблиці, в якій зберігаються веб-сторінки. Назва рядка - це зворотна 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
Хтось знає, чи було це побудовано з нуля або на основі якогось продукту? Я десь чув, я не пам’ятаю, де гугл колись використовував Oracle, але вони його відкидають, оскільки їм потрібні деякі модифікації, які Oracle не зробить і не дозволить їм робити. Я спробую отримати посилання.
ОскарРиз

5
Це з нуля, як і більшість їх інших основних компетенцій (веб-сервер, GFS, ...).
Метт Дж

5
Я шукав інформацію про алгоритми стиснення (BMDiff і Zippy) і виявив, що зараз Zippy називається Snappy і опублікований в Google Code: code.google.com/p/snappy
helios

7
Зараз вони використовують Spanner, спадкоємця BigTable
deltonio2

Отже, це схоже на базу даних noql, таких як Mongodb або Marklogic.
Застряглий потік


32

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

Ось посилання статті.

Spanner - це масштабована, багатоверсійна версія Google, база даних, що розподіляється у всьому світі та синхронно-реплікується. Це перша система, яка розповсюджує дані в глобальному масштабі та підтримує розподілені трансакції зовні. У цьому документі описано структуру Spanner, його набір функцій, обґрунтування, що лежать в основі різних дизайнерських рішень, та новий API часу, який виявляє тактову невизначеність. Цей API та його реалізація мають вирішальне значення для підтримки зовнішньої узгодженості та різноманітних потужних функцій: незаблокування читання в минулому, транзакції без читання лише блокування та зміни атомної схеми на всьому протязі Spanner.

Інша база даних, винайдена Google, - Megastore . Ось реферат:

Megastore - це система зберігання даних, розроблена для задоволення потреб сучасних інтерактивних онлайн-сервісів. Megastore по-новому поєднує масштабованість сховища даних NoSQL із зручністю традиційних RDBMS та забезпечує як міцні гарантії послідовності, так і високу доступність. Ми забезпечуємо повністю серіалізаційну семантику ACID в тонкозернистих розділах даних. Цей розділ дозволяє синхронно копіювати кожне записування в широкій мережі з розумною затримкою та підтримувати безперебійне відмовлення між центрами обробки даних. У цій роботі описаний алгоритм семантики та реплікації Мегастора. Він також описує наш досвід підтримки широкого спектру виробничих послуг Google, побудованих за допомогою Megastore.


Прикро, що Spanner є проектом із закритим джерелом. Відповідно до опису, я також хотів би використати це для своїх проектів.
Мікко Ранталайнен

2
@MikkoRantalainen Ви можете перевірити екосистему Apache Hadoop або CockroachDB (хоча тарган - альфа)
прострочено

Спасибі, CockroachDB виглядає цікаво. Я маю протестувати це, щоб побачити, яка його продуктивність. Особливості виглядають як речі, які я хотів би мати.
Мікко Ранталайнен

1
Spanner доступний для всіх, хто може користуватися Google Cloud з 2017 року: cloud.google.com/spanner
Miscreant

19

Як уже згадували інші, Google використовує домашнє рішення під назвою BigTable, і вони випустили кілька паперів, що описують це в реальному світі.

Люди Apache реалізують ідеї, представлені в цих роботах під назвою HBase . HBase є частиною більшого проекту Hadoop, який, згідно з їхнім сайтом, "є програмною платформою, яка дозволяє легко писати та запускати програми, які обробляють величезну кількість даних". Деякі з орієнтирів досить вражаючі. Їх сайт знаходиться на веб-сайті http://hadoop.apache.org .


Посилання 404 не знайдено
Shivam Jha

13

Хоча Google використовує BigTable для всіх своїх основних додатків, вони також використовують MySQL для інших (можливо, другорядних) додатків.


3
@ посилання гладкого розробника мертве; читати тут заархівовану копію: web.archive.org/web/20071102233627/http://xooglers.blogspot.com/…
josh3736

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, Google Analytics тощо. Служба пошуку спочатку використовувала MapReduce для індексування інфраструктури, але пізніше переходила на BigTable під час випуску кафени

У Google Cloud Datastore є понад 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 зберігають дані шкали Petabyte-Exabyte?

База даних YouTube - як зберігається стільки відео, не втрачаючи місця для зберігання?

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.