¿Qué base de datos usa Google?


370

¿Es Oracle o MySQL o algo que ellos mismos han construido?


187
Utilizará Google cuando quiera averiguar qué desbordamiento de la pila de la base de datos usa
flybywire

340
Oye, no lo golpees, terminé aquí de una búsqueda en google jajaja.
Shawn Mclean

141
¿Es aún más irónico que el principal resultado para buscar "Base de datos de Google" en Google sea ahora esta página, en la que el primer comentario es usar Google?
Patrick Szalapski el

89
@Patrick Szalapski suena como una situación de desbordamiento de pila.
Thomas

55
Antes de buscar, me preguntaba si Google me dará la respuesta correcta, pero aquí vamos: P
Abdul Saboor

Respuestas:


581

Mesa grande

Un sistema de almacenamiento distribuido para datos estructurados

Bigtable es un sistema de almacenamiento distribuido (creado por Google) para administrar datos estructurados que está diseñado para escalar a un tamaño muy grande: petabytes de datos en miles de servidores básicos.

Muchos proyectos en Google almacenan datos en Bigtable, incluida la indexación web, Google Earth y Google Finance. Estas aplicaciones imponen demandas muy diferentes a Bigtable, tanto en términos de tamaño de datos (desde URLs a páginas web hasta imágenes satelitales) como requisitos de latencia (desde el procesamiento masivo de back-end hasta el servicio de datos en tiempo real).

A pesar de estas demandas variadas, Bigtable ha proporcionado con éxito una solución flexible y de alto rendimiento para todos estos productos de Google.

Algunas caracteristicas

  • DBMS rápido y extremadamente grande
  • un mapa ordenado multidimensional distribuido y escaso, que comparte características de bases de datos orientadas a filas y columnas.
  • diseñado para escalar en el rango de petabytes
  • funciona en cientos o miles de máquinas
  • es fácil agregar más máquinas al sistema y comenzar a aprovechar automáticamente esos recursos sin ninguna reconfiguración
  • cada tabla tiene múltiples dimensiones (una de las cuales es un campo de tiempo, que permite el control de versiones)
  • las tablas se optimizan para GFS (Sistema de archivos de Google) al dividirse en varias tabletas: segmentos de la tabla divididos a lo largo de una fila elegida de modo que la tableta tenga un tamaño de ~ 200 megabytes.

Arquitectura

BigTable no es una base de datos relacional. No admite combinaciones ni admite consultas ricas en SQL. Cada tabla es un mapa disperso multidimensional. Las tablas consisten en filas y columnas, y cada celda tiene una marca de tiempo. Puede haber múltiples versiones de una celda con diferentes marcas de tiempo. La marca de tiempo permite operaciones como "seleccionar 'n' versiones de esta página web" o "eliminar celdas que son anteriores a una fecha / hora específica".

Para administrar las tablas enormes, Bigtable divide las tablas en los límites de las filas y las guarda como tabletas. Una tableta tiene alrededor de 200 MB, y cada máquina ahorra alrededor de 100 tabletas. Esta configuración permite que las tabletas de una sola tabla se distribuyan entre muchos servidores. También permite un equilibrio de carga de grano fino. Si una tabla recibe muchas consultas, puede eliminar otras tabletas o mover la tabla ocupada a otra máquina que no esté tan ocupada. Además, si una máquina se cae, una tableta puede extenderse a muchos otros servidores para que el impacto en el rendimiento de cualquier máquina sea mínimo.

Las tablas se almacenan como SSTables inmutables y una cola de registros (un registro por máquina). Cuando una máquina se queda sin memoria del sistema, comprime algunas tabletas usando técnicas de compresión patentadas por Google (BMDiff y Zippy). Las compactaciones menores involucran solo unas pocas tabletas, mientras que las compactaciones mayores involucran todo el sistema de tablas y recuperan espacio en el disco duro.

Las ubicaciones de las tabletas Bigtable se almacenan en celdas. La búsqueda de cualquier tableta en particular se maneja mediante un sistema de tres niveles. Los clientes obtienen un punto en una tabla META0, de la cual solo hay una. La tabla META0 realiza un seguimiento de muchas tabletas META1 que contienen las ubicaciones de las tabletas que se buscan. Tanto META0 como META1 hacen un uso intensivo de la captación previa y el almacenamiento en caché para minimizar los cuellos de botella en el sistema.

Implementación

BigTable se basa en el Sistema de archivos de Google (GFS), que se utiliza como almacén de respaldo para archivos de registro y datos. GFS proporciona almacenamiento confiable para SSTables, un formato de archivo propiedad de Google que se utiliza para conservar los datos de la tabla.

Otro servicio que utiliza BigTable es Chubby , un servicio de bloqueo distribuido confiable y de alta disponibilidad. Chubby permite a los clientes tomar un candado, posiblemente asociándolo con algunos metadatos, que puede renovar enviando mensajes vivos a Chubby. Los bloqueos se almacenan en una estructura de nomenclatura jerárquica similar a un sistema de archivos.

Existen tres tipos de servidores principales de interés en el sistema Bigtable:

  1. Servidores maestros: asigne tabletas a servidores de tableta, realice un seguimiento de dónde se encuentran las tabletas y redistribuya las tareas según sea necesario.
  2. Servidores de tabletas: manejan solicitudes de lectura / escritura para tabletas y tabletas divididas cuando exceden los límites de tamaño (generalmente 100 MB - 200 MB). Si un servidor de tableta falla, entonces 100 servidores de tableta recogen 1 tableta nueva y el sistema se recupera.
  3. Servidores de bloqueo: instancias del servicio de bloqueo distribuido Chubby. Muchas acciones dentro de BigTable requieren la adquisición de bloqueos, incluida la apertura de tabletas para escribir, lo que garantiza que no haya más de un maestro activo a la vez y la verificación del control de acceso.

Ejemplo del trabajo de investigación de Google:

texto alternativo

Una porción de una tabla de ejemplo que almacena páginas web. El nombre de la fila es una URL invertida . La familia de columnas de contenido contiene el contenido de la página , y la familia de columnas de ancla contiene el texto de cualquier ancla que haga referencia a la página. La página de inicio de CNN está referenciada por las páginas de inicio de Sports Illustrated y MY-look, por lo que la fila contiene columnas con el nombre anchor:cnnsi.comy anchor:my.look.ca. Cada celda de anclaje tiene una versión ; la columna de la contenidos tiene tres versiones , en las marcas de tiempo t3, t5y t6.

API

Las operaciones típicas de BigTable son la creación y eliminación de tablas y familias de columnas, la escritura de datos y la eliminación de columnas de una fila. BigTable proporciona estas funciones a los desarrolladores de aplicaciones en una API. Las transacciones son compatibles a nivel de fila, pero no a través de varias claves de fila.


Aquí está el enlace al PDF del trabajo de investigación .

Y aquí puede encontrar un video que muestra a Jeff Dean de Google en una conferencia en la Universidad de Washington , que discute el sistema de almacenamiento de contenido Bigtable utilizado en el backend de Google.


44
¿Alguien sabe si fue construido desde cero o basado en algún producto? Escuché en algún lugar que no recuerdo dónde, que Google usó Oracle una vez, pero lo descartaron porque necesitan algunas modificaciones que Oracle no hará ni les permitirá hacer. Intentaré obtener el enlace.
OscarRyz

55
Es desde cero, como la mayoría de sus otras competencias básicas (servidor web, GFS, ...).
Matt J

55
Estaba buscando información sobre los algoritmos de compresión (BMDiff y Zippy) y descubrí que ahora Zippy se llama Snappy y está publicado en Google Code: code.google.com/p/snappy
helios

77
Ahora usan Spanner, el sucesor de BigTable
deltonio2

Por lo tanto, se parece a la base de datos nosql como Mongodb o Marklogic.
stuckedoverflow 01 de


32

Spanner es el sistema de gestión de bases de datos relacionales (RDBMS) de distribución global de Google, el sucesor de BigTable . Google afirma que no es un sistema relacional puro porque cada tabla debe tener una clave primaria.

Aquí está el enlace del artículo.

Spanner es la base de datos escalable, de múltiples versiones, distribuida globalmente y replicada sincrónicamente. Es el primer sistema que distribuye datos a escala global y admite transacciones distribuidas externamente consistentes. Este documento describe cómo se estructura Spanner, su conjunto de características, la lógica subyacente a varias decisiones de diseño y una nueva API de tiempo que expone la incertidumbre del reloj. Esta API y su implementación son fundamentales para admitir la coherencia externa y una variedad de características potentes: lecturas sin bloqueo en el pasado, transacciones de solo lectura sin bloqueo y cambios de esquema atómico, en todo Spanner.

Otra base de datos inventada por Google es Megastore . Aquí está el resumen:

Megastore es un sistema de almacenamiento desarrollado para cumplir con los requisitos de los servicios interactivos en línea actuales. Megastore combina la escalabilidad de un almacén de datos NoSQL con la conveniencia de un RDBMS tradicional de una manera novedosa, y ofrece fuertes garantías de consistencia y alta disponibilidad. Proporcionamos semántica de ACID completamente serializable dentro de particiones de datos de grano fino. Esta partición nos permite replicar sincrónicamente cada escritura a través de una red de área amplia con latencia razonable y admite la conmutación por error sin interrupciones entre los centros de datos. Este artículo describe la semántica y el algoritmo de replicación de Megastore. También describe nuestra experiencia en el soporte de una amplia gama de servicios de producción de Google creados con Megastore.


Es una pena que Spanner sea un proyecto de código cerrado. Según la descripción, también me encantaría usar eso para mis proyectos.
Mikko Rantalainen

2
@MikkoRantalainen Es posible que desee ver el ecosistema de Apache Hadoop o CockroachDB (aunque Cockroach es alfa)
dualed

Gracias, CockroachDB se ve interesante. Tengo que probarlo para ver qué tipo de rendimiento tiene. Las características se parecen a las cosas que me gustaría tener.
Mikko Rantalainen

1
Spanner ha estado disponible para que todos lo usen en Google Cloud desde 2017: cloud.google.com/spanner
Miscreant el

19

Como otros han mencionado, Google utiliza una solución local llamada BigTable y han publicado algunos documentos que lo describen en el mundo real.

La gente de Apache tiene una implementación de las ideas presentadas en estos documentos llamada HBase . HBase es parte del proyecto más grande de Hadoop que según su sitio "es una plataforma de software que permite escribir y ejecutar fácilmente aplicaciones que procesan grandes cantidades de datos". Algunos de los puntos de referencia son bastante impresionantes. Su sitio está en http://hadoop.apache.org .


Enlace no 404 encontrado
Shivam Jha


9

Y quizás también sea útil saber que BigTable no es una base de datos relacional (como MySQL) sino una gran tabla hash (distribuida) que tiene características muy diferentes. Puede jugar con (una versión limitada) de BigTable usted mismo en la plataforma Google AppEngine .

Junto a Hadoop mencionado anteriormente, hay muchas otras implementaciones que intentan resolver los mismos problemas que BigTable (escalabilidad, disponibilidad). Ayer vi una buena publicación en el blog que enumera la mayoría de ellos aquí .


6

Google utiliza principalmente Bigtable.

Bigtable es un sistema de almacenamiento distribuido para administrar datos estructurados que está diseñado para escalar a un tamaño muy grande.

Para más información, descargue el documento desde aquí .

Google también usa bases de datos Oracle y MySQL para algunas de sus aplicaciones.

Cualquier información adicional que pueda agregar es muy apreciada.


17
Google also use Oracle- Referencia necesaria.
usuario

@user cloud.google.com/sql/docs ? Si los desarrolladores pueden usar MySQL, Google debe, al menos, haber creado un "traductor de base de datos" con MySQL y Bigtable.

1

Los servicios de Google tienen una arquitectura de persistencia políglota. BigTable es aprovechado por la mayoría de sus servicios como YouTube, Búsqueda de Google, Google Analytics, etc. El servicio de búsqueda inicialmente utilizó MapReduce para su infraestructura de indexación, pero luego pasó a BigTable durante el lanzamiento de Caffeine.

El almacén de datos de Google Cloud tiene más de 100 aplicaciones en producción en Google, tanto para usuarios internos como externos. Las aplicaciones como Gmail, Picasa, Google Calendar, Android Market y AppEngine usan Cloud Datastore & Megastore.

Google Trends utiliza MillWheel para el procesamiento continuo. Google Ads inicialmente usó MySQL luego migró a F1 DB, una base de datos relacional distribuida escrita personalizada. Youtube usa MySQL con Vitess. Google almacena exabytes de datos en los servidores básicos con la ayuda del Sistema de archivos de Google.

Fuente: Bases de datos de Google: ¿Cómo almacenan los servicios de Google los datos de escala de petabyte-exabyte?

Base de datos de YouTube: ¿cómo almacena tantos videos sin quedarse sin espacio de almacenamiento?

ingrese la descripción de la imagen aquí

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.