¿Qué base de datos utiliza Google?

Resuelto solrevdev asked hace 54 años • 8 respuestas

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

solrevdev avatar Jan 01 '70 08:01 solrevdev
Aceptado

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 de Google almacenan datos en Bigtable, incluida la indexación web, Google Earth y Google Finance. Estas aplicaciones imponen exigencias muy diferentes a Bigtable, tanto en términos de tamaño de datos (desde URL hasta páginas web e imágenes satelitales) y requisitos de latencia (desde el procesamiento masivo backend hasta el servicio de datos en tiempo real).

A pesar de estas variadas demandas, 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 de gran escala
  • un mapa ordenado multidimensional, distribuido y disperso, 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 esos recursos automáticamente sin ninguna reconfiguración
  • cada tabla tiene múltiples dimensiones (una de las cuales es un campo de tiempo, lo que permite el control de versiones)
  • Las tablas están optimizadas 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 manera que la tableta tenga un tamaño de ~200 megabytes.

Arquitectura

BigTable no es una base de datos relacional. No admite uniones ni consultas enriquecidas tipo SQL. Cada tabla es un mapa disperso multidimensional. Las tablas constan de filas y columnas y cada celda tiene una marca de tiempo. Puede haber varias 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 sean anteriores a una fecha/hora específica".

Para gestionar tablas enormes, Bigtable divide las tablas en los límites de las filas y las guarda como tabletas. Una tableta pesa alrededor de 200 MB y cada máquina ahorra unas 100 tabletas. Esta configuración permite distribuir tabletas de una sola tabla entre muchos servidores. También permite un equilibrio de carga detallado. Si una mesa recibe muchas consultas, puede deshacerse de otras tabletas o mover la mesa ocupada a otra máquina que no esté tan ocupada. Además, si una máquina deja de funcionar, una tableta puede distribuirse entre muchos otros servidores, de modo que el impacto en el rendimiento de cualquier máquina determinada 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 utilizando técnicas de compresión patentadas por Google (BMDiff y Zippy). Las compactaciones menores implican sólo unas pocas tabletas, mientras que las compactaciones mayores implican todo el sistema de mesa 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 realiza mediante un sistema de tres niveles. Los clientes obtienen un punto para una tabla META0, de la cual sólo 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 búsqueda 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 las tablas.

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

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

  1. Servidores maestros: asigne tabletas a servidores de tabletas, 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, cada uno de 100 servidores de tableta recoge 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 cerraduras, incluida la apertura de tabletas para escribir, garantizar que no haya más de un Master activo a la vez y verificar el 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 anclaje contiene el texto de cualquier anclaje que haga referencia a la página. Tanto la página de inicio de Sports Illustrated como la de MY-look hacen referencia a la página de inicio de CNN, por lo que la fila contiene columnas denominadas anchor:cnnsi.comy anchor:my.look.ca. Cada celda de anclaje tiene una versión ; la columna de contenido tiene tres versiones : 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 se admiten a nivel de fila, pero no entre 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 , discutiendo el sistema de almacenamiento de contenido Bigtable utilizado en el backend de Google.

splattne avatar Dec 12 '2008 14:12 splattne

Es algo que ellos mismos han construido: se llama Bigtable.

http://en.wikipedia.org/wiki/BigTable

Hay un artículo de Google sobre la base de datos:

http://research.google.com/archive/bigtable.html

Mark Ingram avatar Dec 12 '2008 14:12 Mark Ingram

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

Aquí está el enlace del artículo.

Spanner es la base de datos escalable, de múltiples versiones, distribuida globalmente y replicada sincrónicamente de Google. Es el primer sistema que distribuye datos a escala global y admite transacciones distribuidas consistentes externamente. Este artículo describe cómo está estructurado Spanner, su conjunto de características, la lógica subyacente a varias decisiones de diseño y una API de tiempo novedosa que expone la incertidumbre del reloj. Esta API y su implementación son fundamentales para respaldar la coherencia externa y una variedad de funciones 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 proporciona sólidas garantías de coherencia y alta disponibilidad. Proporcionamos semántica ACID totalmente serializable dentro de particiones de datos detalladas. Esta partición nos permite replicar sincrónicamente cada escritura en una red de área amplia con una latencia razonable y admite una conmutación por error perfecta entre 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.

user avatar Sep 28 '2013 18:09 user

Como otros han mencionado, Google utiliza una solución propia llamada BigTable y han publicado algunos artículos que la describen en el mundo real.

La gente de Apache tiene una implementación de las ideas presentadas en estos artículos llamada HBase . HBase es parte del proyecto Hadoop más grande 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 .

EvilRyry avatar Dec 12 '2008 15:12 EvilRyry