NoSQL-handledning: Vad är, typer av NoSQL-databaser och exempel
Vad är NoSQL?
NoSQL Databas är ett icke-relationellt datahanteringssystem som inte kräver ett fast schema. Det undviker sammanfogningar och är lätt att skala. Huvudsyftet med att använda en NoSQL-databas är för distribuerade datalager med enorma datalagringsbehov. NoSQL används för Big data och realtidswebbappar. Till exempel samlar företag som Twitter, Facebook och Google in terabyte med användardata varje dag.
NoSQL-databas står för "Inte bara SQL" eller "Inte SQL." Även om en bättre term skulle vara "NoREL", fångade NoSQL. Carl Strozz introducerade NoSQL-konceptet 1998.
Traditionell RDBMS använder SQL-syntax för att lagra och hämta data för ytterligare insikter. Istället omfattar ett NoSQL-databassystem ett brett utbud av databasteknologier som kan lagra strukturerad, semi-strukturerad, ostrukturerad och polymorf data. Låt oss förstå om NoSQL med ett diagram i denna NoSQL-databashandledning:
Varför NoSQL?
Konceptet med NoSQL-databaser blev populärt bland internetjättar som Google, Facebook, Amazon, etc. som hanterar enorma mängder data. Systemets svarstid blir långsam när du använder RDBMS för stora mängder data.
För att lösa detta problem kunde vi "skala upp" våra system genom att uppgradera vår befintliga hårdvara. Denna process är dyr.
Alternativet för det här problemet är att fördela databasbelastning på flera värdar när belastningen ökar. Denna metod är känd som "skala ut".
NoSQL-databasen är icke-relationell, så den skalar ut bättre än relationsdatabaser eftersom de är designade med webbapplikationer i åtanke.
Kort historik över NoSQL-databaser
- 1998 - Carlo Strozzi använder termen NoSQL för sin lätta relationsdatabas med öppen källkod
- 2000- Grafdatabas Neo4j lanseras
- 2004- Google BigTable lanseras
- 2005- CouchDB lanseras
- 2007- Forskningsuppsatsen om Amazon Dynamo släpps
- 2008 - Facebooks öppna källor Cassandra projektet
- 2009- Termen NoSQL återinfördes
Funktioner i NoSQL
Icke-relationell
- NoSQL-databaser följer aldrig relationsmodell
- Förse aldrig tabeller med platta poster med fasta kolumner
- Arbeta med fristående aggregat eller BLOB
- Kräver inte objektrelationell mappning och datanormalisering
- Inga komplexa funktioner som frågespråk, frågeplanerare, referensintegritetskopplingar, ACID
Schemafri
- NoSQL-databaser är antingen schemafria eller har avslappnade scheman
- Kräv inte någon form av definition av dataschemat
- Erbjuder heterogena strukturer av data inom samma domän
Enkelt API
- Erbjuder lättanvända gränssnitt för lagring och förfrågning av data
- API:er tillåter datamanipulation och urvalsmetoder på låg nivå
- Textbaserade protokoll används oftast med HTTP REST med JSON
- Används oftast inget standardbaserat NoSQL-frågespråk
- Web-aktiverade databaser som körs som tjänster mot internet
Distribuerad
- Flera NoSQL-databaser kan köras på ett distribuerat sätt
- Erbjuder automatisk skalning och fail-over-funktioner
- Ofta kan ACID-konceptet offras för skalbarhet och genomströmning
- För det mesta ingen synkron replikering mellan distribuerade noder Asynkron Multi-Master-replikering, peer-to-peer, HDFS-replikering
- Ger bara en eventuell konsekvens
- Delade ingenting Architecture. Detta möjliggör mindre koordination och högre distribution.
Typer av NoSQL-databaser
NoSQL-databaser är huvudsakligen indelade i fyra typer: Nyckel-värdepar, Kolumnorienterade, Grafbaserade och Dokumentorienterade. Varje kategori har sina unika egenskaper och begränsningar. Ingen av de ovan angivna databaserna är bättre för att lösa alla problem. Användare bör välja databasen baserat på deras produktbehov.
Typer av NoSQL-databaser:
- Nyckel-värde parbaserad
- Kolumnorienterad graf
- Grafer baserade
- Dokumentorienterad
Nyckelvärde parbaserad
Data lagras i nyckel/värdepar. Den är designad på ett sådant sätt att hantera mycket data och tung belastning.
Nyckel-värde parlagringsdatabaser lagrar data som en hashtabell där varje nyckel är unik och värdet kan vara en JSON, BLOB(Binary Large Objects), sträng, etc.
Till exempel kan ett nyckel-värdepar innehålla en nyckel som "Webbplats" associerad med ett värde som "Guru99".
Det är ett av de mest grundläggande NoSQL-databasexemplen. Den här typen av NoSQL-databas används som en samling, ordböcker, associativa arrayer, etc. Nyckelvärdeslagringar hjälper utvecklaren att lagra data utan schema. De fungerar bäst för innehållet i kundvagnen.
Redis, Dynamo, Riak är några NoSQL-exempel på nyckel-värdeslagringsdatabaser. De är alla baserade på Amazons Dynamo papper.
Kolumnbaserad
Kolumnorienterade databaser fungerar på kolumner och är baserade på BigTable-papper från Google. Varje kolumn behandlas separat. Värden för databaser med en kolumn lagras kontinuerligt.
De levererar hög prestanda på aggregeringsfrågor som SUM, COUNT, AVG, MIN etc. eftersom data är lättillgängliga i en kolumn.
Kolumnbaserade NoSQL-databaser används ofta för att hantera datalager, business intelligence, CRM, bibliotekskortkataloger,
HBase, Cassandra, HBase, Hypertable är NoSQL-frågeexempel på kolumnbaserad databas.
Dokumentorienterad
Dokumentorienterad NoSQL DB lagrar och hämtar data som ett nyckelvärdespar men värdedelen lagras som ett dokument. Dokumentet lagras i JSON- eller XML-format. Värdet förstås av DB och kan frågas.
I det här diagrammet till vänster kan du se att vi har rader och kolumner, och till höger har vi en dokumentdatabas som har en liknande struktur som JSON. Nu för relationsdatabasen måste du veta vilka kolumner du har och så vidare. Men för en dokumentdatabas har du datalager som JSON-objekt. Du behöver inte definiera vad som gör det flexibelt.
Dokumenttypen används mest för CMS-system, bloggplattformar, realtidsanalys och e-handelsapplikationer. Det bör inte användas för komplexa transaktioner som kräver flera operationer eller frågor mot varierande aggregerade strukturer.
Amazon SimpleDB, CouchDB, MongoDB, Riak, Lotus Notes, MongoDB, är populära Dokument ursprung DBMS-system.
Grafbaserad
En databas av graftyp lagrar entiteter samt relationerna mellan dessa entiteter. Entiteten lagras som en nod med relationen som kanter. En kant ger ett förhållande mellan noder. Varje nod och kant har en unik identifierare.
Jämfört med en relationsdatabas där tabeller är löst sammankopplade, är en Graph-databas en multirelationell karaktär. Traverseringsrelationen går snabbt eftersom de redan är infångade i DB, och det finns inget behov av att beräkna dem.
Grafbasdatabas används mest för sociala nätverk, logistik, rumslig data.
Neo4J, oändlig graf, OrientDB, FlockDB är några populära grafbaserade databaser.
Frågemekanismverktyg för NoSQL
Den vanligaste datahämtningsmekanismen är den REST-baserade hämtningen av ett värde baserat på dess nyckel/ID med GET-resurs
Document Store Database erbjuder svårare frågor eftersom de förstår värdet i ett nyckel-värdepar. Till exempel, CouchDB tillåter att definiera vyer med MapReduce
Vad är CAP-satsen?
CAP-satsen kallas också för bryggarens sats. Den säger att det är omöjligt för en distribuerad databutik att erbjuda mer än två av tre garantier
- Konsistens
- Tillgänglighet
- Partitionstolerans
Konsistens:
Uppgifterna bör förbli konsekventa även efter utförandet av en operation. Detta innebär att när data väl har skrivits, bör alla framtida läsbegäranden innehålla dessa data. Till exempel, efter att ha uppdaterat orderstatusen, bör alla kunder kunna se samma data.
Tillgänglighet:
Databasen ska alltid vara tillgänglig och responsiv. Den ska inte ha någon stilleståndstid.
Partitionstolerans:
Partitionstolerans innebär att systemet ska fortsätta att fungera även om kommunikationen mellan servrarna inte är stabil. Till exempel kan servrarna delas upp i flera grupper som kanske inte kommunicerar med varandra. Här, om en del av databasen är otillgänglig, är andra delar alltid opåverkade.
Eventuell konsistens
Termen "eventuell konsekvens" betyder att ha kopior av data på flera maskiner för att få hög tillgänglighet och skalbarhet. Således måste ändringar som görs av alla dataobjekt på en maskin spridas till andra repliker.
Datareplikering kanske inte sker omedelbart eftersom vissa kopior kommer att uppdateras omedelbart medan andra kommer att uppdateras med tiden. Dessa kopior kan vara ömsesidigt, men med tiden blir de konsekventa. Därav namnet eventuella konsistens.
BAS: Basiskt Atillgänglig, Ssäger ofta, Eeventuell konsistens
- I grund och botten betyder tillgängligt att DB är tillgänglig hela tiden enligt CAP-satsen
- Soft state betyder även utan en ingång; systemtillståndet kan ändras
- En eventuell konsekvens innebär att systemet blir konsekvent över tiden
Fördelar med NoSQL
- Kan användas som primär eller analytisk datakälla
- Stordatakapacitet
- Ingen enda misslyckande
- Enkel replikering
- Inget behov av separat cachinglager
- Det ger snabb prestanda och horisontell skalbarhet.
- Kan hantera strukturerad, semistrukturerad och ostrukturerad data med samma effekt
- Objektorienterad programmering som är enkel att använda och flexibel
- NoSQL-databaser behöver inte en dedikerad högpresterande server
- Stöd för viktiga utvecklarspråk och plattformar
- Enkel att implementera än att använda RDBMS
- Det kan fungera som den primära datakällan för onlineapplikationer.
- Hanterar big data som hanterar datahastighet, variation, volym och komplexitet
- Utmärker sig i distribuerad databas- och multidatacenterverksamhet
- Eliminerar behovet av ett specifikt cachlager för att lagra data
- Erbjuder en flexibel schemadesign som enkelt kan ändras utan driftstopp eller serviceavbrott
Nackdelar med NoSQL
- Inga standardiseringsregler
- Begränsade frågemöjligheter
- RDBMS databaser och verktyg är jämförelsevis mogna
- Den erbjuder inga traditionella databasfunktioner, som konsekvens när flera transaktioner utförs samtidigt.
- När datavolymen ökar är det svårt att upprätthålla unika värden eftersom nycklar blir svåra
- Fungerar inte lika bra med relationsdata
- Inlärningskurvan är stel för nya utvecklare
- Alternativ med öppen källkod så inte så populärt för företag.
Sammanfattning
- NoSQL är ett icke-relationellt DMS, som inte kräver ett fast schema, undviker joins och är lätt att skala
- Konceptet med NoSQL-databaser blev populärt bland internetjättar som Google, Facebook, Amazon, etc. som hanterar enorma mängder data
- År 1998 använde Carlo Strozzi termen NoSQL för sin lätta relationsdatabas med öppen källkod
- NoSQL-databaser följer aldrig den relationella modellen, den är antingen schemafri eller har avslappnade scheman
- Fyra typer av NoSQL-databas är 1). Nyckel-värde parbaserad 2). Kolumnorienterad graf 3). Grafer baserade 4). Dokumentorienterad
- NOSQL kan hantera strukturerad, semistrukturerad och ostrukturerad data med samma effekt
- CAP-satsen består av tre ord Konsistens, Tillgänglighet och Partitionstolerans
- BASE står för Basiskt Atillgänglig, Ssäger ofta, Eeventuell konsistens
- Termen "eventuell konsistens" betyder att ha kopior av data på flera maskiner för att få hög tillgänglighet och skalbarhet
- NoSQL erbjuder begränsade frågemöjligheter