NoSQL
Inom datoranvändning är NoSQL (ibland kallad " inte bara SQL ") en bred klass av databashanteringssystem som skiljer sig från den klassiska RDBMS -modellen ( Relational Database Management System ) på viktiga sätt, de mest noterade att de inte använder SQL som sin primära frågespråk . Lagrade data kräver inte fasta strukturer som tabeller , stöder vanligtvis inte JOIN- operationer , garanterar inte fullt ut ACID (atomicitet, konsistens, isolering och hållbarhet) och skalas vanligtvis bra.horisontellt . NoSQL-system kallas ibland "inte bara SQL" för att understryka att de även kan stödja SQL-liknande frågespråk.
Akademiska forskare refererar i allmänhet till denna typ av databas som strukturerad lagring , en term som även omfattar klassiska relationsdatabaser. NoSQL-databaser klassificeras ofta baserat på hur de lagrar data och inkluderar kategorier som nyckel-värde , BigTable- implementationer , dokumentdatabaser och graforienterade databaser .
NoSQL-databassystem växte med de stora sociala nätverken, som Google, Amazon, Twitter och Facebook. De fick möta utmaningar med databehandling som traditionell SGBDR inte löste { se artikel }. Med framväxten av realtidswebben fanns det ett behov av att tillhandahålla information bearbetad från stora datamängder som hade mer eller mindre liknande horisontella strukturer. Dessa företag insåg att prestanda och dess egenskaper i realtid var viktigare än konsistens, där traditionella relationsdatabaser tillbringade mycket bearbetningstid [ citat behövs ] .
I den meningen är NoSQL-databaser ofta mycket optimerade för hämtnings- och tilläggsoperationer, och erbjuder vanligtvis inte mycket mer än funktionen för att lagra poster (t.ex. nyckel-värdelagring ). Förlusten av flexibilitet under körning, jämfört med klassiska SQL-system, kompenseras av betydande vinster i skalbarhet och prestanda när man hanterar vissa datamodeller. [ citat behövs ]
Termens historia
Carlo Strozzi använde termen NoSQL 1998 för att referera till sin databas. Det var en lättviktig, öppen källkodsdatabas som inte erbjöd ett SQL-gränssnitt, men som följde den relationella modellen [ 1 ] (Strozzi föreslår att eftersom den nuvarande NoSQL-rörelsen "helt bryter sig bort från relationsmodellen, därför att ha varit kallas 'NoREL' eller något.") [ 2 ]
Eric Evans, en Rackspace- anställd , återinförde termen NoSQL när Last.fms Johan Oskarsson ville vara värd för ett event för att diskutera distribuerade databaser med öppen källkod. Namnet försökte samla in det växande antalet icke-relationella och distribuerade databaser som inte garanterade ACID , ett nyckelattribut i den klassiska SGBDR.
Arkitektur
Moderna relationsdatabaser har vanligtvis visat dålig effektivitet i vissa dataintensiva applikationer, inklusive indexering av ett stort antal dokument, rendering av sidor på webbplatser som har hög trafik och strömmande mediasajter. Typiska RGBDR-implementationer har ställts in antingen för ett litet men frekvent antal läsningar och skrivningar eller för en stor uppsättning transaktioner som har få skrivåtkomster. Å andra sidan kan NoSQL tjäna stora mängder läs- och skrivbelastning.
NoSQL-implementeringar som används i den verkliga världen inkluderar Diggs 3TB gröna bokmärken (avsedda att markera berättelser som röstats upp av andra på det sociala nätverket, även om det varade mindre än 3 månader och övergavs); 6 TB från Europeiska kommissionens "ENSEMBLE"-databas som används i luftkvalitets- och jämförelsemodeller, och 50 TB Facebook-sökning i inkorg.
NoSQL-arkitekturer ger ofta få konsistensgarantier, såsom transaktions- eller händelsekonsistens begränsad till enstaka dataobjekt. Vissa system ger dock alla garantier för ACID-system i vissa fall genom att lägga till ett mellanlager (som AppScale eller CloudTPS). Det finns två system som har implementerats som ger ögonblicksbildsisolering för kolumnlagring: Googles Percolator-system (baserat på BigTable-systemet) och transaktionssystemet Hbase utvecklat av University of Waterloo. Dessa oberoende utvecklade system använder liknande koncept för att uppnå flerrads distribuerade ACID-transaktioner med ögonblicksbildsisoleringsgarantier för det underliggande lagringssystemet i den raden, utan extra datahanteringskostnader, distribution av mellanvarusystem eller underhåll som introduceras av mellanvaruskiktet.
En hel del NoSQL-system använder en distribuerad arkitektur som håller data redundant på flera servrar, ofta med hjälp av en distribuerad hashtabell. På detta sätt kan systemet verkligen skala genom att lägga till fler servrar, och fel på en server kan tolereras.
Vissa NoSQL-förespråkare främjar enkla gränssnitt som associativa arrayer eller nyckel-värdepar. Andra system, såsom inbyggda XML-databaser, främjar stöd för Xquery-standarden. Nyare system som CloudTPS stöder också frågebindning.
Fördelar
- Dessa system svarar mot de horisontella skalbarhetsbehoven hos fler och fler företag. [ 3 ]
- De kan hantera enorma mängder data.
- De skapar inga flaskhalsar.
- Enkel skalning.
- Olika NoSQL DB:er för olika projekt.
- De körs på kluster av billiga maskiner.
Nackdelar
- NoSQL-databaser, som är öppen källkod, har ett annat stöd än det stöd som erbjuds av kommersiella företag för sina produkter. Detta kan ha vissa fördelar och även vissa nackdelar.
- Vissa produkter kanske inte är tillräckligt mogna för vissa företag.- Trots deras implementeringar i vissa stora företag står NoSQL-databaser fortfarande inför ett stort trovärdighetsproblem hos många företag. Kritiker pekar på NoSQL:s brist på mognad och potentiella instabilitetsproblem, samtidigt som de citerar mognad, funktionalitet och stabilitet hos RDBMS. Men inom systemutveckling kan den genom att ha källkoden tillgänglig justeras och anpassas till varje företags specifika behov.
- Business Intelligence Begränsningar.- Det finns en eller två frågor om BI-kapaciteten i NoSQL-databaser. Kan dessa databaser tillhandahålla den typ av rigorös datautvinning som företag använder med RDBMS? Hur mycket programmeringskunskap behövs för att göra ad hoc-frågor och analyser? Svaren är inte direkt positiva. NoSQL-databaser har inte många krokar för allmän BI-verktygsanvändning, medan den enklaste ad-hoc-frågan och analysen kräver ganska goda programmeringskunskaper. Det finns dock lösningar. Quest Software har till exempel skapat Toad for Cloud Databases, som ger ad-hoc-frågefunktioner för vissa NoSQL-databaser.
- Brist på erfarenhet.- Det nya med NoSQL gör att det inte finns ett stort antal utvecklare och administratörer som kan tekniken - vilket gör det svårt för företag att hitta personer med lämplig teknisk kunskap. Tvärtom, SGBDR-världen har tusentals högt kvalificerade människor.
- Kompatibilitetsproblem.- Till skillnad från relationsdatabaser, som delar vissa standarder, har NoSQL-databaser få standarder gemensamma. Varje NoSQL-databas har sitt eget API, frågegränssnitten är unika och har egenheter. Denna brist på standarder gör att det är omöjligt att bara byta från en leverantör till en annan, om du inte är nöjd med tjänsten.
System
DBMS NoSQL jämförelsetabell
| namn | Beskrivning |
|---|---|
| Cassandra | Databas skapad av Apache av typen nyckel-värde. Den har sitt eget språk för att utföra CQL-frågor (Cassandra Query Language). Cassandra är en Java -applikation så den kan köras på vilken plattform som helst som har JVM . Det är plattformsoberoende . |
| Redis | Databas skapad av Salvatore Sanfilippo och Pieter Noordhuis och stöds av VMWare . Detta är en nyckel-värde databas. Det kan föreställas som en gigantisk array i minnet för att lagra data, data som kan vara strängar, hash, datauppsättningar eller listor. Den har fördelen att dess verksamhet är atomär och ihållande. Redis stöder dock inte frågor, bara infoga och hämta data, förutom de vanliga operationerna på uppsättningar (differens, union och infoga). Skapat i ANSI C , därför är det kompatibelt och fungerar utan problem på Unix , Linux och dess derivat, Solaris , OS/X -system , men det finns inget officiellt stöd för Windows -plattformar . |
| MongoDB | Databas skapad av MongoDB Inc. (tidigare 10gen) av dokumentorienterad typ, med ett fritt schema, det vill säga varje post kan ha ett annat dataschema som inte har något att göra med resten av de lagrade posterna. Det är ganska snabbt när det kommer till att utföra sina operationer eftersom det hanterar binär data. På kort tid har MongoDB blivit en av favoritdatabaserna för NoSQL för utvecklare. Det är skrivet på C++- språket . För informationslagring använder den sitt eget dokumentsystem känt som BSON , som är en utveckling av JSON -formatet men med den egenheten att den kan lagra data representerad i binär form. Det är tillgängligt för operativsystemen Windows , Linux , OS/X och Solaris . |
| CouchDB | System skapat av Apache och skrivet på Erlang -språket som fungerar på de flesta POSIX-system (plattformsoberoende), inklusive GNU/Linux och [[macOS|OS/X], såväl som Windows -system . De viktigaste funktionerna inkluderar användningen av RESTful HTTP API som gränssnitt och JavaScript som det huvudsakliga interaktionsspråket. JSON- filer används för datalagring . Det tillåter skapandet av vyer, som är mekanismen som tillåter kombinationen av dokument att returnera värden från flera dokument, det vill säga CouchDB tillåter utförandet av de typiska SQL JOIN-operationerna . |
Dokumentära databaser
- CouchDB , från Apache CouchD
- MongoDB , från MongoDB Inc.
- RavenDB , från Hibernating Rhinos
- BaseX
- djondb
- existera
- SimpleDB från Amazon
- IBM Lotus Domino
- terrass
Databaser i diagram
- neo4j
- DEX/Sparksee
- AllegroGraph
- OrientDB
- InfiniteGraph
- Låter GraphDB
- InfoGri
- HyperGraphDB
Nyckel-/värdedatabaser
- Cassandra , från Apache
- BigTable , från Google
- Amazons Dynamo
- Project Voldemort, från LinkedIn
- Riak
- Redis
- Oracle NoSQL
Flervärdiga databaser
- Rocket D3 DBMS
- Rocket mvBase DBMS
- Rocket U2 Universe
- Rocket U2 United
- OpenQM
- InterSystems cache
- verklighet
- jbase
- OpenInsight
- Utdragbar lagringsmotor
Objektorienterade databaser
- ObjektDB
- Zope Object Database
- ZooDB
- db4o
- Ädelsten S
- Objektivitet/DB
- realm.io
Tabellformade databaser
Arraydatabaser
- SciDB, från Paradigm4
Referenser
- ^ Lith, Adam; Mattson, Jacob (2010). "Undersöka lagringslösningar för stora data: En jämförelse av välpresterande och skalbara datalagringslösningar för realtidsextraktion och batchinsättning av data" (PDF) . Göteborg: Institutionen för datavetenskap och teknik, Chalmers tekniska högskola. sid. 15 . Hämtad 12 maj 2011 . «Carlo Strozzi använde termen NoSQL först 1998 som ett namn för sin relationsdatabas med öppen källkod som inte erbjöd ett SQL-gränssnitt[...] ».
- ↑ "NoSQL Relational Database Management System: Hemsida" . Strozzi.it. 2 oktober 2007 . Hämtad 29 mars 2010 .
- ↑ Twitter planerar migrering från MySQL till Cassandra DB Arkiverad 2010-03-05 på Wayback Machine i bardot
Externa länkar
- Blogg NoSQL.es
- NoSQL, bortom relationsmodellen i barra punto
- nosql-diskussion Google Group.
- nosql-databases.org "Din ultimata guide till det icke-relationella universum!"
- Eric Lay. (2009, 1 juli). Inte till SQL? Anti-databasrörelse vinner kraft
- Utmaningen med NoSQL-databaser
- Typer av NoSQL-databashanteringssystem