Lyhenne NoSQL syntyi vuonna 1998. Monet ihmiset ajattelevat, että NoSQL on halventava termi, joka on tehty SQL:n näkemiseen. Todellisuudessa termi ei tarkoita vain SQL:ää. Ajatuksena on, että molemmat tekniikat voivat esiintyä rinnakkain ja jokaisella on oma paikkansa. NoSQL-liike on ollut uutisissa viime vuosina, koska monet Web 2.0:n johtajat ovat ottaneet käyttöön NoSQL-tekniikan. Yritykset, kuten Facebook, Twitter, Digg, Amazon, LinkedIn ja Google, käyttävät NoSQL:ää tavalla tai toisella. Puretaan NoSQL, jotta voit selittää sen tietohallintojohtajallesi tai jopa kollegoillesi.
NoSQL syntyi tarpeesta
Tietovarasto: Maailman tallennetut digitaaliset tiedot mitataan eksatavuina. Eksatavu vastaa yhtä miljardia gigatavua (GB) dataa. Internet.comin mukaan vuonna 2006 lisätyn tallennetun tiedon määrä oli 161 eksatavua. Vain 4 vuotta myöhemmin, vuonna 2010, tallennetun datan määrä on lähes 1 000 ExaByteä, mikä on yli 500 % lisäystä. Toisin sanoen maailmassa on tallennettu paljon dataa ja se vain kasvaa.
Yhdistetyt tiedot: Data yhdistetään yhä enemmän. Webin luomista edistävät hyperlinkit, blogeissa on pingbackeja, ja jokaisessa suuressa sosiaalisen verkostoitumisen järjestelmässä on tunnisteet, jotka yhdistävät asiat yhteen. Suuret järjestelmät on rakennettu kytkettäväksi toisiinsa.
Monimutkainen tietorakenne: NoSQL pystyy helposti käsittelemään hierarkkisia sisäkkäisiä tietorakenteita. Saman saavuttamiseksi SQL:ssä tarvitset useita relaatiotaulukoita kaikenlaisilla avaimilla. Lisäksi suorituskyvyn ja tietojen monimutkaisuuden välillä on suhde. Suorituskyky voi heikentyä perinteisessä RDBMS:ssä, koska tallennamme valtavat määrät dataa, joita tarvitaan sosiaalisissa verkostoissa ja semanttisissa verkkosovelluksissa.
Mikä on NoSQL?
Mielestäni yksi tapa määritellä NoSQL on ottaa huomioon, mitä se ei ole. Se ei ole SQL eikä relaatio. Kuten nimestä voi päätellä, se ei korvaa RDBMS:ää, vaan täydentää sitä. NoSQL on suunniteltu hajautettuun tiedontallennustilaan erittäin suuria tietotarpeita varten. Ajattele Facebookia 500 000 000 käyttäjän kanssa tai Twitteriä, joka kerää terabittiä dataa päivittäin. NoSQL-tietokannassa ei ole kiinteää skeemaa eikä liitoksia. RDBMS «skaalautuu» saamalla nopeamman laitteiston ja lisäämällä muistia. NoSQL puolestaan voi hyödyntää «skaalausta». Skaalaus tarkoittaa kuorman hajauttamista moniin tavarajärjestelmiin. Tämä on NoSQL:n osa, joka tekee siitä edullisen ratkaisun suurille tietojoukoille.
NoSQL-luokat
Nykyinen NoSQL-maailma sopii 4 peruskategoriaan.
- avainarvokaupat Ne perustuvat ensisijaisesti Amazonin Dynamo Paperiin, joka kirjoitettiin vuonna 2007. Pääideana on hajautustaulukon olemassaolo, jossa on ainutlaatuinen avain ja viittaus tiettyyn tietoyksikköön. Näihin kartoituksiin liittyy yleensä välimuistimekanismeja suorituskyvyn maksimoimiseksi.
- Column Perhekaupat on luotu tallentamaan ja käsittelemään erittäin suuria tietomääriä useille koneille. Avaimia on edelleen, mutta ne viittaavat useisiin sarakkeisiin. BigTablen (Googlen sarakeperheen NoSQL-malli) tapauksessa rivit tunnistetaan riviavaimella, tiedot lajitellaan ja tallennetaan tällä avaimella. Sarakkeet on järjestetty sarakeperheen mukaan.
- Asiakirjatietokannat Ne ovat saaneet inspiraationsa Lotus Notesista ja ovat samanlaisia kuin avainarvokaupat. Malli koostuu pohjimmiltaan versioiduista asiakirjoista, jotka ovat muiden avainarvokokoelmien kokoelmia. Puolistrukturoidut asiakirjat tallennetaan muodoissa, kuten JSON.
- Kaavion tietokantas on rakennettu solmuista, nuottien välisistä suhteista ja solmujen ominaisuuksista. Rivi- ja saraketaulukkojen ja SQL:n jäykän rakenteen sijaan se käyttää joustavaa graafimallia, joka voidaan skaalata useille koneille.
Tärkeimmät NoSQL-pelaajat
NoSQL:n päätoimijat ovat nousseet pääosin ne käyttöön ottaneiden organisaatioiden ansiosta. Jotkut suurimmista NoSQL-tekniikoista ovat:
- Dynamo: Dynamon loi Amazon.com ja se on näkyvin Key-Value NoSQL-tietokanta. Amazon tarvitsi erittäin skaalautuvan hajautetun alustan verkkokauppayrityksilleen, joten he kehittivät Dynamon. Amazon S3 käyttää Dynamoa tallennusmekanismina.
- Cassandra: Facebookin avoimen lähdekoodin tarjoama Cassandra on sarakesuuntautunut NoSQL-tietokanta.
- Iso pöytä: BigTable on Googlen oma sarakepohjainen tietokanta. Google sallii BigTablen käytön, mutta vain Google App Enginelle.
- SimpleDB: SimpleDB on toinen Amazon-tietokanta. Sitä käytetään Amazon EC2:ssa ja S3:ssa, ja se on osa Amazon Web Services -palvelua, joka veloittaa käytön mukaan.
- PankkiDB: CouchDB ja MongoDB ovat avoimen lähdekoodin dokumenttipohjaisia NoSQL-tietokantoja.
- Neo4J: Neo4j on avoimen lähdekoodin graafitietokanta.
Kysely NoSQL
Useimmat kehittäjät ovat kiinnostuneita siitä, kuinka tehdä kyselyitä NoSQL-tietokannasta. Valtavaan tietokantaan tallennetusta tiedosta ei ole ketään hyötyä, jos sitä ei voi hakea ja näyttää loppukäyttäjille tai verkkopalveluille. NoSQL-tietokannat eivät tarjoa korkean tason deklaratiivista kyselykieltä, kuten SQL. Sen sijaan kyseisten tietokantojen tekeminen on mallikohtaista. Monet NoSQL-alustoista sallivat REST-rajapinnat tietoihin. Muut tarjouskyselyn sovellusliittymät. On kehitetty useita kyselytyökaluja, jotka yrittävät tehdä kyselyitä useista NoSQL-tietokannoista. Nämä työkalut toimivat yleensä yhdessä NoSQL-kategoriassa. Esimerkki tästä on SPARQL. SPARQL on deklaratiivinen hakumääritys, joka on suunniteltu graafisille tietokantoille. Tässä on esimerkki SPARQL-kyselystä, joka hakee tietyn bloggaajan URL-osoitteen (IBM:n luvalla):
PREFIX-tossu:
SELECT ?url
FROM
MISSÄ {
?avustaja foaf:name «Jon Foobar» .
?contributor foaf:weblog ?url .
†
type=»code»>
NoSQL:n tulevaisuus
Organisaatiot, joilla on suuria tiedontallennustarpeita, katsovat vakavasti NoSQL:ää. Ilmeisesti konsepti ei saa paljon vetoa pienemmissä organisaatioissa. Information Weekin tutkimuksessa kävi ilmi, että 44 % yritysten IT-ammattilaisista ei ole koskaan kuullut NoSQL:stä. Lisäksi vain 1 % vastaajista ilmoitti, että NoSQL on osa heidän strategista suuntaansa. Ilmeisesti NoSQL:llä on paikkansa yhdistettynä maailmassamme, mutta sen on jatkettava kehitystä saavuttaakseen massavetovoiman, jonka monet uskovat sillä voivan olla.