Z jakiej bazy danych korzysta Google?


370

Czy to Oracle, MySQL, czy coś, co sami zbudowali?


187
Użyje

340
Hej, nie wal go, skończyłem tutaj z Google Search Lol.
Shawn Mclean,

141
Czy to jeszcze ironia, że ​​najlepszym wynikiem wyszukiwania „Bazy danych Google” w Google jest teraz ta strona, na której pierwszym komentarzem jest użycie Google?
Patrick Szalapski

89
@Patrick Szalapski brzmi jak przepełnienie stosu.
Thomas

5
Przed wyszukiwaniem zastanawiałem się, czy Google udzieli mi właściwej odpowiedzi, ale proszę bardzo: P
Abdul Saboor

Odpowiedzi:


581

Duży stół

Rozproszony system przechowywania danych strukturalnych

Bigtable to rozproszony system pamięci masowej (zbudowany przez Google) do zarządzania danymi strukturalnymi, zaprojektowany do skalowania do bardzo dużego rozmiaru: petabajtów danych na tysiącach serwerów towarowych.

Wiele projektów w Google przechowuje dane w Bigtable, w tym indeksowanie stron internetowych, Google Earth i Google Finance. Aplikacje te nakładają na Bigtable bardzo różne wymagania, zarówno pod względem wielkości danych (od adresów URL, stron internetowych po zdjęcia satelitarne), jak i wymagań dotyczących opóźnień (od masowego przetwarzania zaplecza do udostępniania danych w czasie rzeczywistym).

Pomimo tych zróżnicowanych wymagań, Bigtable z powodzeniem dostarczył elastyczne, wysokowydajne rozwiązanie dla wszystkich tych produktów Google.

Niektóre funkcje

  • szybki i wyjątkowo duży system DBMS
  • rzadka, rozproszona wielowymiarowa posortowana mapa, dzieląca cechy baz danych zarówno zorientowanych na wiersze, jak i na kolumny.
  • zaprojektowane do skalowania do zakresu petabajtów
  • działa na setkach lub tysiącach maszyn
  • łatwo jest dodać więcej komputerów do systemu i automatycznie zacząć korzystać z tych zasobów bez konieczności ponownej konfiguracji
  • każda tabela ma wiele wymiarów (z których jeden jest polem czasu, umożliwiającym wersjonowanie)
  • tabele są zoptymalizowane pod kątem systemu plików GFS (Google File System), ponieważ są podzielone na wiele tabletów - segmenty tabeli są podzielone wzdłuż wybranego wiersza, tak aby rozmiar tabletu wynosił ~ 200 megabajtów.

Architektura

BigTable nie jest relacyjną bazą danych. Nie obsługuje złączeń ani nie obsługuje bogatych zapytań podobnych do SQL. Każda tabela jest wielowymiarową rzadką mapą. Tabele składają się z wierszy i kolumn, a każda komórka ma znacznik czasu. Może istnieć wiele wersji komórki z różnymi znacznikami czasu. Znacznik czasu pozwala na takie operacje, jak „wybieranie wersji n tej strony” lub „usuwanie komórek starszych niż określona data / godzina”.

Aby zarządzać ogromnymi tabelami, Bigtable dzieli tabele na granicach wierszy i zapisuje je jako tablety. Tablet ma około 200 MB, a każde urządzenie zapisuje około 100 tabletek. Ta konfiguracja umożliwia rozłożenie tabletów z jednego stołu na wiele serwerów. Pozwala także na precyzyjne równoważenie obciążenia. Jeśli jeden stół odbiera wiele zapytań, może zrzucić inne tablety lub przenieść zajęty stół na inny komputer, który nie jest tak zajęty. Ponadto w przypadku awarii komputera tablet może zostać rozłożony na wiele innych serwerów, dzięki czemu wpływ na wydajność danego komputera jest minimalny.

Tabele są przechowywane jako niezmienne tabele SST i ogon dzienników (jeden dziennik na maszynę). Gdy w urządzeniu zabraknie pamięci systemowej, kompresuje niektóre tablety przy użyciu zastrzeżonych przez Google technik kompresji (BMDiff i Zippy). Niewielkie zagęszczenia obejmują tylko kilka tabletów, a główne zagęszczania dotyczą całego systemu tabel i odzyskiwania miejsca na dysku twardym.

Lokalizacje tabletów Bigtable są przechowywane w komórkach. Wyszukiwanie każdego konkretnego tabletu jest obsługiwane przez trójwarstwowy system. Klienci otrzymują punkt do tabeli META0, której jest tylko jedna. Tabela META0 śledzi wiele tabletów META1, które zawierają lokalizacje badanych tabletów. Zarówno META0, jak i META1 intensywnie korzystają z pobierania wstępnego i buforowania, aby zminimalizować wąskie gardła w systemie.

Realizacja

BigTable jest oparty na systemie plików Google (GFS), który jest używany jako magazyn kopii zapasowych plików dziennika i danych. GFS zapewnia niezawodne miejsce do przechowywania SSTables, zastrzeżonego przez Google formatu plików służącego do przechowywania danych w tabeli.

Inną usługą, z której korzysta BigTable, jest Chubby , wysoce dostępna, niezawodna usługa rozproszonej blokady. Chubby pozwala klientom na blokadę, prawdopodobnie kojarząc ją z niektórymi metadanymi, które może odnowić, wysyłając z powrotem wiadomości Chubby. Blokady są przechowywane w hierarchicznej strukturze nazewnictwa podobnej do systemu plików.

W systemie Bigtable istnieją trzy podstawowe typy serwerów :

  1. Serwery główne: przypisuj tablety do serwerów tabletów, śledź lokalizację tabletów i w razie potrzeby redystrybuuj zadania.
  2. Serwery tabletów: obsługują żądania odczytu / zapisu dla tabletów i tabletów podzielonych, gdy przekroczą limit rozmiaru (zwykle 100 MB - 200 MB). Jeśli serwer tabletu ulegnie awarii, wówczas 100 serwerów tabletu odbierze 1 nowy tablet i system zostanie przywrócony.
  3. Zablokuj serwery: instancje rozproszonej usługi blokady Chubby. Wiele działań w BigTable wymaga nabywania blokad, w tym otwierania tabletów do pisania, upewnienia się, że nie jest więcej niż jeden aktywny Master na raz, oraz sprawdzania kontroli dostępu.

Przykład z artykułu badawczego Google:

alternatywny tekst

Fragment przykładowej tabeli przechowującej strony internetowe. Nazwa wiersza to odwrócony adres URL . Rodzina kolumn zawartości zawiera zawartość strony , a rodzina kolumn kotwicy zawiera tekst wszystkich kotwic, które odwołują się do strony. Strona główna CNN jest przywoływana zarówno przez stronę główną Sports Illustrated, jak i MY-look, więc wiersz zawiera kolumny o nazwach anchor:cnnsi.comi anchor:my.look.ca. Każda komórka kotwicząca ma jedną wersję ; kolumna zawartość ma trzy wersje , na znaczniki czasu t3, t5i t6.

API

Typowe operacje na BigTable to tworzenie i usuwanie tabel i rodzin kolumn, zapisywanie danych i usuwanie kolumn z wiersza. BigTable udostępnia te funkcje programistom aplikacji w interfejsie API. Transakcje są obsługiwane na poziomie wiersza, ale nie dla kilku kluczy wierszy.


Oto link do pliku PDF pracy badawczej .

I tutaj możesz znaleźć wideo przedstawiające Jeffa Deana z Google'a podczas wykładu na Uniwersytecie Waszyngtońskim , omawiającego system przechowywania treści Bigtable używany w backendie Google.


4
Czy ktoś wie, czy został zbudowany od podstaw, czy na podstawie jakiegoś produktu? Słyszałem, że gdzieś nie pamiętam, gdzie Google użył Oracle raz, ale upuszczają go, ponieważ potrzebują modyfikacji, których Oracle nie zrobi ani nie pozwoli. Spróbuję uzyskać link.
OscarRyz

5
Od zera, podobnie jak większość innych kluczowych kompetencji (serwer WWW, GFS, ...).
Matt J

5
Szukałem informacji o algorytmach kompresji (BMDiff i Zippy) i odkryłem, że teraz Zippy nazywa się Snappy i jest opublikowany w Google Code: code.google.com/p/snappy
helios

7
Teraz używają Spanner, następcy BigTable
deltonio2

Wygląda więc podobnie do bazy danych nosql, takiej jak Mongodb lub Marklogic.
Stuckedoverflow


32

Spanner to globalnie dystrybuowany przez Google system zarządzania relacyjnymi bazami danych (RDBMS), następca BigTable . Google twierdzi, że nie jest to czysty system relacyjny, ponieważ każda tabela musi mieć klucz podstawowy.

Oto link do artykułu.

Spanner to skalowalna, wieloplikowa, dystrybuowana globalnie i synchronicznie replikowana baza danych Google. Jest to pierwszy system, który dystrybuuje dane w skali globalnej i obsługuje zewnętrznie spójne transakcje rozproszone. Ten artykuł opisuje strukturę Spannera, jego zestaw funkcji, uzasadnienie różnych decyzji projektowych oraz nowatorski interfejs API czasu, który ujawnia niepewność zegara. Ten interfejs API i jego implementacja mają kluczowe znaczenie dla wspierania zewnętrznej spójności i szeregu zaawansowanych funkcji: nieblokujących odczytów w przeszłości, bezblokowych transakcji tylko do odczytu i zmian schematu atomowego w całym programie Spanner.

Inną bazą danych wymyśloną przez Google jest Megastore . Oto streszczenie:

Megastore to system pamięci masowej opracowany w celu spełnienia wymagań dzisiejszych interaktywnych usług online. Megastore łączy skalowalność magazynu danych NoSQL z wygodą tradycyjnego RDBMS w nowatorski sposób i zapewnia zarówno silne gwarancje spójności, jak i wysoką dostępność. Zapewniamy w pełni szeregowalną semantykę ACID w ramach drobnoziarnistych partycji danych. Partycjonowanie pozwala nam synchronicznie replikować każdy zapis w sieci rozległej z rozsądnym opóźnieniem i zapewnia płynne przełączanie awaryjne między centrami danych. W tym artykule opisano semantykę i algorytm replikacji Megastore. Opisuje także nasze doświadczenie związane z obsługą szerokiej gamy usług produkcyjnych Google zbudowanych w Megastore.


Szkoda, że ​​Spanner jest projektem zamkniętego źródła. Zgodnie z opisem chciałbym wykorzystać to również w moich projektach.
Mikko Rantalainen

2
@MikkoRantalainen Możesz sprawdzić ekosystem Apache Hadoop lub CockroachDB (choć karaluch jest alfa)
podwójny

Dzięki, CockroachDB wygląda interesująco. Muszę to przetestować, aby zobaczyć, jaki ma rodzaj wydajności. Funkcje wyglądają jak rzeczy, które chciałbym mieć.
Mikko Rantalainen,

1
Spanner jest dostępny dla wszystkich użytkowników Google Cloud od 2017 r .: cloud.google.com/spanner
Miscreant

19

Jak wspomnieli inni, Google korzysta z własnego rozwiązania o nazwie BigTable i opublikowało kilka artykułów opisujących to w prawdziwym świecie.

Apaczowie mają implementację pomysłów przedstawionych w tych artykułach zwanych HBase . HBase jest częścią większego projektu Hadoop, który według ich strony „jest platformą programową, która pozwala łatwo pisać i uruchamiać aplikacje przetwarzające ogromne ilości danych”. Niektóre testy porównawcze są imponujące. Ich miejsce jest w http://hadoop.apache.org .


Nie znaleziono linku 404
Shivam Jha,


9

Być może warto również wiedzieć, że BigTable nie jest relacyjną bazą danych (jak MySQL), ale ogromną (rozproszoną) tabelą skrótów, która ma bardzo różne cechy. Możesz bawić się z (ograniczoną wersją) BigTable na platformie Google AppEngine .

Oprócz wspomnianego powyżej Hadoop istnieje wiele innych implementacji, które próbują rozwiązać te same problemy, co BigTable (skalowalność, dostępność). Widziałem wczoraj fajny wpis na blogu, w którym wymieniono większość z nich tutaj .


6

Google używa głównie Bigtable.

Bigtable to rozproszony system pamięci masowej do zarządzania danymi strukturalnymi, zaprojektowany do skalowania do bardzo dużych rozmiarów.

Aby uzyskać więcej informacji, pobierz dokument stąd .

Google korzysta również z baz danych Oracle i MySQL w niektórych swoich aplikacjach.

Wszelkie dodatkowe informacje, które możesz dodać, są bardzo mile widziane.


17
Google also use Oracle- potrzebne odniesienie.
użytkownik

@ użytkownik cloud.google.com/sql/docs ? Jeśli programiści mogą korzystać z MySQL, Google musi przynajmniej stworzyć „translator baz danych” z MySQL i Bigtable.

1

Usługi Google mają architekturę trwałości polyglot. BigTable jest wykorzystywany przez większość swoich usług, takich jak YouTube, wyszukiwarka Google, Google Analytics itp. Usługa wyszukiwania początkowo korzystała z MapReduce ze względu na infrastrukturę indeksującą, ale później przeszła na BigTable podczas wydania Caffeine.

Magazyn danych Google Cloud ma ponad 100 aplikacji produkowanych w Google zarówno dla użytkowników wewnętrznych, jak i zewnętrznych. Aplikacje takie jak Gmail, Picasa, Kalendarz Google, Android Market i App Engine korzystają z Cloud Datastore i Megastore.

Trendy Google używają MillWheel do przetwarzania strumieniowego. Google Ads początkowo używał MySQL, a później migrował do F1 DB - niestandardowej pisemnej rozproszonej relacyjnej bazy danych. Youtube używa MySQL z Vitess. Google przechowuje eksabajty danych na serwerach towarowych za pomocą systemu plików Google.

Źródło: Bazy danych Google: W jaki sposób Google Services przechowują dane w skali Petabyte-Exabyte?

Baza danych YouTube - w jaki sposób przechowuje tak wiele filmów, nie zabraknie miejsca?

wprowadź opis zdjęcia tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.