BigQuery es un almacén de datos en la nube sin servidores, rentable y muy escalable, cuyo diseño busca ofrecer flexibilidad y facilidad de uso. Cuando se crea BigQuery, se eligen muchas funciones y opciones de diseño interesantes. En esta entrada, hablaremos sobre el funcionamiento de las asignaciones de zonas. Al igual que ocurre con otros servicios de Google Cloud, BigQuery aprovecha nuestras regiones de nube globales para que los datos estén disponibles cuando los necesites.
Un aspecto clave de la arquitectura de BigQuery es que funciona con varias instancias; es decir, ejecuta cargas de trabajo de diferentes clientes en una infraestructura de computación y almacenamiento que no requiere la participación de ningún cliente en la planificación de la capacidad. Al cargar datos en BigQuery, los clientes eligen en qué región quieren cargarlos y, si lo desean, compran una reserva de computación. Luego, el servicio se ocupa del aprovisionamiento.
Las asignaciones de zonas mantienen los datos en movimiento
Cada región de BigQuery se implementa de forma interna en varias zonas de disponibilidad. Los datos de los clientes se replican entre las zonas y se realiza automáticamente una conmutación por error rápida a la zona secundaria si la principal tiene problemas. Esta conmutación está diseñada para ser transparente y no genera tiempo de inactividad. Siempre estamos ampliando nuestra capacidad para respaldar el crecimiento de nuestros clientes e incorporar nuevos. A fin de asegurarnos de que cada cliente piense que el almacenamiento es infinito y reciba los recursos de computación suficientes para cargar y analizar sus datos, recalculamos constantemente la mejor ubicación para las zonas principales y secundarias de cada región.
A fin de garantizar las mejores asignaciones de zonas principales y secundarias, el algoritmo de asignación tiene en cuenta el uso del almacenamiento y la computación de cada cliente, además de la capacidad disponible en cada zona. Luego, se asegura de que el uso se adapte a las zonas asignadas actualmente. Si esto no sucede, busca otra zona adecuada para ese cliente y coordina la transferencia desde la zona actual hacia la nueva. Todo esto sucede en segundo plano, sin interrumpir en absoluto la carga de trabajo.
Los conjuntos de datos que comparten la misma región pueden unirse en una sola consulta. Para garantizar que el rendimiento de la consulta sea bueno, intentamos asignar opciones de computación y almacenamiento que permitan que la entrada y salida (E/S) sea en la misma zona. De ese modo, aprovechamos las redes con alta capacidad de procesamiento dentro de la zona. El ancho de banda de E/S dentro de una zona es muy alto (el tejido de la red Júpiter de Google puede mantener más de 1 petabit/segundo de ancho de banda de bisección total), pero la capacidad de red entre zonas está mucho más limitada. Nuestro algoritmo de asignación garantiza que los proyectos de Google Cloud dentro de la misma organización de Google Cloud se asignen al mismo subconjunto de zonas en cada región. En el caso de las organizaciones de gran tamaño, agrupamos proyectos para el cómputo según los patrones de consulta entre proyectos dentro de la organización. Esto permite dividir los proyectos en partes más fáciles de manejar que pueden colocarse por separado. A fin de manejar las lecturas entre organizaciones, el algoritmo también analiza los patrones de consulta anteriores para detectar relaciones entre las organizaciones e intentar encontrar, como mínimo, una zona en común entre las organizaciones relacionadas. El motor de consulta también permite leer pequeños volúmenes de datos no asignados. Para hacerlo, los lee de forma remota o copia algunos en la zona de computación antes de ejecutar la consulta. En raras ocasiones, cuando el algoritmo no puede garantizar este proceso o hay un nuevo patrón de consulta entre organizaciones, podrían ocurrir errores en las consultas que leen grandes cantidades de datos.
Prácticas recomendadas para organizar y trasladar los datos
Un aspecto clave de la arquitectura de BigQuery es que funciona con varias instancias; es decir, ejecuta cargas de trabajo de diferentes clientes en una infraestructura de computación y almacenamiento que no requiere la participación de ningún cliente en la planificación de la capacidad. Al cargar datos en BigQuery, los clientes eligen en qué región quieren cargarlos y, si lo desean, compran una reserva de computación. Luego, el servicio se ocupa del aprovisionamiento.
Las asignaciones de zonas mantienen los datos en movimiento
Cada región de BigQuery se implementa de forma interna en varias zonas de disponibilidad. Los datos de los clientes se replican entre las zonas y se realiza automáticamente una conmutación por error rápida a la zona secundaria si la principal tiene problemas. Esta conmutación está diseñada para ser transparente y no genera tiempo de inactividad. Siempre estamos ampliando nuestra capacidad para respaldar el crecimiento de nuestros clientes e incorporar nuevos. A fin de asegurarnos de que cada cliente piense que el almacenamiento es infinito y reciba los recursos de computación suficientes para cargar y analizar sus datos, recalculamos constantemente la mejor ubicación para las zonas principales y secundarias de cada región.
A fin de garantizar las mejores asignaciones de zonas principales y secundarias, el algoritmo de asignación tiene en cuenta el uso del almacenamiento y la computación de cada cliente, además de la capacidad disponible en cada zona. Luego, se asegura de que el uso se adapte a las zonas asignadas actualmente. Si esto no sucede, busca otra zona adecuada para ese cliente y coordina la transferencia desde la zona actual hacia la nueva. Todo esto sucede en segundo plano, sin interrumpir en absoluto la carga de trabajo.
Los conjuntos de datos que comparten la misma región pueden unirse en una sola consulta. Para garantizar que el rendimiento de la consulta sea bueno, intentamos asignar opciones de computación y almacenamiento que permitan que la entrada y salida (E/S) sea en la misma zona. De ese modo, aprovechamos las redes con alta capacidad de procesamiento dentro de la zona. El ancho de banda de E/S dentro de una zona es muy alto (el tejido de la red Júpiter de Google puede mantener más de 1 petabit/segundo de ancho de banda de bisección total), pero la capacidad de red entre zonas está mucho más limitada. Nuestro algoritmo de asignación garantiza que los proyectos de Google Cloud dentro de la misma organización de Google Cloud se asignen al mismo subconjunto de zonas en cada región. En el caso de las organizaciones de gran tamaño, agrupamos proyectos para el cómputo según los patrones de consulta entre proyectos dentro de la organización. Esto permite dividir los proyectos en partes más fáciles de manejar que pueden colocarse por separado. A fin de manejar las lecturas entre organizaciones, el algoritmo también analiza los patrones de consulta anteriores para detectar relaciones entre las organizaciones e intentar encontrar, como mínimo, una zona en común entre las organizaciones relacionadas. El motor de consulta también permite leer pequeños volúmenes de datos no asignados. Para hacerlo, los lee de forma remota o copia algunos en la zona de computación antes de ejecutar la consulta. En raras ocasiones, cuando el algoritmo no puede garantizar este proceso o hay un nuevo patrón de consulta entre organizaciones, podrían ocurrir errores en las consultas que leen grandes cantidades de datos.
Prácticas recomendadas para organizar y trasladar los datos
- Para lograr un rendimiento óptimo de las cargas de trabajo que leen y escriben datos en conjuntos de datos que pertenecen a proyectos distintos, asegúrate de que los proyectos estén en la misma organización de Google Cloud.
- Si quieres que los datos estén disponibles para otros usuarios de BigQuery en tu organización de Google Cloud, puedes usar los permisos IAM para otorgar acceso.
- Puedes usar la función para copiar conjuntos de datos si quieres transferir datos entre regiones.
Obtén más información sobre las regiones y zonas en los servicios de Google Cloud, y conoce más detalladamente cómo Compute Engine maneja las zonas.
Source: Google Dev