NoSQL (englannin sanoistaNot only SQL) on käsite, jolla kuvataan perinteisestärelaatiomallista poikkeaviatietokantoja. Nämä tietokannat eivät seuraa mitään kiinteästi määrättyä taulukkoskeemaa, minkä ansiosta ne skaalautuvat hyvin horisontaalisesti.[1]
NoSQL-tietokannaksi kutsuttiin aluksiCarlo Strozzin vuonna 1998 esittämää järjestelmää, jossa ei käytettySQL-kyselykieltä.[2] Termi yleistyi vuonna 2009Johan Oskarssonin järjestämässä tapaamisessa, jossa keskusteltiin ei-relaatiomallin mukaisista ohjelmistoista kuten Cassandra ja Voldemort.[2]
Tarkoituksena oli löytää yhteinen nimitys kasvavalle määrälle tietokantajärjestelmiä, jotka poikkeavatACID-periaatteista. Tunnettuja NoSQL-toteutuksia ovat muun muassaGoogle BigTable jaAmazon Dynamo.[3]
Avain-arvo -tietokantajärjestelmiä ovat muun muassaRedis,Memcached jaRiak.[2]Sarakkeisia tietokantajärjestelmiä ovat muun muassaApache Cassandra,Apache HBase jaClickHouse.[2]Dokumentti-orientoituneita tietokantajärjestelmiä ovat muun muassaMongoDB,Couchbase jaApache CouchDB.[2]Graafitietokantajärjestelmiä ovat muun muassaNeo4j,ArangoDB jaOrientDB.[2]
Relaatiotietokannat soveltuvat huonostilähde? suurtendokumenttimäärien käsittelyyn japilvilaskennan käyttöön. Parhaimmillaan ne ovat, kun käsitellään pieniä transaktioita tai suoritetaan harvoin tapahtuvia suuria eräajoja. Ne eivät kuitenkaan ole kovin tehokkaita, jos tietokantaan tarvitsee tehdä paljon muutoksia tihein väliajoin. NoSQL taas pystyy suoriutumaan hyvinkin suuresta samanaikaisesta määrästä luku- ja kirjoitusoperaatioita.[1]
Tekniikan heikkoihin puoliin kuuluu, että NoSQL-arkkitehtuurit eivät välttämättä takaa datan eheyttä eri palvelimilla. Ne kuitenkin pyrkivät siihen, että tiedot päivitetään lopulta, vaikka se ei tapahtuisikaan välittömästi. Useat NoSQL-toteutukset tukevat tietokantojenhajauttamista, jossa tiedot ovattoisteisesti useilla palvelimilla ja ne on mahdollista löytää esimerkiksihajautetun tiivisteen avulla. Tällä tavoin järjestelmiä on helppo skaalata, ja ne toimivat, vaikka verkkoyhteydet sen joidenkin solmujen välillä katkeaisivatkin.[4][5][1]