El almacenamiento de datos en bigtables

Un Bigtable tiene mesas al igual que lo hace un RDBMS, pero a diferencia de un RDBMS, unas tablas Bigtable generalmente no tienen relaciones con otras tablas. En lugar de ello, los datos complejo se agrupa en una sola tabla.

Una mesa en un Bigtable consiste en grupos de columnas, llamado familias de columna, y una clave de fila. Estos, junto habilitar la búsqueda rápida de un solo registro de datos contenidos en un Bigtable.

El uso de teclas de la fila

Cada fila debe ser identificado de forma única. Aquí es donde una clave viene en fila. Una de las claves de fila es una cadena única se utiliza para hacer referencia a un único registro en un Bigtable. Se puede pensar en ellos como siendo similar a una clave principal o como un número de la seguridad social para BigTables.

Muchos BigTables no proporcionan buenos índices secundarios (índices sobre los propios valores de la columna), por lo que el diseño de una clave de fila que permite búsqueda rápida de registros es crucial para asegurar un buen rendimiento.

Una de las claves fila bien diseñado permite un registro que se encuentra sin tener que tener su aplicación leer y comprobar la aplicabilidad de cada grabar a sí mismo. Es más rápido para la base de datos para hacer esto.

teclas de la fila también son utilizados por la mayoría de BigTables para distribuir uniformemente entre los servidores de registros. Una de las claves fila mal diseñado conducirá a un servidor en el clúster de base de datos que recibe más carga (peticiones) que los otros servidores, disminuyendo el rendimiento visible para el usuario de su servicio de base de datos completa.

Creación de familias de columna

Una familia columna es una agrupación lógica de columnas. Aunque BigTables le permiten variar el número de columnas apoyadas en cualquier definición de tabla en tiempo de ejecución, debe especificar las familias de columnas permitidas en la delantera. Estos por lo general no pueden ser modificados sin tener que desconectar el servidor. A modo de ejemplo, una aplicación de libreta de direcciones puede usar una familia de Dirección de la casa. Esto podría contener las columnas Dirección Línea 1, Línea de dirección 2, Área, ciudad, condado, estado, país y código postal.

No todas las direcciones tendrán datos en todos los campos. Por ejemplo, Dirección Línea 2, Área, y el condado de frecuencia puede estar en blanco. Por otro lado, es posible que los datos sólo en Dirección Línea 1 y código postal. Estos dos ejemplos son a la vez muy bien en la misma familia la columna Dirección de la casa.

Tener un número variable de columnas tiene sus inconvenientes. Si desea HBase, por ejemplo, para listar todas las columnas dentro de una familia en particular, debe iterar sobre todas las filas para obtener la lista completa de las columnas! Por lo tanto, es necesario hacer un seguimiento de su modelo de datos de la aplicación con un clon Bigtable para evitar esta pérdida de rendimiento.

Video: Evolución de las capacidades de almacenamiento de datos

El uso de marcas de tiempo

Cada valor dentro de una columna típicamente puede almacenar diferentes versiones. Estas versiones son referenciados mediante el uso de un valor de marca de tiempo.

Los valores no se modifican - se añade un valor diferente, con una marca de tiempo diferente. Para eliminar un valor, se agrega un marcador lápida al valor, que básicamente está flaqueando que el valor se elimina en un punto determinado en el tiempo.

Todos los valores para la misma familia clave de fila y la columna se almacenan juntos, lo que significa que todas las operaciones de búsqueda o decisiones de versión se toman en un solo lugar donde reside todos los datos relevantes.

Video: Almacenamiento de datos y su representación. De analógico a digital

Tratamiento de los valores binarios

En BigTables, los valores son simplemente matrices de bytes. Por ejemplo, pueden ser texto, números o incluso imágenes. Lo que se almacena en ellos depende de usted.

Sólo unos pocos clones Bigtable apoyan valor a escribir. Hypertable, por ejemplo, le permite establecer los tipos y agregar índices secundarios de valores. Cassandra también le permite definir los tipos de valores, pero sus índices rango en consultas (menor que y mayor que las operaciones para cada tipo de datos) se limitan a la aceleración de las operaciones de búsqueda de claves, no las operaciones de comparación de valor.

Artículos Relacionados