**NoSQL** betydde opprinnelig «**ikke-SQL**» eller «**ikke-relasjonell**», og viser til en database med mekanismer for lagring og henting av data som er modellert på andre måter enn tabell (eller «tabular») -relasjonene som brukes i relasjonsdatabaser. Slike databaser har eksistert siden slutten av 1960-årene, men navnet NoSQL ble først brukt på begynnelsen av det 2000-tallet sammen med Web 2.0. NoSQL-databaser har blitt brukt i stordata- og sanntidssystemer.

Noen ganger brukes NoSQL-begrepet i betydningen «**ikke bare SQL**» for å omfatte *både* relasjonelle og ikke-relasjonelle databaser. I slike systemer kan man gjerne ha støtte for å bruke SQL som spørrespråk.

Fordeler
--------

Motivasjoner for NoSQL kan være enkelt design, enklere "horisontal" skalering av regneklynger (en utfordring med relasjonsdatabaser), bedre styring av tilgjengelighet, og begrensning av impedans ved objekt-relasjonell mismatch. Datastrukturer i NoSQL-databaser (for eksempel nøkkelverdipar-database, bredt kolonnelager, grafdatabase, eller dokumentorienert database) er forskjellige fra de som brukes som standard i relasjonsdatabaser, hvilket gjør enkelte operasjoner raskere i NoSQL. Hvorvidt en NoSQL-database er egnet avhenger av problemet som skal løses. Noen ganger blir datastrukturene som brukes av NoSQL-databaser også sett på som "mer fleksible" enn relasjonsdatabasetabeller.

Ulemper
-------

CAP-teoremet (*consistency*, *availability*, *partition tolerance*, på norsk: konsistens, tilgjengelighet, partisjoneringsstoleranse) sier at et distribuert datalager må avveie mellom konsistens, tilgjengelighet og partisjoneringstoleranse (bare to kan velges). Mange NoSQL-databaser kompromitterer konsistensen til fordel for tilgjengelighet, partisjonstoleranse og hastighet.

Barrierer for større adopsjon av NoSQL-databaser inkluderer bruk av spørrespråk på lavt nivå (i stedet for høynivåspråk som for eksempel SQL), manglende evne til å utføre *ad hoc*-skjøtinger (*joins*) på tvers av tabeller, mangel på standardiserte grensesnitt, og enorme tidligere investeringer i eksisterende relasjonsdatabaser.

### ACID

De fleste NoSQL-lagre mangler ekte støtte for ACID-transaksjoner (atomisk, konsistent, isolert, durabel), selv om noen få databaser har gjort dem til en sentral del av designet. I stedet tilbyr de fleste NoSQL-databaser konseptet endelig konsistens (*eventual consistency*) hvor databaseendringer forplantes til alle noder til slutt (vanligvis innen millisekunder), slik at spørringer etter data kanskje ikke returnerer oppdaterte data umiddelbart og kan føre til lesing av data som ikke er nøyaktige, et problem kjent som "foreldet lesing".

I tillegg kan noen NoSQL-systemer miste skrivinger eller ha andre former for datatap. Noen NoSQL-systemer gir konsepter som loggføring med fremskrivning for å unngå tap av data.

For distribuert transaksjonsbehandling på tvers av flere databaser er datakonsistens en enda større utfordring som er vanskelig for både NoSQL og relasjonsdatabaser. Relasjonsdatabaser tillater ikke å spenne begrensninger for referanseintegritet på tvers av databaser. Få systemer opprettholder både ACID-transaksjoner og X/Open XA-standarder for distribuert transaksjonsbehandling. Interaktive relasjonsdatabaser har teknikker for konformasjons-reléanalyser som et vanlig trekk. Begrensninger i grensesnitt overvinnes ved hjelp av semantiske virtualiseringsprotokoller, slik at NoSQL-tjenester er tilgjengelige for de fleste operativsystemer.

Typer
-----

* Bredt kolonnelager
* Dokumentorientert database
* Grafdatabase
* Nøkkelverdipar-database

Se også
-------

* C++
* Fasettert søk

Referanser
----------

1. ↑   Arkivert 26. desember 2018 hos Wayback Machine. "NoSQL DEFINITION: Next Generation Databases mostly addressing some of the points : being non-relational, distributed, open-source and horizontally scalable".
2. ↑   (PDF) .  Manglende eller tom `|tittel=` (hjelp)
3. ↑  «Amazon Goes Back to the Future With 'NoSQL' Database». WIRED. Besøkt 6. mars 2017.
4. ↑  «RDBMS dominate the database market, but NoSQL systems are catching up». DB-Engines.com. Besøkt 24. november 2013.
5. ↑  «NoSQL (Not Only SQL)».
6. ↑  Fowler, Martin. «NosqlDefinition».
7. ↑  Leavitt, Neal. «Will NoSQL Databases Live Up to Their Promise?» (PDF).
8. ↑  NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence. Addison-Wesley Educational Publishers Inc, 2009, ISBN 978-0321826626.
9. ↑  Vogels, Werner. «Amazon DynamoDB – a Fast and Scalable NoSQL Database Service Designed for Internet Scale Applications». All Things Distributed. Besøkt 6. mars 2017.
10. ↑  Grolinger, K. «Data management in cloud environments: NoSQL and NewSQL data stores» (PDF). Aira, Springer. Besøkt 8. januar 2014.
11. ↑  «Jepsen: MongoDB stale reads». Besøkt 6. mars 2017.
12. ↑  «Large volume data analysis on the Typesafe Reactive Platform». Besøkt 6. mars 2017.
13. ↑  Fowler, Adam. «10 NoSQL Misconceptions». Besøkt 6. mars 2017.
14. ↑  «No! to SQL and No! to NoSQL | So Many Oracle Manuals, So Little Time». Besøkt 6. mars 2017.
15. ↑  Fiore, S. *Grid and cloud database management*. Springer Science & Business Media. s. 210.

| * v
* d
* r
Databaser |
| --- |
| 
* Database
* Relasjonsdatabase
* Objektdatabase
* Objektrelasjonell database
* XML
* Databasehåndteringssystem (DBMS)
* Databasemotor
* Datavarehus
* Relasjonsalgebra
* Serialiserbarhet
* Historie
* Nøkler
* Normalisering
* Tabell
* SQL
* NoSQL
* XQuery
* ODBC
* JDBC
* Perl DBI

 |
| Tema innen SQL | 
* Select
* Insert
* Update
* Delete
* Join
* Union
* Create
* Drop
* Utløser
* Visning
* Lagret prosedyre

 |
| Implementasjoner | 
* Apache Derby
* Berkeley DB
* Clipper
* Firebird
* IBM DB2
* IBM Informix
* Ingres
* Microsoft SQL Server
* MySQL
* Oracle
* PostgreSQL
* SQLite
* Visual FoxPro

 |