NoSQL

Fra Wikipedia, den frie encyklopedi

NoSQL betydde opprinnelig «ikke-SQL» eller «ikke-relasjonell»,[1] 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[2] sammen med Web 2.0.[3] NoSQL-databaser har blitt brukt i stordata- og sanntidssystemer.[4]

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.[5][6]

Fordeler[rediger | rediger kilde]

Motivasjoner for NoSQL kan være enkelt design, enklere "horisontal" skalering av regneklynger (en utfordring med relasjonsdatabaser),[7] bedre styring av tilgjengelighet, og begrensning av impedans ved objekt-relasjonell mismatch.[8] 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.[9]

Ulemper[rediger | rediger kilde]

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.[10]

ACID[rediger | rediger kilde]

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".[11]

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

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.[14] 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.[15] Begrensninger i grensesnitt overvinnes ved hjelp av semantiske virtualiseringsprotokoller, slik at NoSQL-tjenester er tilgjengelige for de fleste operativsystemer.

Typer[rediger | rediger kilde]

Se også[rediger | rediger kilde]

Referanser[rediger | rediger kilde]

  1. ^ http://nosql-database.org/ 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) http://openproceedings.eu/2013/conf/edbt/Mohan13.pdf. 
  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.