Diseña un esquema
El esquema ideal de una tabla de Bigtable depende en gran medida de varios factores, como el caso de uso, los patrones de acceso a los datos y los datos que planeas almacenar. En esta página, se proporciona una descripción general del proceso de diseño de esquema de Bigtable.
Antes de leer esta página, debes comprender los conceptos y las prácticas recomendadas de diseño de esquemas. Si corresponde, también lee Diseño del esquema para datos de series temporales.
Antes de comenzar
Crea o identifica una instancia de Bigtable que puedas usar para probar tu esquema.
Recopila información
- Identifica los datos que planeas almacenar en Bigtable.
Las preguntas que se deben hacer son las siguientes:
- ¿Qué formato usan los datos? Los formatos posibles incluyen strings, protobufs, json y bytes sin procesar.
- ¿Qué constituye una entidad en tus datos? Por ejemplo, ¿almacenas vistas de páginas, precios de acciones, colocaciones de anuncios, mediciones de dispositivos o algún otro tipo de entidad? ¿De qué están compuestas las entidades?
- ¿Los datos se basan en el tiempo?
- Identifica y clasifica las consultas que usas para obtener los datos que necesitas. Ten en cuenta las entidades que almacenarás, piensa en cómo querrás que los datos se ordenen y se agrupen cuando los uses. Es posible que el diseño del esquema no satisfaga todas tus consultas, pero lo ideal es que satisfaga las consultas más importantes o las que se usan con más frecuencia. Algunos ejemplos de consultas son los siguientes:
- Un valor de mes de lecturas de temperatura para objetos del IoT.
- Vistas de anuncios diarias de una dirección IP
- La ubicación más reciente de un dispositivo móvil.
- Todos los eventos de aplicación por día por usuario
Diseño
Elige un diseño de esquema inicial. Esto significa planificar el patrón que seguirán tus claves de fila, las familias de columnas que tendrá tu tabla y los calificadores de las columnas que desees dentro de esas familias de columnas. Sigue los lineamientos de diseño de esquemas generales. Si tus datos están basados en el tiempo, también sigue los lineamientos para los datos de series temporales.
Prueba
- Crea una tabla con las familias de columnas y los calificadores de columnas que creaste para tu esquema.
- Carga la tabla con al menos 30 GB de datos de prueba mediante las claves de fila que identificaste en el borrador de tu plan. Respeta los límites de uso de almacenamiento por nodo.
- Ejecuta una prueba de carga pesada durante varios minutos. En este paso, Bigtable puede balancear los datos entre los nodos según los patrones de acceso que detecte.
- Ejecuta una simulación de una hora de las operaciones de lectura y escritura que sueles enviar a la tabla.
Revisa los resultados de la simulación mediante Key Visualizer y Cloud Monitoring.
La herramienta Key Visualizer para Bigtable proporciona análisis que muestran los patrones de uso de cada tabla del clúster. Key Visualizer te ayuda a verificar si los patrones de uso y diseño de los esquemas generan resultados no deseados, como hotspots en filas específicas.
La supervisión te ayuda a verificar métricas, como el uso de CPU del nodo más activo de un clúster, para ayudarte a determinar si el diseño del esquema genera problemas.
Definir mejor
- Revisa el diseño de tu esquema según sea necesario, a partir de lo que aprendiste con Key Visualizer. Por ejemplo:
- Si ves evidencia de generación de hotspots, usa diferentes claves de fila.
- Si notas latencia, descubre si tus filas superan el límite de 100 MB por fila.
- Si tienes que usar filtros para obtener los datos que necesitas, considera normalizar los datos de una manera que permita lecturas más simples (y más rápidas): leer una sola fila o rangos de filas por clave de fila.
- Después de revisar tu esquema, prueba y vuelve a revisar los resultados.
- Continúa modificando el diseño y las pruebas de tu esquema hasta que una inspección en Key Visualizer te indique que el diseño del esquema es óptimo.
¿Qué sigue?
- Mira una presentación sobre el proceso de diseño iterativo que Twitter usó para Bigtable.
- Obtén más información sobre el rendimiento de Bigtable.