**NoSQL** (inglise *not only SQL)* on mitterelatsiooniline alternatiiv klassikalistele relatsioonilistele andmebaasidele, mis põhinevad eelkõige SQLi baasil. Erinevalt relatsioonilistest andmebaasidest ei pea NoSQL-süsteemid vastama rangelt ette kirjutatud andmemudelile. Baasiks oleva andmemudeli puudumine tähendab, et oluliste äriloogiliste muudatuste tegemine andmebaasi tasemel on oluliselt vähem aega- ja rahanõudev võrreldes relatsiooniliste andmebaasidega. Teine oluline eelis relatsiooniliste ees tuleneb nende võimekusest käsitleda mistahes struktureerimata andmeid. Sellisteks andmeteks võivad olla näiteks kasutajate seansi teave, sõnumid, vestlused, logid, videod, pildid või seadmete andmed.

Ajalugu
-------

Kuigi mitterelatsiooniliste andmebaaside kontseptsioon pärineb 1960. aastate lõpust, ei leidnud see kuigi palju kasutust enne 21. sajandi algust. Üha suurenevate andmemahtudega toime tulemiseks tuli paljudel IT-tööstuse suurfirmadel 2000. aastate algul hakata vaatama mitterelatsiooniliste andmebaasi lahenduste poole. 2005. aastal tuli Google välja oma Bigtable-nimelise lahendusega.

Teemini NoSQL võttis esmakordselt kasutusele Carlo Strozzi aastal 1998, mil ta tuli välja avatud lähtekoodiga Strozzi NoSQL andmebaasiga, mis ei kasutanud SQL-i liidest, kuid oli siiski relatsiooniline. 2009. aastal võttis termini taas kasutusele Johan Oskarsson, et kirjeldada toona esile kerkima hakkavaid mitterelatsioonilisi ja distributiivseid andmebaase, mis ei järginud senini oluliseks peetud ACID (ingl *atomicity, consistency, isolation, durability*) printsiipe.

NoSQL-andmebaaside tüübid ja näited
-----------------------------------

NoSQL-i mõiste on lai – selle alla kuuluvad mitut tüüpi andmete haldussüsteemid, millest põhilisteks on võtme-väärtuse paari tüüpi, dokumendi tüüpi, graafi tüüpi ning lai-veerg tüüpi andmebaasid.

### Võti-väärtus paar

NoSQL-andmebaaside lihtsaim vorm on võtmete ja väärtuste paarid ehk sõnastik. Igale väärtusele vastab andmebaasis kindel unikaalne võti, mille abil saab selle kiiresti üles leida.

### Dokument

Levinuim NoSQL-andmebaaside vorming on dokument. Dokument sarnaneb ülesehituselt võtme-väärtuse paarile, kuid võimaldab hallata väärtustena keerulisemaid andmestruktuure, näiteks loendeid. Sellistes andmebaasides on võimalik hoida dokumente tekstivormingutes nagu näiteks JSON, XML või YAML, aga ka binaarvormingutes nagu PDF, BSON või DOCX.

### Graaf

Graafi tüüpi andmebaasid on loodud kujutamaks andmetevahelisi seoseid. Sellist tüüpi andmebaasid koosnevad sõlmedest ehk kirjetest ning nende omavahelisest seostest. Igal seosel peab olema suund ja nimi ning see peab määrama kahe sõlme vahelise suhte (näiteks linn ASUB riigis). Graafi tüüpi andmebaaside abil on võimalik kujutada näiteks inimeste suhtlusvõrgustikku, ühistranspordivõrgustikku või teedevõrgustikku.

### Lai-veerg

Lai-veerg tüüpi andmebaasid võimaldavad hallata suuri andmemahtusid. Kasutatakse tabeleid, ridu ja veerge, kuid erinevalt relatsioonilistest andmebaasidest võivad veergude nimed ja vormingud ridade kaupa ühes tabelis erineda.

Näited NoSQL-andmebaaside haldussüsteemidest| Tüüp | Näited |
| --- | --- |
| Võti-väärtus | Amazon Dynamo, Oracle NoSQL, Redis, Apache Ignite |
| Dokument | Apache CouchDB, Couchbase, MongoDB, Riak |
| Graaf | Neo4J, InifiniteGraph, Apache Giraph, OrientDB |
| Lai-veerg | Apache Cassandra, Google Bigtable, Apache HBase |

Vaata ka
--------

* Andmebaasi disain

Viited
------

1. ↑  mongoDB. "NoSQL Databases Explained". Vaadatud 01.12.2018.
2. ↑  mongoDB. "Unstructured Data in Big Data". Vaadatud 01.12.2018.
3. ↑  Neal Leavitt. "Will NoSQL Databases Live Up to Their Promise" (PDF). Vaadatud 21.11.2018.
4. ↑  Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach Mike Burrows, Tushar Chandra, Andrew Fikes, Robert E. Gruber. "Bigtable: A Distributed Storage System for Structured Data" (PDF). Vaadatud 01.12.2018.`{{netiviide}}`: CS1 hooldus: mitu nime: autorite loend (link)
5. ↑  Chapple, Mike. "The ACID Model". Vaadatud 21.11.2018.
6. ↑  mongoDB. "Types of NoSQL Databases". Vaadatud 01.12.2018.
7. ↑  Amazon. "What Is a Key-Value Database?". Vaadatud 01.12.2018.
8. ↑  Ciprian-Octavian Truica, Florin Radulescu, Alexandru Boicea, Ion Bucur. "Performance evaluation for CRUD operations in asynchronously replicated document oriented database" (PDF). Vaadatud 01.12.2018.`{{netiviide}}`: CS1 hooldus: mitu nime: autorite loend (link)
9. ↑  Neo4j. "What is a Graph Database?". Vaadatud 21.11.2018.
10. ↑  "Wide Column Stores". *DB-Engines*. Vaadatud 21.11.2018.
11. ↑  "LIST OF NOSQL DATABASES". Originaali arhiivikoopia seisuga 26.12.2018. Vaadatud 01.12.2018.