update tutorial tabla scan instalacion describe crear rdbms hadoop hbase hive

rdbms - tutorial - instalacion hbase



cómo diseñar el esquema Hbase? (2)

supongamos que tengo esta tabla RDBM ( Entity-attribute-value_model ):

col1: entityID col2: attributeName col3: value

y quiero usar HBase debido a problemas de escala.

Sé que la única forma de acceder a la tabla Hbase es usando una clave principal (cursor). puede obtener un cursor para una clave específica e iterar las filas una a una.

El problema es que, en mi caso, quiero poder iterar en las 3 columnas. por ejemplo :

  • para un ID de entidad determinado, quiero obtener todos sus atributos y valores
  • para dar un attributeName y un valor que quiero para todos los entitiIDS ...

así que una idea que tuve es construir una tabla Hbase que contenga los datos (tabla DATA, con entityID como índice principal), y 2 tablas "indexadas" una con attributeName como clave principal y la otra con valor

cada tabla de índice contendrá una lista de punteros (entityID) para la tabla DATA.

¿Es un enfoque razonable? o es un ''abuso'' de los conceptos de Hbase?

En este blog, el autor dice:

HBase permite obtener operaciones por clave primaria y escaneos (pensar: cursor) sobre rangos de fila. (Si tiene escala y necesita índices secundarios, no se preocupe, ¡Lucene al rescate! Pero esa es otra publicación).

¿Sabes cómo puede ayudar Lucene?

- Yonatan


Los índices secundarios serían de hecho útiles para muchas aplicaciones potenciales de HBase, y creo que los desarrolladores de hecho lo están analizando. Checkout http://www.mail-archive.com/[email protected]/msg04801.html .

Mientras tanto, si el almacenamiento de datos de su aplicación se puede modelar como un esquema en estrella (consulte http://en.wikipedia.org/wiki/Star_schema ), es posible que desee consultar la solución que Hypertable propone para necesidades secundarias de tipo índice. http://markmail.org/message/rphm4q6cbar2ycgp


Recomiendo tener dos tablas planas diferentes: una para buscar atributos + valores dada ID de entidad, y otra para buscar la entidad ID con los atributos + valores.

La Tabla 1 se vería así:

entityID1 { attribute1: value1; attribute2: value2; ... }

y Tabla 2:

attribute1_value1 { entityID1; } attribute2_value2 { entityID1; }