Pares de valores-chave no Modelo de Dados HBase
O modelo de dados HBase lógica é simples, mas elegante, e oferece um mecanismo de armazenamento de dados natural para todos os tipos de dados - especialmente não estruturados grandes conjuntos de dados. Todas as partes do modelo de dados convergem para um par de chave-valor.
Primeiro, em um mundo onde você pode pensar da chave de linha como chave primária para os dados armazenados no HBase, como é que você acaba alavancando o resto dos componentes do modelo de dados? Bem, tudo depende da quantidade de dados que você deseja retornado em consultas e quanto tempo você está disposto a esperar.
Especificando apenas a chave de linha pode potencialmente retornar uma tonelada de dados, porque uma linha individual pode ter milhões de colunas. Além disso, apenas com a chave de linha para trabalhar, HBase pode retornar todos os qualifier coluna, a versão eo valor relacionado com a chave de linha.
E se você quiser apenas uma coluna específica ou versão de seus dados? A partir do exemplo mostrado, você pode ver o que acontece se você quiser apenas o último nome de um determinado cliente? A solução é construir uma chave mais complexo para especificar exatamente o que você precisa. Um par de valores-chave pode ter esta aparência: RowKey: (Coluna Família: Coluna Qualifier: Version) => Valor
Row Key | Coluna Família: {coluna Qualifier: Versão: Valor} |
---|---|
00001 | CustomerName: { 'FN': 1383859182496: 'John', 'LN': 1383859182858: 'Smith', 'MN': 1383859183001: 'Timóteo', 'MN': 1383859182915: 'T'} ContactInfo: { 'EA': 1383859183030:'[email protected] ', 'SA': 1383859183073: «1 Hadoop Lane, NY11111 '} |
00002 | CustomerName: { 'FN': 1383859183103: 'Jane', 'LN': 1383859183163: 'Doe', Informação de contacto: { 'SA': 1383859185577: «7 HBase Ave, CA22222 '} |
Depois de especificar a chave, o resto é opcional. Quanto mais específico você fazer a consulta, no entanto (da esquerda para a direita), o mais granular os resultados. Seu desempenho vai piorar, porque o sistema tem que gastar mais tempo para localizar o valor exato ou valores que você precisa, mas menos dados são retornados quando a consulta for concluída.
Então as chaves são mais complexas do que você pode imaginar a partir do estudo da mesa. Por exemplo, se você quiser o nome do meio mais recente (ou o único nome do meio até agora) do cliente na linha '00001', o par chave-valor resultante ficaria assim: '00001: CustomerName: MN' => ' Timothy '
Lembre-se que as versões são implementados usando selos de tempo por padrão e são classificadas em ordem decrescente, para que você obtenha automaticamente o valor mais recente, se você não especificar uma versão. Se você quer uma inicial do meio prévia para o seu cliente (consulte a Tabela 12-2), o seu par de chaves-valor resultante ficaria assim: '00001: CustomerName: MN: 1383859182915' => 'T'
Esperamos que as várias descrições de HBase estão começando a tomar forma em sua mente. Especificamente, HBase é tanto um repositório de dados orientada para a família de coluna e um armazenamento de dados de valor par de chaves. Referindo-se como uma simples HBase # 147-coluna orientada armazenamento de dados # 148- deixa muito para a imaginação.
Em caso você estava curioso, não há tipos de dados no HBase - valores em HBase são apenas um ou mais bytes. Mais uma vez, simples, mas poderosa, porque você pode armazenar qualquer coisa!