Hem Personliga finanser ÖVergång från en RDBMS-modell till HBase

ÖVergång från en RDBMS-modell till HBase

Video: System Design Interview – Step By Step Guide 2024

Video: System Design Interview – Step By Step Guide 2024
Anonim

Om du står inför designfasen för din ansökan och du tror att HBase skulle passa bra, så utformar du radnycklarna och scheman för att passa HBase-datamodellen och arkitekturen är rätt tillvägagångssätt. Men ibland är det meningsfullt att flytta en databas som ursprungligen utformades för en RDBMS till HBase.

Ett vanligt scenario där detta tillvägagångssätt är vettigt är en MySQL-databasinstans som har nått sina gränser för skalbarhet. Tekniker finns för att horisontellt skala en MySQL-instans ( sharding, med andra ord) men denna process är vanligtvis besvärlig och problematisk eftersom MySQL helt enkelt inte ursprungligen var avsedd för sharding.

Övergång från relationsmodellen till HBase-modellen är en relativt ny disciplin. Men vissa etablerade tankegångar framträder och har sammanslagits i tre huvudprinciper att följa när man närmar sig en övergång. Dessa principer är denormalisering, dubbelarbete, och intelligenta nycklar (DDI) .

  • Denormalisering: Den relationella databasmodellen beror på a) ett normaliserat databasschema och b) sammanfogar mellan tabeller för att svara på SQL-operationer. Databas normalisering är en teknik som skyddar mot förlust av data, redundans och andra anomalier eftersom data uppdateras och hämtas.

    Det finns ett antal regler som experterna följer för att komma fram till ett normaliserat databasschema (och databas normalisering är en hel studie själv), men processen innebär vanligtvis att dela större tabeller i mindre tabeller och definiera relationer mellan dem. Databasdormalisering är motsatsen till normalisering, där mindre, mer specifika tabeller sammanfogas till större, mer allmänna tabeller.

    Detta är ett vanligt mönster när man övergår till HBase, eftersom anslutningar inte finns över tabellerna, och anslutningar kan vara långsamma eftersom de innebär kostsamma diskoperationer. Bevakning av uppdatering och återhämtning avvikelser är nu jobbet för din HBase-klientprogram, eftersom de skydd som du får genom normalisering är ogiltiga.

  • Duplikering: När du avormaliserar ditt databasschema kommer du sannolikt att sluta duplicera data eftersom det kan hjälpa dig att undvika kostsamma läsoperationer över flera tabeller. Var inte bekymrad över det extra lagringsutrymmet (i naturen självklart); Du kan använda den automatiska skalbarheten hos HBase till din fördel.

    Observera att det extra arbetet kommer att krävas av din kundansökan för att duplicera data och kom ihåg att nativt HBase tillhandahåller endast radnivå atomoperationer inte överst i rad (med undantag beskriven i HBASE-5229 JIRA) eller kors tabell.

  • Intelligent Keys: Eftersom den data som lagras i HBase är ordnad med radnyckel och radnyckeln är det enda inbyggda index som tillhandahålls av systemet, kan en noggrann och intelligent design av radnyckeln göra en stor skillnad. Till exempel kan din radnyckel vara en kombination av ett servicenummer och kundens ID-nummer som placerar tjänsteordern.

    Med den här radnyckeln kan du slå upp data relaterade till serviceordern eller slå upp data relaterad till kunden med samma radnyckel i samma tabell. Denna teknik kommer att bli snabbare för vissa frågor och undvika kostsamma tabeller.

För att klargöra dessa speciella tankegångar, ta en tabell med kundkontaktinformation och placera den inom ramen för en typisk serviceorderdatabas. Figuren visar vad ett normaliserat serviceorderdatabasschema kan se ut.

I enlighet med reglerna för RDBMS-normalisering, ställer du in testklientkontaktinformationstabellen så att den är skild från tjänsteordertabellen för att undvika att kunddata förloras när serviceorder stängs och eventuellt raderas. Ta samma tillvägagångssätt för produkttabellen, vilket innebär att nya produkter kan läggas till den fiktiva företagsdatabasen oberoende av serviceorder.

Genom att förlita sig på RDBMS-anslutningsoperationer stödjer detta schema frågor som visar antalet serviceorder som öppnas mot en viss produkt tillsammans med kundens plats där produkten används.

Det är bra och dammigt, men det är ett schema du skulle använda med RDBM. Hur övergår du detta schema till ett HBase schema? Nästa figur illustrerar ett möjligt HBase-system - en som följer DDI-designmönstret.

Tabellen Kundinformation har deformaliserats genom att inkludera kundnamn och kontaktinformation i stället för de främmande nycklar som tidigare använts. Dessutom kopieras dataen genom att hålla tabellen Kundkontaktinformation som den är. Anslut nu till Service Order-tabellen och tabellen Kundkontaktinformation är inte nödvändig.

Dessutom har en intelligent radnyckelsdesign använts som kombinerar produktnumret med kundnumret för att bilda serviceordernumret (exempelvis A100 | 00001). Med hjälp av den här intelligenta nyckeln kan serviceordertabellen ge viktiga rapporter om produktbrist och kunder som för närvarande upplever produktproblem.

Alla dessa frågor kan alla stödjas av HBase i radnivå atomform för applikationen. Eftersom du vet att HBase beställer radnycklar och sorterar dem på ett lexikografiskt sätt, kan din ansökan göra vissa utbildade gissningar om dataläge när du utfärdar skanningar för rapportering. (Samtliga A * -serienummer kommer att lagras tillsammans, till exempel.)

Serviceorderdatabasen som representeras av HBase-schemat är ett relativt enkelt exempel, men det illustrerar hur HBase i vissa fall kan korsa RDBMS-världen och ge betydande värde. Om det fiktiva företaget har terabytes eller till och med petabytes av serviceanropsdata för att lagra, skulle HBase göra en stor skillnad vad gäller kostnad, tillförlitlighet, prestanda och skala.

Du kan självklart utforma ditt HBAS-scheman på flera olika sätt. Visserligen beror designen helt på de frågor som måste stödjas, men du har möjlighet att överföra vissa relationsdatabaser till mycket kraftfulla HBase-applikationer för produktionsanvändning så länge du arbetar med en solid förståelse av HBase-arkitekturen och DDI-designmönstret.

I detta exempel har antagits att frågor gjordes av en Java-applikation som utnyttjar HBase-klient-API: erna, eller kanske via ett annat språk med Apache Thrift. Den här applikationsmodellen kan passa precis bra och ge användbara prestanda och anpassningsalternativ för det fiktiva serviceföretaget.

ÖVergång från en RDBMS-modell till HBase

Redaktörens val

Hur man lägger till text i en sätter () Funktion i C Programmering

Hur man lägger till text i en sätter () Funktion i C Programmering

När du behöver visa en annan textrad, använd C-programmeringsfärdigheterna för att skapa en annan puts () -funktion i källkoden, som visas i Visa två textlinjer. VISA TILL TEXTFINER # inkludera int main () {sätter ("Hickory, Dickory, Dock,"); sätter ("musen sprang klockan."); returnera (0);} Den andra ...

Förklarar variabler i C-dummies

Förklarar variabler i C-dummies

Variabler är det som gör dina program zooma. Programmering kan bara inte bli gjort utan dem. Så om du inte har introducerats till variabler än, här går du. Valerie Variable är en numerisk variabel. Hon älskar att hålla nummer - vilket nummer som helst; det spelar ingen roll. När hon ser ett lika tecken tar hon ett värde och ...

Redaktörens val

Gör rädsla för din vän - dummies

Gör rädsla för din vän - dummies

Rädsla är lika verklig som mod. Även om värdet av rädsla inte är lika uppenbart som modets värde, har det dess fördelar. Rädsla är din instinkt som säger att du är obehaglig - även om situationen inte kommer att skada dig. Alla har haft den känslan när man hellre drar locket ...

Hur man ökar din självmedvetenhet - dummies

Hur man ökar din självmedvetenhet - dummies

Du kommer att vara med dig själv under en livstid. Ingenting kommer att förändra det faktum. Att lära känna, som att lyssna på och uppskatta själv är avgörande för din sanity. Kanske kommer du till att älska, acceptera och omfamna alla du är, är svår för dig att föreställa dig just nu, men du kan göra ...

Hur man ökar din mentala flexibilitet - dummies

Hur man ökar din mentala flexibilitet - dummies

ÄR flexibel i arbete och relationer är ett tecken på en högpresterande. Medan perfektionister är styva och obehagliga i sitt arbete och hur de interagerar med andra, är högpresterande mer öppna och tillmötesgående. Att vara mer flexibel på jobbet gav Ralph aldrig förslag under brainstorming vid gruppmöten. Han kände att hans lag ...

Redaktörens val

Nätverksadministration: Linux-installation och virtuella konsoler - dummies

Nätverksadministration: Linux-installation och virtuella konsoler - dummies

Linux är i sig ett kommandoradsorienterat operativsystem. Grafiska användargränssnitt - inklusive installationsprogrammets GUI - tillhandahålls av en valfri komponent som heter X Window System. Men medan du arbetar med det grafiska användargränssnittet för installationsprogrammet, håller Linux flera ytterligare kommandorads-konsoler öppna. Normalt behöver du inte ...

Nätverksadministration: Linux-loggning, logg och systemavstängning - dummies

Nätverksadministration: Linux-loggning, logg och systemavstängning - dummies

Alla användare som åtkomst ett Linux-system, lokalt eller över ett nätverk, måste verifieras av ett giltigt användarkonto på systemet. I det följande får du veta hur du loggar in och ut på ett Linux-system och hur du stänger av systemet. Logga in När Linux startar upp visas det ...

Nätverksadministration: Licensserver - Dummies

Nätverksadministration: Licensserver - Dummies

I vissa program kan du köpa nätverkslicenser som gör att du kan installera programvaran på många datorer som du vill, men reglera antalet personer som kan använda programvaran vid en viss tidpunkt. För att styra hur många som använder programvaran, är en särskild licensserver inrättad. När en användare börjar ...