Akronim NoSQL je skovan 1998. Mnogi ljudi misle da je NoSQL pogrdni izraz stvoren da bi se bockao po SQL-u. U stvarnosti, termin znači ne samo SQL. Ideja je da obje tehnologije mogu koegzistirati i svaka ima svoje mjesto. NoSQL pokret je bio u vijestima u posljednjih nekoliko godina jer su mnogi od lidera Web 2.0 usvojili NoSQL tehnologiju. Kompanije kao što su Facebook, Twitter, Digg, Amazon, LinkedIn i Google koriste NoSQL na ovaj ili onaj način. Hajde da razložimo NoSQL tako da to možete objasniti svom CIO-u ili čak svojim kolegama.
NoSQL proizašao iz potrebe
Skladištenje podataka: Svjetski pohranjeni digitalni podaci mjere se u eksabajtima. Eksabajt je jednak milijardu gigabajta (GB) podataka. Prema Internet.com, količina pohranjenih podataka koja je dodana 2006. bila je 161 eksabajt. Samo 4 godine kasnije, 2010., količina pohranjenih podataka iznosit će skoro 1.000 ExaByte-a, što je povećanje od preko 500%. Drugim riječima, u svijetu se pohranjuje mnogo podataka i oni će samo nastaviti rasti.
Međusobno povezani podaci: Podaci nastavljaju da postaju sve povezaniji. Kreiranje weba podstaknuto hiperlinkovima, blogovi imaju pingbackove i svaki veliki sistem društvenih mreža ima oznake koje povezuju stvari. Glavni sistemi su izgrađeni da budu međusobno povezani.
Složena struktura podataka: NoSQL može lako rukovati hijerarhijskim ugniježđenim strukturama podataka. Da biste postigli istu stvar u SQL-u, trebat će vam više relacijskih tablica sa svim vrstama ključeva. Osim toga, postoji veza između performansi i složenosti podataka. Performanse se mogu pogoršati u tradicionalnom RDBMS-u jer pohranjujemo ogromne količine podataka potrebnih u aplikacijama društvenih mreža i semantičkom webu.
Šta je NoSQL?
Pretpostavljam da je jedan od načina da se definiše NoSQL da se razmotri šta on nije. To nije SQL i nije relacioni. Kao što ime sugerira, nije zamjena za RDBMS, već ga nadopunjuje. NoSQL je dizajniran za distribuirane skladišta podataka za potrebe podataka vrlo velikih razmjera. Razmislite o Facebooku sa njegovih 500.000.000 korisnika ili Twitteru koji akumulira terabite podataka svaki dan.
U NoSQL bazi podataka, nema fiksne šeme i nema spajanja. RDBMS se "povećava" tako što dobija sve brži hardver i dodaje memoriju. NoSQL, s druge strane, može iskoristiti prednosti "skaliranja". Skaliranje se odnosi na raspoređivanje opterećenja na mnoge sisteme robe. Ovo je komponenta NoSQL-a koja ga čini jeftinim rješenjem za velike skupove podataka.
NoSQL kategorije
Trenutni NoSQL svijet se uklapa u 4 osnovne kategorije.
- Prodavnice ključeva baziraju se prvenstveno na Amazonovom Dynamo Paperu koji je napisan 2007. Glavna ideja je postojanje hash tablice u kojoj postoji jedinstveni ključ i pokazivač na određenu stavku podataka. Ova mapiranja su obično praćena mehanizmima keš memorije kako bi se maksimizirale performanse.
- Baze podataka inspirisane su Lotus Notesom i slične su prodavnicama ključ/vrijednost. Model su u osnovi dokumenti s verzijama koji su kolekcije drugih kolekcija ključ/vrijednost. Polustrukturirani dokumenti su pohranjeni u formatima kao što je JSON.
- Graph Database-ovi su izgrađeni sa čvorovima, odnosima između nota i svojstvima čvorova. Umjesto tabela redova i kolona i krute strukture SQL-a, koristi se fleksibilni model grafa koji se može skalirati na mnogim mašinama.
Porodične prodavnice kolona stvorene su za skladištenje i obradu veoma velikih količina podataka distribuiranih na mnogim mašinama. Još uvijek postoje ključevi, ali ukazuju na više kolona. U slučaju BigTable-a (Google-ov NoSQL model porodice kolona), redovi se identifikuju pomoću ključa reda sa podacima sortiranim i pohranjenim po ovom ključu. Kolone su raspoređene po porodici kolona.
Glavni NoSQL igrači
Glavni igrači u NoSQL-u su se pojavili prvenstveno zbog organizacija koje su ih usvojile. Neke od najvećih NoSQL tehnologija uključuju:
- Dynamo: Dynamo je kreirao Amazon.com i predstavlja najistaknutiju NoSQL bazu podataka ključ-vrijednost. Amazonu je bila potrebna visoko skalabilna distribuirana platforma za svoje e-trgovine pa su razvili Dynamo. Amazon S3 koristi Dynamo kao mehanizam za skladištenje.
- Cassandra: Cassandra je otvorenog koda Facebook-a i predstavlja NoSQL bazu podataka orijentisanu na kolone.
- BigTable: BigTable je Google-ova vlasnička baza podataka orijentirana na stupce. Google dozvoljava korištenje BigTable-a, ali samo za Google App Engine.
- SimpleDB: SimpleDB je još jedna Amazon baza podataka. Koristi se za Amazon EC2 i S3, dio je Amazon Web Services koji naplaćuje naknade ovisno o korištenju.
- CouchDB: CouchDB zajedno sa MongoDB su NoSQL baze podataka otvorenog koda orijentisane na dokumente.
- Neo4J: Neo4j je open source baza podataka grafova.
Upit za NoSQL
Pitanje kako postaviti upit u NoSQL bazu podataka je ono što zanima većinu programera. Na kraju krajeva, podaci pohranjeni u ogromnoj bazi podataka nikome ne donose dobro ako ih ne možete dohvatiti i pokazati krajnjim korisnicima ili web usluge. NoSQL baze podataka ne pružaju deklarativni jezik upita visokog nivoa kao što je SQL. Umjesto toga, upit za ove baze podataka je > PREFIX foaf:
SELECT ?url
FROM
WHERE {
?contributor foaf:name "Jon Foobar".
?contributor foaf:weblog ?url.
}
Budućnost NoSQL-a
Organizacije koje imaju velike potrebe za skladištenjem podataka ozbiljno gledaju na NoSQL. Očigledno, koncept ne dobija toliko pažnje u manjim organizacijama. U istraživanju koje je sproveo Information Week, 44% poslovnih IT profesionalaca nije čulo za NoSQL. Nadalje, samo 1% ispitanika je izjavilo da je NoSQL dio njihovog strateškog smjera. Jasno je da NoSQL ima svoje mjesto u našem povezanom svijetu, ali će morati nastaviti da se razvija kako bi dobio masovnu privlačnost za koju mnogi misle da bi mogao imati.