Descripción general de Cloud Bigtable

Cloud Bigtable es una tabla poco poblada que puede escalar hasta miles de millones de filas y miles de columnas, lo que te permite almacenar terabytes o, incluso, petabytes de datos. Se indexa solo un valor de cada fila; este es conocido como la clave de fila. Cloud Bigtable es ideal para almacenar cantidades grandes de datos con una sola clave y con una latencia muy baja. Admite una capacidad alta de procesamiento de lectura y escritura con baja latencia, y es la fuente de datos ideal para las operaciones de MapReduce.

Cloud Bigtable se expone a las aplicaciones mediante varias bibliotecas cliente, incluida una extensión compatible de la biblioteca Apache HBase para Java. Como resultado, se integra en el ecosistema existente de Apache de software de macrodatos de código abierto.

Los potentes servidores de backend de Cloud Bigtable ofrecen varias ventajas clave por sobre una instalación de HBase con administración automática:

  • Gran escalabilidad. Cloud Bigtable escala en proporción directa a la cantidad de máquinas de tu clúster. Una instalación de HBase con administración automática tiene un diseño de cuello de botella que limita el rendimiento cuando se llega a cierto límite. Cloud Bigtable no tiene este cuello de botella, por lo que puedes escalar tu clúster para admitir más lecturas y escrituras.
  • Administración sencilla. Cloud Bigtable controla las actualizaciones y se reinicia con transparencia, además, mantiene automáticamente una durabilidad alta de los datos. Para replicar tus datos, solo debes agregar otro clúster a la instancia y la replicación comenzará automáticamente. No más regiones o encargados de la administración; solo debes diseñar el esquema de tus tablas y Cloud Bigtable se encargará del resto.
  • Cambio de tamaño de clústeres sin tiempo de inactividad. Puedes aumentar el tamaño de un clúster de Cloud Bigtable durante unas horas para admitir una carga grande y, luego, volver a reducirlo sin tiempo de inactividad. Cuando se cambia el tamaño de un clúster, por lo general, Cloud Bigtable tarda solo unos minutos en equilibrar el rendimiento entre todos los nodos.

Usos ideales

Cloud Bigtable es ideal para aplicaciones que requieren una capacidad de procesamiento alta y escalabilidad para datos de clave-valor no estructurados en los que el tamaño de cada valor, por lo general, no supera los 10 MB. Cloud Bigtable también se destaca como motor de almacenamiento para las operaciones de MapReduce por lote, el análisis o procesamiento de transmisión y las aplicaciones de aprendizaje automático.

Puedes usar Cloud Bigtable para almacenar y consultar todos los siguientes tipos de datos:

  • Datos de series temporales, como el uso de la CPU y la memoria de varios servidores en el tiempo.
  • Datos de marketing, como historiales de compra y preferencias del cliente.
  • Datos financieros, como historiales de transacciones, precios de acciones y tasas de cambio de moneda.
  • Datos de la Internet de las cosas, como informes de uso de los medidores de energía y dispositivos particulares.
  • Datos de grafos, como información sobre cómo se conectan los usuarios entre sí.

Modelo de almacenamiento de Cloud Bigtable

Cloud Bigtable almacena datos en tablas escalables de forma masiva, cada una de las cuales es un mapa de clave-valor ordenado. La tabla está compuesta por filas que, por lo general, describen una sola entidad, y columnas que contienen valores individuales para cada fila. Cada fila se indexa según una clave de fila, y las columnas que se relacionan entre sí se suelen agrupar en una familia de columnas. Cada columna se identifica con una combinación de la familia de columnas y un calificador de columnas, que es un nombre único dentro de la familia.

Cada intersección entre fila y columna puede contener varias celdas, o versiones, en distintas marcas de tiempo, que permite obtener un registro de cómo han cambiado los datos almacenados con el tiempo. Las tablas de Cloud Bigtable están dispersas. Si una celda no contiene ningún dato, no ocupará espacio.

Por ejemplo, supongamos que creas una red social para los presidentes de Estados Unidos, llamada Prezzy. Cada presidente puede seguir las publicaciones de los otros. En la siguiente ilustración, se incluye una tabla de Cloud Bigtable que muestra a quién sigue cada presidente en Prezzy:

Una tabla de Cloud Bigtable con una fila para cada nombre de usuario.

Estos son los aspectos que debes notar de la ilustración:

  • La tabla contiene una familia de columnas, llamada follows. Esta familia contiene varios calificadores de columnas.
  • Los calificadores de columnas se usan como datos. En este diseño, se aprovecha lo disperso de las tablas de Cloud Bigtable y el hecho de que se puedan agregar calificadores de columnas nuevos en cualquier momento
  • El nombre de usuario se usa como la clave de fila. Si suponemos que los nombres de usuario se extienden de manera uniforme en el alfabeto, el acceso a los datos será parejo en toda la tabla. Consulta Balanceo de cargas para ver cómo Cloud Bigtable controla las cargas disparejas y Cómo elegir una clave de fila a fin de obtener sugerencias más avanzadas para seleccionarla.

Arquitectura de Cloud Bigtable

En el siguiente diagrama, se muestra una versión simplificada de la arquitectura general de Cloud Bigtable:

Arquitectura general de Cloud Bigtable.

Como se ve en el diagrama, todas las solicitudes de clientes pasan por el servidor de frontend antes de enviarse a un nodo de Cloud Bigtable. En el informe original de Bigtable, estos nodos se llaman “servidores de tablet”. Los nodos se organizan en un clúster de Cloud Bigtable, que pertenece a una instancia de Cloud Bigtable, un contenedor del clúster.

Cada nodo del clúster controla un subconjunto de solicitudes. Si se agregan nodos al clúster, puedes aumentar la cantidad de solicitudes simultáneas que este puede manejar, además de su capacidad de procesamiento máxima. Si agregas otro clúster para habilitar la replicación, puedes enviar distintos tipos de tráfico a cada clúster y puedes conmutar a uno de ellos si el otro deja de estar disponible.

Una tabla de Cloud Bigtable se fragmenta en bloques de filas contiguas, llamados tablets, que ayudan a balancear la carga de trabajo de las consultas. Estos son similares a las regiones de HBase. Los tablets se almacenan en Colossus, el sistema de archivos de Google, en formato SSTable. Una SSTable proporciona un mapa inmutable, ordenado y persistente de claves a valores, en el que los valores y las claves son strings de bytes arbitrarios. Cada tablet se asocia con un nodo específico de Cloud Bigtable. Además de los archivos SSTable, todas las escrituras se almacenan en el registro compartido de Colossus apenas Cloud Bigtable las reconoce, lo que proporciona mayor durabilidad.

Los datos nunca se almacenan en los nodos de Cloud Bigtable; cada nodo tiene indicadores que apuntan a un conjunto de tablets almacenados en Colossus. Como resultado, sucede lo siguiente:

  • Volver a balancear los tablets de un nodo a otro es un proceso muy expedito, porque los datos reales no se copian. Cloud Bigtable solo actualiza los indicadores de cada nodo.
  • Recuperarse de la falla de un nodo de Cloud Bigtable es muy rápido, porque solo los metadatos deben migrarse al nodo de reemplazo.
  • No se pierden datos cuando falla un nodo de Cloud Bigtable.

Consulta Instancias, clústeres y nodos para obtener más información sobre cómo trabajar con estas piezas fundamentales.

Balanceo de cargas

Cada zona de Cloud Bigtable se administra con un proceso maestro que balancea las cargas de trabajo y el volumen de datos en los clústeres. En este proceso, se dividen los tablets más activos o grandes en dos partes y se combinan los más pequeños o con menos acceso; de esta forma, se redistribuyen entre los nodos según sea necesario. Si se produce un aumento repentino de tráfico en un tablet, se dividirá en dos, y una de estas dos partes pasará a otro nodo. Cloud Bigtable administra estas divisiones, las combinaciones y el rebalanceo automáticamente, lo que ahorra a los usuarios el esfuerzo de la administración manual. Comprender el rendimiento de Cloud Bigtable ofrece más detalles sobre este proceso.

Para obtener el mejor rendimiento de escritura en Cloud Bigtable, es importante que estas operaciones se distribuyan de manera uniforme entre los nodos. Una forma de hacerlo es con las claves de fila que no siguen un orden predecible. Por ejemplo, los nombres de usuario tienden a distribuirse de manera más o menos uniforme en el alfabeto, por lo que incluir un nombre de usuario al comienzo de una clave de fila ayudará a distribuir mejor las escrituras.

Del mismo modo, es útil agrupar las filas relacionadas a fin de que sean adyacentes entre sí, lo que permite leer varias a la vez. Por ejemplo, si almacenas distintos tipos de datos sobre el clima, tu clave de fila podría ser la ubicación donde se recopilaron los datos seguida de una marca de tiempo (por ejemplo, WashingtonDC#201803061617). Una clave de fila de este tipo te permitiría agrupar todos los datos de una ubicación en filas contiguas. Para otras ubicaciones, la fila debería comenzar con otro identificador; si hay muchas ubicaciones recopilando datos al mismo ritmo, las escrituras se extenderán de manera uniforme entre los tablets.

Consulta Cómo elegir una clave de fila a fin de obtener más detalles sobre cómo seleccionar una clave de fila apropiada para tus datos.

Tipos de datos admitidos

Cloud Bigtable trata todos los datos como strings de bytes sin procesar para todos los propósitos. La única ocasión en que Cloud Bigtable intenta determinar el tipo es para aumentar las operaciones, en cuyo caso el objetivo debe ser un número entero de 64 bits codificado como un valor big-endian de 8 bytes.

Uso del disco y la memoria

En las siguientes secciones, se describe cómo varios componentes de Cloud Bigtable afectan el uso del disco y la memoria de tu instancia.

Celdas vacías

Las celdas vacías en tablas de Cloud Bigtable no ocupan espacio. En esencia, cada fila es una recopilación de entradas de clave-valor, en la que la clave es una combinación de la familia de columnas, el calificador de columnas y la marca de tiempo. Si una fila no incluye un valor para una clave específica, la entrada de clave-valor no se encuentra presente.

Calificadores de columnas

Los calificadores de columnas ocupan espacio en una fila, ya que cada uno de estos se almacena en la misma fila donde se utiliza. En consecuencia, a menudo, es eficiente usarlos como datos. En el ejemplo anterior sobre Prezzy, los calificadores de columnas de la familia follows son los nombres de los usuarios seguidos; la entrada de clave-valor de estas columnas es simplemente un valor de marcador de posición.

Compactaciones

Cloud Bigtable vuelve a escribir tus tablas de forma periódica para quitar las entradas borradas y reorganizar los datos a fin de que las operaciones de lectura y escritura sean más eficientes. Este proceso se conoce como compactación. No es necesario configurar nada para la compactación, Cloud Bigtable la ejecuta automáticamente.

Mutaciones y eliminaciones

Las mutaciones, o cambios, en una fila ocupan más almacenamiento, porque Cloud Bigtable almacena las mutaciones de manera secuencial o solo las compacta de forma periódica. Cuando Cloud Bigtable compacta una tabla, quita los valores que ya no son necesarios. Si actualizas el valor de una celda, el original y el nuevo se almacenarán en el disco durante la misma cantidad de tiempo hasta que se compacten los datos.

Las eliminaciones también ocupan almacenamiento adicional, al menos, a corto plazo, ya que son un tipo especializado de mutación. Hasta que la tabla se compacte, una eliminación ocupa más espacio en lugar de liberarlo.

Compresión de datos

Cloud Bigtable comprime tus datos automáticamente con un algoritmo inteligente. No puedes configurar los ajustes de compresión de tu tabla. Sin embargo, puede resultarte útil saber cómo almacenar datos a fin de que se compriman de forma eficiente:

  • Los datos aleatorios no se pueden comprimir de una manera tan eficiente como los que siguen un patrón. Estos últimos incluyen texto, como esta página que estás leyendo.
  • La compresión funciona mejor si los valores idénticos están cerca uno del otro, ya sea en la misma fila o en filas adyacentes. Si ordenas las filas que contengan la misma información para que queden juntas, los datos se van a comprimir de manera más eficiente.

Durabilidad de los datos

Cuando usas Cloud Bigtable, tus datos se almacenan en Colossus, el sistema de archivos interno de alta durabilidad de Google, con dispositivos de almacenamiento en los centros de datos de Google. No es necesario que ejecutes un clúster HDFS ni ningún otro sistema de archivos para usar Cloud Bigtable. Si tu instancia usa la replicación, Cloud Bigtable mantiene una copia de tus datos en Colossus para cada clúster en la instancia. Cada copia está ubicada en una zona o región diferente, lo que mejora aún más la durabilidad.

En segundo plano, Google usa sus métodos de almacenamiento para ofrecer una durabilidad de datos muy superior a la de la replicación HDFS estándar en tres direcciones. Además, creamos copias de seguridad de los datos para protegerlos contra eventos catastróficos y proporcionar recuperación ante desastres.

Seguridad

El acceso a tus tablas de Cloud Bigtable se encuentra bajo el control de tu proyecto de Google Cloud Platform y las funciones de administración de identidades y accesos de Cloud que asignas a los usuarios. Por ejemplo, puedes asignar funciones de Cloud IAM para evitar que los usuarios puedan leer o escribir en las tablas, o crear instancias nuevas. Si alguien no tiene acceso a tu proyecto o no tiene una función de Cloud IAM que le otorgue los permisos adecuados para Cloud Bigtable, no podrá acceder a tus tablas.

Puedes administrar la seguridad a nivel de la instancia y del proyecto. Cloud Bigtable no admite restricciones de seguridad a nivel de la tabla, de las filas, de las comunas o de las celdas.

Otras opciones de almacenamiento y base de datos

Cloud Bigtable no es una base de datos relacional; no admite consultas de SQL ni combinaciones, ni admite transacciones de varias filas. Tampoco es una solución adecuada para almacenar menos de 1 TB de datos.

  • Si necesitas compatibilidad total con SQL para un sistema de procesamiento de transacciones en línea (OLTP), considera Cloud SQL o Cloud Spanner.
  • Si necesitas consultas interactivas con un sistema de procesamiento analítico en línea (OLAP), considera BigQuery.
  • Si necesita almacenar BLOB inmutables de más de 10 MB, como imágenes o películas grandes, considera Cloud Storage.
  • Si necesitas almacenar objetos altamente estructurados en una base de datos de documentos con compatibilidad para transacciones ACID y consultas similares a SQL, considera Cloud Datastore.

Para obtener más información sobre otras opciones de base de datos, consulta la descripción general de los servicios de base de datos.

Qué sigue

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación de Cloud Bigtable