nehme an, dass ich diese RDBM Tisch (Entity-attribute-value_model):Wie Hbase-Schema entwerfen?
col1: entityID
col2: attributeName
col3: value
und ich möchte HBase aufgrund Skalierungsfragen verwenden.
Ich weiß, dass die einzige Möglichkeit, auf Hbase-Tabelle zuzugreifen, die Verwendung eines Primärschlüssels (Cursor) ist. Sie können einen Cursor für einen bestimmten Schlüssel abrufen und die Zeilen nacheinander durchlaufen.
Das Problem ist, dass ich in meinem Fall in der Lage sein soll, auf alle 3 Spalten zu iterieren. zum Beispiel:
- für eine gegebene einem entityID Ich möchte seine attriutes alle Werte und
- für Give attribute und Wert ich auf alle entitiIDS ...
wollen bekommen, so Eine Idee, die ich hatte, ist, eine Hbase-Tabelle zu erstellen, die die Daten enthält (Tabelle DATA, mit EntityID als Primärindex) und 2 "Index" -Tabellen eine mit attributeName als Primärschlüssel und die andere mit Wert
jede Indexregisterkarte le enthält eine Liste von Zeigern (entityIDs) für die DATA-Tabelle.
Ist es ein vernünftiger Ansatz? oder ist es ein "Missbrauch" der Hbase-Konzepte?
In dieser blog die author sagen:
HBase ermöglicht Operationen durch primäre Schlüssel und Scans (man denke: Cursor) verwinden Reihe Bereiche. (Wenn Sie sowohl Umfang und Notwendigkeit von Sekundärindizes haben, keine Sorge - Lucene zur Rettung Aber das ist eine andere Pfosten.)
Wissen Sie, wie Lucene helfen kann?
- Yonatan