Video: Azure Friday | Cassandra API for Azure Cosmos DB 2024
HBase-Datenspeicher bestehen aus einer oder mehreren Tabellen, die durch Zeilenschlüssel indiziert werden.. Daten werden in Zeilen mit Spalten gespeichert und Zeilen können mehrere Versionen haben. Standardmäßig wird die Datenversionierung für Zeilen mit Zeitstempeln implementiert.
Zeilenschlüssel | Spaltenfamilie: {Spaltenqualifizierer: Version: Wert} |
---|---|
00001 | Kundenname: {'FN':
1383859182496: ' John ', ' LN ': 1383859182858:' Smith ', ' MN ': 1383859183001:' Timothy ', ' MN ': 1383859182915:' T '} ContactInfo: {' EA ': 1383859183030:' John. Smith @ xyz. com ', ' SA ': 1383859183073:' 1 Hadoop Lane, NY 11111 '} |
00002 | Kundenname: {' FN ':
1383859183103:' Jane ', 'LN': 1383859183163: 'Doe', ContactInfo: { 'SA': 1383859185577: '7 HBase Ave, CA 22222'} |
Zur Veranschaulichung hat die Tabelle zwei einfache Zeilenschlüssel: 00001 und 00002. Zeilenschlüssel sind als Byte-Arrays implementiert und in Byte-Lexikographischer Reihenfolge sortiert, was bedeutet, dass die Zeile Die Schlüssel werden Byte für Byte von links nach rechts sortiert.
Wenn Sie beim Entwerfen von Zeilenschlüsseln in numerischen Werten denken, ist das Sortieren einfach. Bei zwei gegebenen Schlüsseln wird, wenn das Byte bei Index 1 in Schlüssel 1 kleiner ist als das Byte bei Index 1 in Schlüssel 2, der Zeilenname 1 immer vor dem Zeilennamen 2 gespeichert, unabhängig davon, was als nächstes in der Folge von Bytes kommt.
Es ist jedoch üblich, anstelle von numerischen Werten für Zeilenschlüssel in HBase druckbare (ASCII) Zeichen zu verwenden. Wenn Sie dies tun, müssen Sie verstehen, dass die Sprache Java Zeichen darstellt, die den Unicode-Standard verwenden. Das folgende Beispiel veranschaulicht diese Entwurfsüberlegung für Basic Latin (ASCII).
"RowA" steht vor "RowA" Row-1 "steht vor" Row11 "Row1" steht vor "RowA"
Vielleicht fragen Sie sich, warum Sie sich mit diesem Detail in Bezug auf die Zeilenschlüssel beschäftigen sollten. ist, dass ein richtiger Zeilenschlüssel-Entwurf entscheidend ist, um eine gute Leistung in HBase zu erreichen - wenn Sie das nicht tun, werden Sie den vollen Wert Ihres HBase-Clusters nicht erkennen. 3 ->