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

Jewish Funeral Traditions - dummies

Jewish Funeral Traditions - dummies

Judiska begravningar sker vanligen i en synagoge, begravningshem eller på en kyrkogård. Med tradition är judiska begravningar enkla (symboliserar tron ​​att människor är alla lika i döden), men de varierar mycket och har ingen uppsättning liturgi. Att skicka blommor till ett begravnings- eller sorgshem är starkt avskräckt i judendomen. Inte bara kommer ...

Identifiera komplicerade grävande dummies

Identifiera komplicerade grävande dummies

Komplicerat roende är det tekniska namnet som sorgproffs ger till en sorgprocess som sitter fast vid något tillfälle , vilket gör det omöjligt för de förlorade att framgångsrikt starta eller avsluta sorgprocessen. Komplicerat sorg är ofta ett tecken på olösta problem i förhållandet mellan de förlorade och den avlidne som gör det ...

Redaktörens val

Hur man ställer in kartkontroller i Main_iPad. Storyboard i din iOS App - dummies

Hur man ställer in kartkontroller i Main_iPad. Storyboard i din iOS App - dummies

När du har en anpassad vy för MapController i din iOS-app, måste du berätta för iPad-storyboardet att du laddar in din anpassade vy i stället för en UIViewController. Följ dessa steg: Välj Projekt navigator genom att välja Main_iPad. storyboard och välj sedan View Controller i View Controller - Map Scene i dokumentutskriften. ...

Hur man roterar objekt i din iOS-app - dummies

Hur man roterar objekt i din iOS-app - dummies

Här hittar du hur man rotera en vy (i så fall vrid bilen runt) i din iOS-app. För att göra det uppdaterar du den roterande kodstuben du startade med och ersätter den med den fetstilta koden. - (void) rotera {CGAffineTransform transform = CGAffineTransformMakeRotation (M_PI); void (^ animation) () = ^ () {self. bil. transformera = transformera; ...

Hur man ställer in en WeatherController i Main_iPad. storyboard-fil för din iOS-app - dummies

Hur man ställer in en WeatherController i Main_iPad. storyboard-fil för din iOS-app - dummies

Bör du lägga till en ny anpassad vykontroll till din iOS-app innan du fortsätter till dessa steg. Du behöver fortfarande berätta för storyboardet att du vill att den ska ladda den nya anpassade vykontrollen istället för en UIViewController. Följ dessa steg:

Redaktörens val

Spara en grafisk stil i Adobe CS5 Illustrator - dummies

Spara en grafisk stil i Adobe CS5 Illustrator - dummies

Adobe Creative Suite 5 (Adobe CS5) Illustrator tillåter Du sparar en grafisk stil. En grafisk stil är en kombination av alla inställningar du väljer för ett visst filter eller en effekt i Utseendepanelen. Genom att spara informationen i en grafisk stil lagras du dessa attribut så att du snabbt och enkelt kan tillämpa ...

Välj som ett transformationsverktyg i Adobe CS5 Illustrator - dummies

Välj som ett transformationsverktyg i Adobe CS5 Illustrator - dummies

I Adobe Creative Suite 5 (Adobe CS5 ) Illustratör du kan använda markeringsverktyget för att skala och rotera ett valt objekt. Dra begränsningsboxens handtag för att ändra storlek på objektet, eller flytta dig utanför ett handtag och sedan, när markören ändras till en flippig pil (en böjd pil med pilhuvud i båda ändarna), dra till ...

Objekttransformation i Adobe CS5 Illustrator - dummies

Objekttransformation i Adobe CS5 Illustrator - dummies

Verktygen Rotate, Reflect, Scale och Shear i Adobe Creative Suite 5 (Adobe CS5) Illustrator använder alla samma grundläggande steg för att utföra transformationer. Här är fem sätt att transformera ett objekt: en för en godtycklig omvandling och fyra andra för exakta omvandlingar baserat på en numerisk mängd som du anger. Vilkårlig omvandlingsmetod Eftersom detta ...