¿Cuál es la razón para tener familias de columnas? Ejemplo:
Escenario 1 :
Table Row-Key ColumnFamily1 ColumnFamily2 ColumnFamily3
Escenario 2:
Table1 Row-Key Column1...ColumnN Table2 Row-Key Column1...ColumnN Table3 Row-Key Column1...ColumnN
En el escenario 1, aunque una tabla puede tener muchas familias de columnas, todas las familias de columnas se almacenan por separado. Entonces, ¿por qué existe un concepto de familias de columnas en sí mismo? ¿Por qué no puede haber simplemente el escenario 2? Nuevamente con el escenario 2, no estoy bloqueando ninguna característica que proporcione HBase. Todavía puede agregar columnas dinámicas más adelante (y otras características).
Mi única preocupación es que, si las familias de columnas se almacenan por separado, ¿por qué están en la misma tabla? Solo me interesa cuál es la intención de tener familias de columnas (y qué problema resuelve).
Una tabla, por definición, es una unidad de organización de datos que lógicamente van juntos. Las familias de columnas le brindan una forma de crear una subestructura dentro de su tabla para optimizar el rendimiento en función de sus patrones de acceso (ese es el problema que resuelve).
En términos prácticos, aunque las familias de columnas dentro de una tabla se almacenan "por separado", en diferentes archivos, también se almacenan "cerca" en el sentido de que HBase almacena todos los valores de una fila determinada en la misma región. Esto incluye los archivos separados para las familias de columnas. Aunque están en archivos separados, pertenecen al mismo servidor de región.
Por el contrario, si dividiera sus datos en diferentes tablas, partes de la misma "fila" vivirían en diferentes regiones de HBase, y al acceder a ellas pagaría la sobrecarga de búsqueda en diferentes servidores de región en su clúster.
Entonces, si opta por colocar algunos de sus datos en una tabla separada en lugar de en una familia de columnas, no solo está organizando sus datos de una manera que podría resultar difícil de administrar, sino que también está perdiendo muchas ventajas de rendimiento de HBase. .