Qual banco de dados o Google usa?

370

É Oracle ou MySQL ou algo que eles mesmos construíram?

solrevdev
fonte
187
Ele vai usar o Google quando ele quer descobrir o que pilha banco de dados usa estouro
fly-by-wire
340
Ei, não batê-lo, acabei aqui de uma pesquisa no google lol.
precisa
141
É mais irônico que o principal resultado da pesquisa no "Banco de dados do Google" no Google seja agora esta página, na qual o primeiro comentário é usar o Google?
Patrick Szalapski 31/08/10
89
@Patrick Szalapski parece uma situação de estouro de pilha.
Thomas
5
Antes de procurar eu queria saber se o Google vai me deu resposta certa, mas vamos lá: P
Abdul Saboor

Respostas:

581

Mesa grande

Um sistema de armazenamento distribuído para dados estruturados

O Bigtable é um sistema de armazenamento distribuído (desenvolvido pelo Google) para gerenciar dados estruturados projetados para serem dimensionados para um tamanho muito grande: petabytes de dados em milhares de servidores comuns.

Muitos projetos no Google armazenam dados no Bigtable, incluindo indexação na web, Google Earth e Google Finance. Esses aplicativos impõem demandas muito diferentes ao Bigtable, tanto em termos de tamanho dos dados (de URLs a páginas da Web em imagens de satélite) quanto em requisitos de latência (do processamento em massa de back-end à veiculação de dados em tempo real).

Apesar dessas demandas variadas, a Bigtable forneceu com sucesso uma solução flexível e de alto desempenho para todos esses produtos do Google.

Algumas funcionalidades

  • DBMS rápido e extremamente em grande escala
  • um mapa ordenado multidimensional disperso e distribuído, compartilhando características dos bancos de dados orientados a linhas e orientados a colunas.
  • projetado para escalar na faixa de petabytes
  • funciona em centenas ou milhares de máquinas
  • é fácil adicionar mais máquinas ao sistema e começar automaticamente a tirar proveito desses recursos sem nenhuma reconfiguração
  • cada tabela possui várias dimensões (uma das quais é um campo para o tempo, permitindo controle de versão)
  • as tabelas são otimizadas para o GFS (Google File System) ao serem divididas em vários tablets - os segmentos da tabela são divididos ao longo de uma linha escolhida de forma que o tablet tenha aproximadamente 200 megabytes de tamanho.

Arquitetura

BigTable não é um banco de dados relacional. Ele não oferece suporte a junções nem a consultas avançadas do tipo SQL. Cada tabela é um mapa esparso multidimensional. As tabelas consistem em linhas e colunas e cada célula tem um carimbo de hora. Pode haver várias versões de uma célula com carimbos de hora diferentes. O registro de data e hora permite operações como "selecione as versões desta página da Web" ou "exclua células anteriores a uma data / hora específica".

Para gerenciar as grandes tabelas, o Bigtable divide as tabelas nos limites das linhas e as salva como tablets. Um tablet tem cerca de 200 MB e cada máquina economiza cerca de 100 comprimidos. Essa configuração permite que tablets de uma única tabela sejam distribuídos entre muitos servidores. Ele também permite o balanceamento de carga refinado. Se uma tabela estiver recebendo muitas consultas, ela poderá liberar outros tablets ou mover a tabela ocupada para outra máquina que não esteja tão ocupada. Além disso, se uma máquina cair, um tablet poderá se espalhar por muitos outros servidores, para que o impacto no desempenho de qualquer máquina seja mínimo.

As tabelas são armazenadas como SSTables imutáveis ​​e um final de logs (um log por máquina). Quando uma máquina fica sem memória do sistema, compacta alguns tablets usando técnicas de compressão proprietárias do Google (BMDiff e Zippy). As pequenas compactação envolvem apenas alguns tablets, enquanto as principais compactação envolvem todo o sistema de tabelas e recuperam espaço no disco rígido.

Os locais dos tablets Bigtable são armazenados nas células. A pesquisa de qualquer tablet em particular é realizada por um sistema de três camadas. Os clientes obtêm um ponto para uma tabela META0, da qual existe apenas uma. A tabela META0 controla muitos tablets META1 que contêm os locais dos tablets que estão sendo procurados. O META0 e o META1 fazem uso intenso de pré-busca e armazenamento em cache para minimizar gargalos no sistema.

Implementação

BigTable é construído no sistema de arquivos do Google (GFS), usado como repositório de arquivos de log e dados. O GFS fornece armazenamento confiável para o SSTables, um formato de arquivo proprietário do Google usado para manter os dados da tabela.

Outro serviço que o BigTable faz uso pesado é o Chubby , um serviço de bloqueio distribuído confiável e altamente disponível. O Chubby permite que os clientes bloqueiem, possivelmente associando-o a alguns metadados, que podem ser renovados enviando mensagens mantidas ativas de volta ao Chubby. Os bloqueios são armazenados em uma estrutura de nomeação hierárquica semelhante ao sistema de arquivos.

Existem três tipos principais de servidores de interesse no sistema Bigtable:

  1. Servidores principais: atribua tablets a servidores de tablet, monitora onde os tablets estão localizados e redistribui as tarefas conforme necessário.
  2. Servidores de tablet: lida com solicitações de leitura / gravação de tablets e tablets divididos quando excedem os limites de tamanho (geralmente de 100 MB a 200 MB). Se um servidor de tablet falhar, 100 servidores de tablet capturam 1 novo tablet e o sistema se recupera.
  3. Servidores de bloqueio: instâncias do serviço de bloqueio distribuído Chubby. Muitas ações no BigTable exigem a aquisição de bloqueios, incluindo a abertura de tablets para gravação, garantindo que não haja mais de um Mestre ativo por vez e verificação de controle de acesso.

Exemplo do trabalho de pesquisa do Google:

texto alternativo

Uma fatia de uma tabela de exemplo que armazena páginas da Web. O nome da linha é um URL invertido . A família de colunas de conteúdo contém o conteúdo da página e a família de colunas de âncora contém o texto de qualquer âncora que faça referência à página. A home page da CNN é referenciada pelas home pages Sports Illustrated e MY-look, portanto, a linha contém colunas nomeadas anchor:cnnsi.come anchor:my.look.ca. Cada célula âncora possui uma versão ; a coluna de conteúdo possui três versões , nos registros de data t3e hora t5, e t6.

API

As operações típicas do BigTable são criação e exclusão de tabelas e famílias de colunas, gravação de dados e exclusão de colunas de uma linha. O BigTable fornece essas funções para desenvolvedores de aplicativos em uma API. As transações são suportadas no nível da linha, mas não em várias chaves de linha.


Aqui está o link para o PDF do trabalho de pesquisa .

E aqui você pode encontrar um vídeo mostrando Jeff Dean, do Google, em uma palestra na Universidade de Washington , discutindo o sistema de armazenamento de conteúdo Bigtable usado no back-end do Google.

splattne
fonte
4
Alguém sabe se foi construído a partir do zero ou com base em algum produto? Ouvi em algum lugar que não me lembro onde, que o Google usou o Oracle uma vez, mas eles o abandonam porque precisam de algumas modificações que o Oracle não fará nem permite que façam. Vou tentar obter o link.
OscarRyz 25/02/09
5
É do zero, como a maioria das outras competências essenciais (servidor web, GFS, ...).
Matt J
5
Eu estava procurando informações sobre os algoritmos de compactação (BMDiff e Zippy) e descobri que agora o Zippy se chama Snappy e é publicado no Google Code: code.google.com/p/snappy
helios
7
Agora eles usam Spanner, o sucessor do BigTable
deltonio2
Portanto, parece semelhante ao banco de dados nosql, como o Mongodb ou o Marklogic.
stuckedoverflow
32

Spanner é o sistema de gerenciamento de banco de dados relacional distribuído globalmente (RDBMS) do Google, o sucessor do BigTable . O Google alega que não é um sistema relacional puro, porque cada tabela deve ter uma chave primária.

Aqui está o link do artigo.

O Spanner é o banco de dados escalável, com várias versões, distribuído globalmente e replicado de forma síncrona do Google. É o primeiro sistema a distribuir dados em escala global e dar suporte a transações distribuídas externamente consistentes. Este artigo descreve como o Spanner está estruturado, seu conjunto de recursos, a lógica subjacente a várias decisões de design e uma nova API de tempo que expõe a incerteza do relógio. Essa API e sua implementação são essenciais para suportar a consistência externa e uma variedade de recursos poderosos: leituras sem bloqueio no passado, transações somente leitura sem bloqueio e alterações de esquema atômico em todo o Spanner.

Outro banco de dados inventado pelo Google é o Megastore . Aqui está o resumo:

O Megastore é um sistema de armazenamento desenvolvido para atender aos requisitos dos serviços online interativos atuais. O Megastore combina a escalabilidade de um armazenamento de dados NoSQL com a conveniência de um RDBMS tradicional de uma maneira inovadora e fornece garantias fortes de consistência e alta disponibilidade. Fornecemos semânticas ACID totalmente serializáveis ​​em partições refinadas de dados. Esse particionamento nos permite replicar de forma síncrona cada gravação em uma rede de área ampla com latência razoável e oferecer suporte a failover contínuo entre os datacenters. Este artigo descreve o algoritmo de semântica e replicação do Megastore. Também descreve nossa experiência no suporte a uma ampla variedade de serviços de produção do Google criados com a Megastore.

do utilizador
fonte
É uma pena que o Spanner seja um projeto de código fechado. De acordo com a descrição, eu adoraria usar isso também nos meus projetos.
Mikko Rantalainen
2
@MikkoRantalainen Você pode querer verificar o ecossistema Apache Hadoop ou o CockroachDB (embora o Cockroach seja alfa)
dualou
Obrigado, o CockroachDB parece interessante. Eu tenho que testá-lo para ver que tipo de desempenho ele tem. Os recursos parecem com as coisas que eu gostaria de ter.
Mikko Rantalainen
11
A chave inglesa está disponível para todos usarem no Google Cloud desde 2017: cloud.google.com/spanner
Miscreant
19

Como outros já mencionaram, o Google usa uma solução doméstica chamada BigTable e eles lançaram alguns documentos descrevendo-a no mundo real.

O pessoal do Apache implementa as idéias apresentadas nesses documentos, chamadas HBase . O HBase faz parte do projeto maior do Hadoop, que de acordo com o site "é uma plataforma de software que permite escrever e executar facilmente aplicativos que processam grandes quantidades de dados". Alguns dos benchmarks são bastante impressionantes. O site deles está em http://hadoop.apache.org .

EvilRyry
fonte
O link não foi encontrado 404
Shivam Jha
9

E talvez também seja útil saber que o BigTable não é um banco de dados relacional (como MySQL), mas uma enorme tabela de hash (distribuída) que possui características muito diferentes. Você pode brincar com (uma versão limitada) do BigTable na plataforma Google AppEngine .

Ao lado do Hadoop mencionado acima, existem muitas outras implementações que tentam resolver os mesmos problemas que o BigTable (escalabilidade, disponibilidade). Ontem vi um bom post de blog listando a maioria deles aqui .

Koen Bok
fonte
6

O Google usa principalmente o Bigtable.

O Bigtable é um sistema de armazenamento distribuído para gerenciar dados estruturados projetados para serem dimensionados para um tamanho muito grande.

Para mais informações, baixe o documento aqui .

O Google também usa bancos de dados Oracle e MySQL para alguns de seus aplicativos.

Mais informações que você pode adicionar são muito apreciadas.

Suresh Kumar Amrani
fonte
17
Google also use Oracle- referência necessária.
usuário
@user cloud.google.com/sql/docs ? Se os desenvolvedores podem usar o MySQL, o Google deve, pelo menos, ter criado um "tradutor de banco de dados" com o MySQL e o Bigtable.
1

Os serviços do Google têm uma arquitetura de persistência poliglota. O BigTable é alavancado pela maioria de seus serviços, como YouTube, Pesquisa do Google, Google Analytics etc. O serviço de pesquisa inicialmente usou o MapReduce para sua infraestrutura de indexação, mas depois passou para o BigTable durante o lançamento do Caffeine.

O armazenamento de dados do Google Cloud tem mais de 100 aplicativos em produção no Google, tanto para usuários internos quanto externos. Aplicativos como Gmail, Picasa, Google Agenda, Android Market e AppEngine usam o Cloud Datastore & Megastore.

O Google Trends usa o MillWheel para processamento de fluxo. O Google Ads inicialmente usou o MySQL e depois migrou para o F1 DB - um banco de dados relacional distribuído e personalizado. O YouTube usa o MySQL com Vitess. O Google armazena exabytes de dados nos servidores de commodities com a ajuda do Google File System.

Fonte: Bancos de dados do Google: como os serviços do Google armazenam dados da escala de petabytes e exabytes?

Banco de Dados do YouTube - Como ele armazena tantos vídeos sem ficar sem espaço de armazenamento?

insira a descrição da imagem aqui

oprimido
fonte