High-Throughput BigQuery and Bigtable Streaming Features: Módulo 10

Ventajas del stremaing con BigQuery y BigTable

BigQuery permite transmitir registros en una tabla y los resultados se incorporan a los últimos datos

La transmisión no es un trabajo de carga, es un método separado de BigQuery llamado “insertos de transmisión”, este permite insertar un elemento a la vez en una tabla. Se pueden crear nuevas tablas a partir de una tabla de plantilla que identifica el esquema que se copiará. Por lo general, los datos están disponibles en segundos.

Los datos entran en un búfer de transmisión, donde se guardan brevemente hasta que se pueden insertar en la tabla. Los candidatos para la transmisión son análisis o aplicaciones que toleran datos tardíos o faltantes o datos que llegan fuera de servicio o duplicados. Dado que la transmisión de datos no tiene límites, se debe considerar las cuotas de transmisión. Hay un límite diario y un límite de tasa concurrente.

Figura 1 Ventana principal de Data Studio UI

Crear nuevos reportes en Data Studio UI

La página de inicio muestra los paneles y las fuentes de datos a las que se tienen acceso. Las fuentes de datos conectadas pueden ingresar a los paneles, pero el hecho de que alguien tenga acceso a su panel no significa que tenga permiso para ver los datos presentados (porque eso podría controlarse en BigQuery o su proyecto GCP).

Existen dos formas de crear un nuevo informe, desde el panel de plantillas en la parte superior o desde el botón en la parte inferior derecha.

Lo primero que se debe hacer es decirle a Data Studio de dónde provienen sus datos. Eso se conoce como la “fuente de datos”. Un informe de Data Studio puede tener cualquier cantidad de orígenes de datos, pero solo comenzaremos con uno. El selector de fuente de datos muestra todas las fuentes de datos a las que tiene acceso

Agregar la fuente de datos a un informe

Cuando se agrega una fuente de datos a un informe, otras personas que pueden ver el informe pueden ver potencialmente todos los datos en esa fuente. Cualquiera que pueda editar el informe puede usar todos los campos de cualquier fuente de datos agregada para crear nuevos gráficos con ellos.

Cómo elegir entre Cloud Bigtable y BigQuery

Cloud Bigtable es ideal para aplicaciones que necesitan un rendimiento y escalabilidad muy altos para datos de clave y valor no estructurados, donde cada valor no suele ser mayor de 10 MB.

No es bueno para datos altamente estructurados, datos transaccionales, datos pequeños (menos de 1 TB) y cualquier cosa que requiera consultas SQL y uniones similares a SQL

El uso más común de Cloud Bigtable es producir una búsqueda en tiempo real como parte de una aplicación, donde se desea velocidad y eficiencia más allá de las otras bases de datos.

Requerimientos de Cloud Bigtable

Figura 2 Requerimientos para Cloud Table

¿Cómo funciona Cloud Bigtable?

Figura 3 Servicio de base de datos de Cloud Bigtable

Figura 3 Servicio de base de datos de Cloud Bigtable

Cloud Bigtable almacena datos en un sistema de archivos llamado Colossus. Colossus también contiene estructuras de datos llamadas tabletas que se utilizan para identificar y administrar los datos. Y los metadatos sobre las tabletas es lo que se almacena en las máquinas virtuales en el propio clúster de Bigtable.

Puede manipular las tabletas que apuntan y describen los datos. O puede manipular los metadatos que apuntan a las tabletas. Cloud Bigtable es un sistema de aprendizaje. Detecta “puntos calientes” en los que se está realizando mucha actividad a través de una sola tableta y la divide en dos. También puede reequilibrar el procesamiento moviendo el puntero a una tableta a una máquina virtual diferente en el clúster.

Por lo tanto, su mejor caso de uso es con big data, por encima de 300 GB, y acceso muy rápido pero uso constante durante un período de tiempo más largo, además la recuperación es rápida porque solo los metadatos deben copiarse en el nodo de reemplazo.

La idea de diseño de Cloud Bigtable es “simplificar la velocidad”

Cloud Bigtable almacena datos en tablas. La diferencia de otros sistemas de datos basados ​​en tablas, como hojas de cálculo y bases de datos SQL, es que Cloud Bigtable solo tiene un índice. Ese índice se llama la clave de fila. Y cuando se ingresan datos, se organizan lexicográficamente por la tecla de fila.

El principio de diseño de Cloud Bigtable es la velocidad mediante la simplificación. Si se toma una tabla tradicional y simplifica los controles y las operaciones que le permite realizar en ella, se puede optimizarla para tareas específicas. En Cloud Bigtable, lo primero que se debe abandonar en el diseño es SQL. Este es un estándar de todas las operaciones que puede realizar una base de datos.

¿Qué le hace la operación de clasificación adicional al tiempo? Se introduce un par de variables. Si el conjunto de soluciones tiene solo unas pocas filas, la operación de clasificación será rápida. Pero si el conjunto de soluciones es enorme, la clasificación llevará más tiempo. El tamaño del conjunto de soluciones se convierte en un factor en el tiempo. El orden de los datos originales es otro factor. Si la mayoría de las filas ya están en orden, se requerirá menos manipulación que si hay muchas filas fuera de orden. El orden de los datos originales se convierte en un factor en el tiempo. Por lo tanto, introducir la clasificación significa que el tiempo que lleva producir el resultado es mucho más variable que el escaneo.

No todos los datos y no todas las consultas son buenos casos de uso para la eficiencia que ofrece el servicio Cloud Bigtable. Pero cuando es una buena combinación, Cloud Bigtable es tan rápido que es mágico.

¿Cuál es la mejor clave de fila?

Si usa el campo Llegada como la tecla de fila, será fácil retirar todos los vuelos entre el 21 y el 29 de marzo, pero el aeropuerto de origen no estará organizado. Por lo tanto, buscará en la columna de llegada para producir el conjunto de soluciones. En el tercer ejemplo, se ha construido una Clave de fila a partir de información extraída del campo Origen y el campo Llegada, creando una Clave de fila construida. Debido a que los datos están organizados lexicográficamente por la tecla de fila, todos los vuelos de Atlanta aparecerán en un grupo y ordenados por fecha de llegada. Con esta clave de fila puede generar el conjunto de soluciones con solo un escaneo.

En este ejemplo, los datos se transformaron cuando llegaron. Por lo tanto, construir una clave de fila durante el proceso de transformación es sencillo.

Usar marcas de tiempo inversas cuando la consulta más común es para los últimos valores

Se pueden revertir las marcas de tiempo restando la marca de tiempo del valor máximo de su lenguaje de programación para enteros largos (como java.lang.Long.MAX_VALUE) Al invertir la marca de tiempo, se puede diseñar una clave de fila donde aparezca el evento más reciente al comienzo de la tabla en lugar del final. Como resultado, se puede obtener los N eventos más recientes simplemente recuperando las primeras N filas de la tabla.

¿Qué sucede cuando se modifican los datos en Cloud Bigtable?

Cuando se elimina datos, la fila se marca para su eliminación y se omite durante el procesamiento posterior. No se elimina de inmediato. Si se realiza un cambio en los datos, la nueva fila se agrega secuencialmente al final de la tabla, y la versión anterior se marca para su eliminación. Entonces ambas filas existen por un período de tiempo. Periódicamente, Cloud Bigtable compacta la tabla.

Optimización del rendimiento de Cloud Bigtable

Hay varios factores que pueden provocar un rendimiento más lento. Es esencial diseñar un esquema que permita que las lecturas y escrituras se distribuyan uniformemente en el clúster de Cloud Bigtable. De lo contrario, los nodos individuales pueden sobrecargarse, lo que ralentiza el rendimiento.

La carga de trabajo no es apropiada para Cloud Bigtable Testing con una pequeña cantidad (❤00 GB) de datos, o por un período de tiempo muy corto (segundos en lugar de minutos u horas), Cloud Bigtable no podrá optimizar adecuadamente sus datos. Necesita tiempo para aprender sus patrones de acceso, y necesita fragmentos de datos lo suficientemente grandes como para utilizar todos los nodos en su clúster.

El clúster de Cloud Bigtable no tiene suficientes nodos. Normalmente, el rendimiento aumenta linealmente con el número de nodos en un clúster. Agregar más nodos, por lo tanto, puede mejorar el rendimiento. Aunque los nodos están disponibles en su clúster casi de inmediato, Cloud Bigtable puede demorar hasta 20 minutos bajo carga para distribuir de manera óptima la carga de trabajo del clúster en los nuevos nodos.

Hay problemas con la conexión de red, los problemas de red pueden reducir el rendimiento y hacer que las lecturas y escrituras tarden más que de costumbre. Debido a que diferentes cargas de trabajo pueden hacer que varíe el rendimiento, debe realizar pruebas con sus propias cargas de trabajo para obtener los puntos de referencia más precisos.

Replicación de Cloud Bigtable para mejorar la disponibilidad

La replicación para Cloud Bigtable permite aumentar la disponibilidad y durabilidad de los datos copiándolos en múltiples regiones o múltiples zonas dentro de la misma región. También se puede aislar las cargas de trabajo enrutando diferentes tipos de solicitudes a diferentes clústeres.

Los clústeres de Cloud Bigtable crean un clúster de réplicas de Bigtable. Si un clúster de Cloud Bigtable deja de responder, la replicación hace posible que el tráfico entrante pase a otro clúster en la misma instancia. Los failovers pueden ser manuales o automáticos, dependiendo del perfil de la aplicación que esté usando una aplicación y de cómo esté configurado el perfil de la aplicación.

Key Visualizer expone los patrones de acceso de lectura/escritura a lo largo del tiempo y el espacio clave

Key Visualizer es una herramienta que ayuda a analizar los patrones de uso de Cloud Bigtable. Genera informes visuales para sus tablas que desglosan su uso en función de las teclas de fila a las que accede. Key Visualizer genera automáticamente escaneos por hora y por día para cada tabla en su instancia que cumpla al menos uno de los siguientes criterios:

● Durante las 24 horas anteriores, la tabla contenía al menos 30 GB de datos en algún momento.

● Durante las 24 horas anteriores, el promedio de todas las lecturas o escrituras fue de al menos 10,000 filas por segundo.

El núcleo de un escaneo de Key Visualizer muestra el valor de una métrica a lo largo del tiempo, desglosado en rangos contiguos de teclas de fila. El eje x del mapa de calor representa el tiempo, y el eje y representa las teclas de fila.

Autores:

  • Steve Acosta
  • Matías Idrobo
  • Williams Ortiz
  • Paúl Ramírez

Conoce más: bootcampai.org/di

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store