Video: AppLab - Data View 2025
Den logiske HBase datamodel er enkel, men elegant og giver en naturlig datalagringsmekanisme til alle slags data - især ustrukturerede store datasæt. Alle dele af datamodellen konvergerer til et nøgleværdipar.
Hvordan kommer du først til at udnytte resten af datamodelkomponenterne i en verden, hvor du kan tænke på radnøglen som den primære nøgle til data, der er gemt i HBase? Nå, alt afhænger af, hvor mange data du vil returnere i forespørgsler, og hvor længe du er villig til at vente.
Hvis du kun angiver rækkenøglen, kan du muligvis returnere et ton af data, fordi en enkelt række kan have millioner af kolonner. Også, med kun rækkenøglen til at arbejde fra, kan HBase returnere hver søjlekvalificator, version og værdi relateret til radnøglen.
Hvad hvis du kun vil have en bestemt kolonne eller version af dine data? Kan du i det viste eksempel se hvad der sker, hvis du kun vil have efternavnet til en bestemt kunde? Løsningen er at opbygge en mere kompleks nøgle for at præcisere præcis, hvad du har brug for. Et nøgleværdipar kan se sådan ud: RowKey: (Kolonnefamilie: Kolonnekvalificering: Version) => Værdi
Rækkefølge | Kolonnefamilie: {Kolonnekvalificering: Version: Værdi} |
---|---|
00001 | Kundenavn: {'FN':
1383859182496: 'John', 'LN': 1383859182858: 'Smith', 'MN': 1383859183001: 'Timothy', 'MN': 1383859182915: 'T'} > KontaktInfo: {'EA': 1383859183030: 'John. Smith @ xyz. com ', ' SA ': 1383859183073:' 1 Hadoop Lane, NY 11111 '} 00002 |
Kundenavn: {' FN ': | 1383859183103:' Jane ',
'LN': 1383859183163: 'Doe', KontaktInfo: { 'SA': 1383859185577: '7 HBase Ave, CA 22222'}
|
Så nøglerne er mere komplekse end du måske forestiller dig fra at studere bordet. Hvis du f.eks. Vil have det seneste mellemnavn (eller det eneste mellemnavn, indtil nu) hos kunden i række '00001', vil det resulterende nøgleværdipar se sådan ud: '00001: CustomerName: MN' => ' Timothy '
Husk at versioner implementeres ved hjælp af tidsstempler som standard og sorteres i faldende rækkefølge, så du automatisk får den nyeste værdi, hvis du ikke angiver en version. Hvis du vil have en forudgående mellemstart for din kunde (se tabel 12-2), vil dit resulterende nøgleværdipar se sådan ud: '00001: CustomerName: MN: 1383859182915' => 'T'
Vi håber at De forskellige beskrivelser af HBase begynder at tage form i dit sind.Specifikt er HBase både en kolonnefamilieorienteret datalager og en nøgle-værdi-par datalager. Henvisning til HBase som blot en "kolonneorienteret" datalager overlader meget til fantasien.
Hvis du var nysgerrig, er der ingen datatyper i HBase - værdier i HBase er kun en eller flere byte. Igen, simpel men kraftfuld, fordi du kan gemme noget!