Visualización de la base de datos F1 del departamento de publicidad de Google desde el periódico VLDB

Haga clic en el "arriba"Volar chat total TI",Elija seguir al público No.

Se tarda unos 20 minutos en leer el texto.


Recientemente, algunos de los documentos de VLDB han sido leídos debido a su trabajo. Esto incluye un análisis de la base de datos F1 recién publicada de Google. Siempre no es fácil leer los periódicos de Google. Porque Google siempre ha dicho la mitad oculta. Este papel está relativamente abierto a escribir, o no puede evitar la vulgaridad.


Este artículo es un seguimiento de la base de datos DE SQL distribuida 2013 de Google, que proporciona una imagen completa de cómo ha evolucionado la base de datos F1 de Google a lo largo de los años. Este documento se analiza en detalle en este documento.


F1 y los antecedentes de los competidores

Revisemos la historia de la F1. F1 es un sistema de consulta de datos que admite varios orígenes de datos. Originalmente nació en el brazo publicitario de Google. El propósito principal del propósito original era reemplazar el clúster mySQL del sistema de publicidad en ese momento. F1 se ha posicionado como un motor de consultas desde el principio, implementando estrictos principios de separación de almacenamiento computacional. El sistema de almacenamiento debajo estaba The Next Generation Spanner of BigTable, que luego se desarrolló en paralelo.


Luego, en 2014, VLDB Google publicó Mesa, un sistema global de almacenamiento de datos para varios centros de datos. Mesa se convirtió en el segundo sistema en el acoplamiento principal de la F1. F1 ha evolucionado hasta la actualidad como un sistema que puede admitir consultas de federación de datos para datos de archivos CSV a BigTable a Spanner.


Después de tantos años de desarrollo, Google también ha formado una serie de sistemas de procesamiento de datos. Estos propios sistemas de bases de datos tienen relaciones competitivas sólidas. En otras palabras, puedo agarrar a un cliente de ti, y mi equipo será más grande. F1, como sistema en crecimiento dentro de Google, es también el ganador de esta relación competitiva.


Comprender la historia y las audiencias de servicio de estas bases de datos es importante para que obtengamos una comprensión más profunda del soporte empresarial y las opciones técnicas de los sistemas F1. Así que a continuación estoy y entiendo F1 este artículo relacionado con algunos de los otros sistemas de bases de datos de Google para hacer una introducción.


F1 se posicionó originalmente para reemplazar mySQL cluster son por la división ads de Google. Spanner, como sistema subyacente de F1, es un nivel de almacenamiento que admite el procesamiento de transacciones (implementado mediante la fase de bloqueo 2) y F1 existe como motor informático.


Pero después de que el propio equipo de Spanner desarrollara la capa de almacenamiento, comenzó a realizar consultas de datos y desarrolló un sistema de consulta interno llamado Spandex. Cómo Spanner evolucionó en un completo documento del sistema SQL publicado en SIGMOD 2017. Esto condujo a una relación competitiva entre F1 y Spanner. A día de hoy, la rivalidad entre los dos equipos dentro de Google sigue siendo feroz.


Dremel es un sistema interno de almacenamiento de datos para Google. Google ha comercializado Dremel, llamado Big Query. Dremel utiliza un modelo de datos semiestructurado con un formato basado en columnas, la primera generación de la cual es ColumnIO.


El formato de segunda generación Capactior fue introducido después de la comercialización. Ambos formatos son orígenes de datos externos compatibles con F1. El éxito inusual de Dremel dentro de Google. Hasta la fecha, BigQuery sigue siendo el producto de big data más exitoso en la nube de Google.


Flume es una actualización del framework MapReduce interno de Google. Originalmente desarrollado sólo en Java, originalmente se llamaba Flume Java, y más tarde también estaba disponible en C. Flume cambió el modelo de desarrollo de Map and Reduce escrito en el marco MapReduce, introduciendo más API de alto nivel, que se desarrollaron como Spark.


En el entorno de ejecución subyacente, Flume también cambió el modo rígido de MapReduce para admitir patrones como Map-Reduce-Reduce. Su ventaja es que es muy flexible escribir una variedad de canalización de procesamiento de datos, la desventaja es que las cosas simples también tienen que escribir una gran cantidad de código, no tan simple como SQL.


Posicionamiento empresarial de F1

El sistema F1 admite tres formas diferentes de consultar datos:

1. Consultas que afectan sólo a unos pocos registros del tipo OLTP

2. Consultas OLAP de baja latencia que implican grandes cantidades de datos

3. Pileline ETL a gran escala


El documento de F1 no proporciona un análisis de estos tres métodos de consulta de datos diferentes. Combino el papel de F1 de 2013 y otros antecedentes para analizar las razones de los tres métodos de consulta de datos diferentes de los partidarios de la F1.


EL TIPO OLTP DE CONSULTA ORIGINADA A PARTIR DEL OBJETIVO ORIGINAL DE F1: REEMPLAZAR LOS GRUPOS DE MYSQL EN EL NEGOCIO DE PUBLICIDAD. Según el documento de F1 de 2013, su soporte OLTP es limitado. Una consulta OLTP en el sistema F1 es leer varias operaciones seguidas de una operación de escritura de 0 a 1. La potencia de procesamiento transaccional del OLTP del sistema F1 se basa en el apoyo del subyacente de Spanner para el procesamiento de cosas.


En el documento de 2018, los autores no proporcionan una descripción detallada del tipo de consultas OLTP. Sin embargo, según el análisis de sentido común, un motor de consultas sin estado que necesita admitir el procesamiento transaccional no se puede separar de la compatibilidad de almacenamiento subyacente para las cosas. Por lo tanto, el motor F1 obviamente no puede hacer procesamiento transaccional para cualquier fuente de datos a la que se conecte. Dado que Spanner implementa un motor de consultas de datos, hay compatibilidad con el procesamiento de cosas. En este sentido, F1 y Spanner tienen una clara relación competitiva.


Las consultas OLAP y de baja latencia que implican grandes cantidades de datos se colocan de forma muy similar a BigQuery. Su implementación también tiene una implementación de BigQuery, principalmente a través de la forma de canalización para consultar y devolver resultados de datos.


Según el análisis de este artículo, que se presenta a sí mismo y a otros competidores dentro de Google, el negocio se trasladó a Bigquery o F1 después de un sistema de Google llamado Tenzing cerró en los primeros años. Podemos entender que BigQuery y F1 son competidores en este tipo de consulta. En la práctica, BigQuery es más exitoso.


En los primeros días, dentro de Google, ETL Pipeline a gran escala se logró en gran medida mediante una serie de misiones MapReduce. Con Flume, estos negocios se han mudado a Flume. Pero Flume es un sistema muy malo, y se necesita mucho código para hacer una consulta de datos simple. En este artículo, el autor hace referencia explícita a la exitosa sustitución de Flume por parte de F1 en algunos negocios.


Combinado con el análisis anterior, simplemente podemos llegar a la siguiente conclusión. El negocio de OLTP en la F1 interna de Google es principalmente el objetivo de los primeros años de la F1. F1 se basa en el soporte de Spanner para OLTP. Entonces el propio Spanner desarrolló un motor similar. Esto no es inconsistente con lo que he oído acerca de F1, que es utilizado principalmente por el departamento de publicidad, y el departamento de no publicidad, que utiliza Spanner en gran medida.


En las consultas OLAP de baja latencia, la competencia principal para F1 es BigQuery. Con el éxito de BigQuery hoy. F1 sólo debe tener una base de negocios en su departamento de publicidad para el hogar.


Flume es un sistema mixto dentro de Google. Mejor que MapReduce, pero no es fácil de usar. F1 es una fuerza en el negocio de ETL y puede capturar una parte del mercado. Desde el punto de vista de la arquitectura técnica, cómo lograr un mejor uso de ETL es la tecnología más crítica del equipo de F1 2018.


Arquitectura del sistema de F1

La siguiente imagen es el diagrama arquitectónico del sistema F1 en el documento de 2018:

 

                            

La siguiente imagen es el diagrama de arquitectura del sistema F1 en el documento de 2013:



Los sistemas F1 se pueden implementar en diferentes centros de datos, pero cada centro de datos tiene un conjunto completo de clústeres informáticos. El clúster consta de 1 F1Master. Es un servicio no de nodo único elegido, único para cada centro de datos. Es principalmente para supervisar la ejecución de consultas y administrar todos los F1Servers. El sistema consta de varios servidores F1 que realmente controlan las solicitudes de consulta.


También hay una piscina de trabajadores de F1. Cuando es necesario ejecutar una consulta en paralelo, estos trabajadores se usan para ejecutar una consulta paralela y el servidor F1 correspondiente se convierte en el código de la consulta. Worker se llama Slave en el diagrama de arquitectura del sistema de 2013. Es un nombre diferente. Las responsabilidades reales de F1 Server se dijeron más claramente en el documento de 2013.


El sistema también tiene un servicio de catálogo y un servidor UDF. Estas cosas son relativas a la adición de los arquitectos del sistema en el documento de 2013. El servicio de catálogo es un servicio de metadatos que define los datos de diferentes orígenes de datos como apariencia. Podemos ver que en la arquitectura del sistema de 2013, sólo Spanner, pero en el documento de 2018, las fuentes de datos están diversificadas. Por lo tanto, catalog Service es un servicio necesario para convertirse en un motor de consultas federales de origen de datos múltiples en el desarrollo de F1.


UDF Server es una nueva cosa que F1 revelará en su artículo de 2018. Su principal importancia es lograr el apoyo para la sustitución de ETL y flume. Lo cubriremos con más detalle más tarde.

Modo de consulta de F1

Los patrones de consulta de F1 se pueden dividir fácilmente en interactivos y no interactivos. Una combinación de documentos de 2013 y 2018. La ejecución interactiva es principalmente para consultas que afectan solo a unos pocos registros del tipo OLTP y a las consultas OLAP de baja latencia que implican grandes cantidades de datos. El sistema realiza en ambos tipos de consultas a través de F1 Server.


El plan de ejecución se genera después de F1 Server compilar y optimizar la consulta. Hay dos tipos de planes de ejecución: ejecución de subproceso único y ejecución paralela. El primero es ejecutado directamente por el servidor. Este último servidor se convierte en la consulta Todo paralelo, ejecutada por el trabajador de llamadas RPC. En este documento se examinan algunas de las decisiones sobre la estrategia de partición del sistema y cómo mejorar el rendimiento del sistema, principalmente para el patrón de sesgo y no acceso de datos. La práctica es común en bases de datos distribuidas. Las personas interesadas pueden leer el periódico. No va a empezar más.

Los autores señalan que la ejecución interactiva es estable durante aproximadamente una hora más o menos podría fallar. Según el documento, la ejecución de interacción distribuida de F1 no tiene tolerancia a errores en sí, pero el cliente F1 tiene una función de reintento. Para un sistema maduro, esto es algo una lástima.

La ejecución no interactiva se utiliza principalmente para consultas de larga duración. Se basa en el marco MapReduce de Google. La consulta se compila en un plan de consulta y se almacena en RegistrQuery. El Registro de consultas es una base de datos Spanner distribuida globalmente entre centros de datos que realiza un seguimiento de los metadatos de las consultas en todos los modos por lotes. También hay un servicio global de distribuidor de consultas entre centros de datos, que asigna planes de consulta a un centro de datos que ejecuta la consulta mediante el marco MapReduce.

在MapReduce的查询框架里,F1的优化引入了Map-Reduce-Reduce的模式,这个和Map-Reduce的框架不符合。F1团队的解决方式是把这个翻译成Map-Reduce后跟一个Map<identity>-Reduce任务。这显然不是最高效的办法。由此可见,长查询通过MapReduce来执行并非最有效的方式。而F1也无法摆脱执行框架的限制。


Optimizador de F1

La estructura del optimizador F1 se muestra a continuación. Este es un proceso de optimización de consultas más clásico. El optimizador obtiene el AST del compilador como entrada, primero lo convierte en un plan de consulta lógico y, después, después de la optimización lógica, genera un plan de consulta físico. El generador del plan de ejecución genera finalmente este plan de consulta para generar un plan de ejecución.

La optimización lógica es principalmente a través de la lógica del álgebra relacional, el plan de consulta lógica de entrada en un programa que es óptimo de acuerdo con la heurística, optimizaciones comunes como la pushdown predicado se realizan aquí. Un plan de consulta físico es responsable de traducir un plan lógico en un plan físico. El generador de programación más pendiente segmenta el plan físico, con cada segmento convirtiéndose en la última unidad de ejecución, e insertando operadores de intercambio entre unidades de ejecución para volver a particionar los datos. El problema de simultaneidad para cada unidad de ejecución también se determina aquí.


El optimizador F1 en su conjunto es un optimizador relativamente primitivo. Todo el optimizador se basa enteramente en la regla, sin optimización de la base de costos. En comparación con los sistemas de almacenamiento de datos comunes, esto requiere una gran mejora.


Escalabilidad de F1

F1 admite la función definida por el usuario (UDF), la función de agregado definida por el usuario (UDA) y la función de valor de tabla (TVF). Estas son las extensiones habituales dentro del sistema de base de datos. Estas extensiones definidas por el usuario se pueden implementar mediante scripts SQL o LUA. Básicamente, estas implementaciones son la implementación clásica en la base de datos.


Pero lo que es más especial en F1 es la introducción del hijo del servidor uDF. Se utiliza principalmente para implementar TVF más complejo. Un servidor UDF es un servicio que se puede implementar en cualquier idioma y proporciona F1 con una interfaz de función para TVF. Además de enviar la entrada correspondiente y recibir los resultados mientras se ejecuta, estas interfaces F1 proporcionan información adicional al compilador y optimizador al consultar la compilación. Por ejemplo, cuál es el esquema de salida, si TVF se puede particionar después de cada partición solo para realizar y así sucesivamente.


El servidor UDF tiene muy poca tinta en el artículo, pero en mi opinión esta es la diferencia más importante entre el papel de F1 2018 y el papel de 2013. Con el servidor UDF, es posible una lógica ETL compleja. El servidor UDF también resuelve el antiguo problema del dominio de base de datos con UDF: administración de recursos. Si voy a elegir una de las cosas más brillantes, creo que es el servidor UDF.


Creo que los desarrolladores de F1 de Google deben ser muy conscientes de la importancia del servidor UDF, pero hay poco más sobre lo que escribir en el periódico. Es imposible decir que esto puede haber sido intencional.


El uso del servidor UDF hace posible que F1 admita ETL complejo. Al mismo tiempo, la lógica de procesamiento de datos estándar en ETL se puede implementar directamente escribiendo SQL. Al mismo tiempo, dado que el servidor UDF es un servicio independiente, también se han resuelto los problemas comunes de administración de recursos de UDF.


Resumir

El documento 2018 VLDB F1 sobre la arquitectura y el desarrollo de la base de datos F1 de Google. F1 ahora se ha convertido en un motor de consultas de datos que admite varias capacidades de datos para varios orígenes de datos. Sus consultas de clase OLTP se centran principalmente en la tarea inicial, reemplazando mySQL. Sus consultas OLAP de baja latencia compiten principalmente con Dremel. Y su objetivo en el apoyo a la compleja ETL está dirigido principalmente a Flume.


F1 tiene tres modos de ejecución: ejecución interactiva distribuida de un solo subproceso y ejecución no interactiva basada en MapReduce. Es una lástima que las interacciones distribuidas funcionen sin recuperación de errores. El rendimiento de la ejecución no interactiva basada en MapReduce tiene espacio para una mayor optimización.


F1 optimizer es un optimizador de base de datos clásico, sólo la optimización de la base de reglas, no la optimización de la base de costos. Así que no creo que una optimización como Join-reordering puede hacer. Este optimizador es bastante simple y tiene mucho margen de mejora.


En términos de escalabilidad, los métodos de extensión UDF, UDA y TVF son todas extensiones de base de datos clásicas. Su servidor UDF es un invento muy importante. Pienso en todas las cosas de este artículo que tienen un gran valor de referencia. Pero este artículo aparentemente omite deliberadamente esta pieza.


La arquitectura de F1 se compara con 2013, con la adición de un servicio de metadatos, Catalog. Catálogo juega un papel importante en la escena del lago de datos. Tanto el descubrimiento como el intercambio de datos son esenciales. Cuando se trata de la administración de derechos, el papel de los servicios de metadatos globales es insustituible. La optimización de la base de costos también requiere servicios basados en metadatos. Es una gran pena que F1 no haya mencionado las nuevas adiciones a este artículo de 2018.



Bienvenido al gráfico de prensa larga para seguir el número de suscripciónVolar chat total TIPara ver más


Artículos relacionados:

Visión de futuro y casi preocupante

Cómo saber lo que un líder realmente piensa de ti

Comunicación tcp apretón de manos, igual al dinero y la muerte

El liderazgo es lo más importante

No seas analfabeto de negocios

Barrer una casa y barrer el mundo

Lo que falta más de los estudiantes a los agricultores de código

Bienvenidos a The Total Knowledge Planet.