NoSQL

NoSQL (från engelska  inte bara SQL  - inte bara SQL ) är en beteckning för en bred klass av heterogena databashanteringssystem som dök upp i slutet av 2000-talet - början av 2010-talet och skiljer sig avsevärt från traditionella relationella DBMS med dataåtkomst med hjälp av SQL- språket . Gäller system som försöker lösa problem med skalbarhet och tillgänglighet på grund av att kraven på atomicitet och datakonsistens helt eller delvis förkastas [1] .

Ursprung

Historik för namnet

Ursprungligen var ordet NoSQL en akronym för två engelska ord: No ("Not") och SQL (förkortning för English  Structured Query Language  - "structured query language"), vilket ger termen betydelsen av "förneka SQL". . Det är möjligt att den första som började använda denna term ville säga "Ingen RDBMS" ("inte en relationell DBMS ") eller "ingen relationell" ("inte relationell"), men NoSQL lät bättre och slog så småningom rot (som en alternativt föreslogs det också NonRel). Senare myntades NoSQL som förklaringen "Not Only SQL" ("inte bara SQL"). NoSQL har blivit en allmän term för olika databaser och lagringar, men den syftar inte på någon speciell teknologi eller produkt [2] .

Idéutveckling

I sig är idén om icke-relationella databaser inte ny, och användningen av icke-relationell lagring går tillbaka till de första datorernas dagar. Icke-relationella databaser blomstrade under stordatorns dagar , och senare, under dagarna av dominansen av relations-DBMS, användes i specialiserade butiker, såsom hierarkiska katalogtjänster . Framväxten av en ny generation av icke-relationella DBMS berodde på behovet av att skapa parallellt distribuerade system för mycket skalbara Internetapplikationer såsom sökmotorer [2] .

I början av 2000-talet byggde Google sin mycket skalbara sökmotor och applikationer: GMail , Google Maps , Google Earth , etc., och löste problemen med skalbarhet och parallell bearbetning av stora datamängder. Resultatet blev ett distribuerat filsystem och ett distribuerat koordinationssystem, en kolumnfamiljebutik , en  runtime -miljö baserad på MapReduce- algoritmen . Googles publicering av beskrivningar av dessa tekniker ledde till ett ökat intresse bland utvecklare med öppen källkod , vilket resulterade i skapandet av Hadoop och lanseringen av relaterade projekt utformade för att skapa Google-liknande teknologier. Ett år senare, 2007, följde Amazon.com Googles ledning genom att publicera artiklar om den mycket tillgängliga databasen Amazon DynamoDB [3] .

Stödet från branschjättar på mindre än fem år har lett till den utbredda användningen av NoSQL (och liknande) teknologier för att hantera "big data", och andra företag, stora som små, har anslutit sig till saken, såsom: IBM , Facebook , Netflix , eBay , Hulu , Yahoo! , med sina egna och öppen källkodslösningar [3] .

Huvuddrag

Traditionella DBMS styrs av ACID- krav för ett transaktionssystem: atomicitet ( atomicitet ), konsistens ( engelsk  konsistens ), isolering ( engelsk isolering ), hållbarhet ( engelsk hållbarhet ), medan i NoSQL, istället för ACID, kan en uppsättning BASE-egenskaper vara anses [1] :    

Termen "BASE" föreslogs av Eric Brewer, författare till CAP-satsen , enligt vilken endast två av de tre egenskaperna kan säkerställas vid distribuerad beräkning: datakonsistens, tillgänglighet eller partitionstolerans [1] .

Naturligtvis kan BASE-baserade system inte användas i alla applikationer: för att börs- och banksystem ska fungera är användningen av transaktioner en nödvändighet. Samtidigt är ACID-funktioner, önskvärda som de är, nästan omöjliga att uppnå i system med flera miljoner webbpublik som amazon.com [1] . Således offrar NoSQL-systemdesigners datakonsistens för att uppnå de andra två egenskaperna hos CAP-teoremet [4] . Vissa DBMS, som Riak , låter dig ställa in de nödvändiga tillgänglighetskonsistensegenskaperna även för individuella förfrågningar genom att ange antalet noder som krävs för att bekräfta framgången för en transaktion. [5]

NoSQL-lösningar skiljer sig inte bara genom design för skalning. Andra framträdande egenskaper hos NoSQL-lösningar är [6] [7] :

Systemtyper

Beskrivningen av dataschemat vid användning av NoSQL-lösningar kan utföras med hjälp av olika datastrukturer: hashtabeller , träd och andra.

Beroende på datamodellen och tillvägagångssätten för distribution och replikering finns det fyra huvudtyper av system i NoSQL-rörelsen: "nyckelvärde" ( engelsk  nyckelvärdelager ), "familj av kolumner" ( kolumnfamiljsarkiv ), dokument -orienterad ( dokumentlager ), graf.

Nyckel - värde

Nyckel -värde- modellen är det enklaste alternativet, att använda en nyckel för att komma åt ett värde. Sådana system används för bildlagring, specialiserade filsystem, objektcacher och system utformade för skalbarhet . Exempel på sådana lagringar är Berkeley DB , MemcacheDB , Redis , Riak , Amazon DynamoDB [6] .

Kolumnfamilj

En annan typ av system är "familjen av kolumner", stamfadern till denna typ är Google BigTable- systemet . I sådana system lagras data som en gles matris vars rader och kolumner används som nycklar. En typisk applikation för denna typ av DBMS är webbindexering , såväl som big data - uppgifter, med minskade konsistenskrav . Exempel på denna typ av DBMS är: Apache HBase , Apache Cassandra , ScyllaDB , Apache Accumulo , Hypertable [6] [8] .

Kolumnfamiljsystem och dokumentorienterade system har liknande användningsfall: innehållshanteringssystem, bloggar, händelseloggning. Användningen av tidsstämplar gör det möjligt att använda denna typ av system för att organisera räknare, samt registrera och bearbeta olika tidsrelaterade data [8] .

Till skillnad från kolumnlagring som används i vissa relationella DBMS , som lagrar data efter kolumner i en komprimerad form för effektivitet i OLAP- scenarier, lagrar "kolumnfamiljen"-modellen data rad för rad och ger hög prestanda främst i driftsscenarier , medan för frågor som kräver genomsökning av en stor mängd data med aggregering av resultat är som regel ineffektiva [8] [9] .

Dokumentorienterad DBMS

Dokumentorienterade DBMS används för att lagra hierarkiska datastrukturer. De hittar sin tillämpning i innehållshanteringssystem , publicering, dokumentärsökning . Exempel på denna typ av DBMS är CouchDB , Couchbase , MongoDB , eXist , Berkeley DB XML [6] .

Graf DBMS

Graph DBMS används för uppgifter där data har ett stort antal länkar, till exempel sociala nätverk , bedrägeriupptäckt. Exempel: Neo4j , OrientDB , AllegroGraph , Blazegraph [10] , InfiniteGraph , FlockDB , Titan [6] [8] .

Eftersom kanterna på grafen materialiseras , det  vill säga de lagras, kräver genomgång av graf inte ytterligare beräkningar (som en join i SQL ), men index krävs för att hitta korsningens initiala hörn. Graph DBMS stöder i allmänhet ACID och stöder även specialiserade frågespråk som Gremlin , Cypher , SPARQL , GraphQL .

UnQL

I juli 2011 tillkännagav Couchbase, utvecklaren av CouchDB , Memcached och Membase , skapandet av ett nytt SQL - liknande frågespråk  - UnQL (Unstructured Data Query Language). Skapandet av det nya språket gjordes av SQLite-skaparen Richard Hipp och CouchDB- projektets grundare Damien Katz . Utvecklingen har överförts till gemenskapen som ett offentligt område [11] [12] [13] . Förra gången UnQL uppdaterades i augusti 2011 [14] fick projektet faktiskt inget stöd.   

Anteckningar

  1. 1 2 3 4 Vaish, 2013 , Vad NoSQL är och vad det inte är.
  2. 1 2 Tiwari, 2011 , Kapitel 1: NoSQL: Vad det är och varför du behöver det > Definition och introduktion.
  3. 12 Tiwari , 2011 , s. 4-6.
  4. Brewer, Eric A. A Certain Freedom: Thoughts on the CAP Theorem  //  Proceduring of the IXXX ACM SIGACT-SIGOPS symposium on Principles of distributed computing. — N. Y .: ACM , 2010 . — Iss. 29 , nr. 1 . - s. 335-336 . - ISBN 978-1-60558-888-9 . - doi : 10.1145/1835698.1835701 .
  5. Zachary Kessin. Bygga webbapplikationer med Erlang . - O'Reilly Media, Inc., 2012. - S.  13 . — 156 sid. - ISBN 978-1-4493-0996-1 .
  6. 1 2 3 4 5 6 7 8 McCreary, Kelly, 2013 , 1.1. Vad är NoSQL?
  7. 1 2 Vaish, 2013 , Varför NoSQL?.
  8. 1 2 3 4 Curé, Blin, 2014 .
  9. McCreary, Kelly, 2013 , 4.3. Kolumn familj (Bigtable) butiker.
  10. Blazegraph (tidigare Bigdata) Arkiverad 13 juni 2015 på Wayback Machine , w3c
  11. UnQL Query Language presenterat av Couchbase och SQLite . Hämtad 7 augusti 2011. Arkiverad från originalet 25 september 2011.
  12. Välkommen till UnQL-specifikationens hem . Hämtad 7 augusti 2011. Arkiverad från originalet 25 september 2011.
  13. Skaparna av CouchDB och SQLite introducerade UnQL, en SQL-analog för NoSQL-system Arkiverad 14 september 2011 på Wayback Machine , nyheter på OpenNet
  14. UnQL: Tidslinje . unql.sqlite.org . Hämtad 18 oktober 2021. Arkiverad från originalet 18 oktober 2021.

Litteratur

Länkar