Akronymet NoSQL ble laget i 1998. Mange tror NoSQL er et nedsettende begrep laget for å stikke i SQL. I virkeligheten betyr begrepet ikke bare SQL. Tanken er at begge teknologiene kan eksistere side om side og hver har sin plass. NoSQL-bevegelsen har vært i nyhetene de siste årene da mange av Web 2.0-lederne har tatt i bruk en NoSQL-teknologi. Selskaper som Facebook, Twitter, Digg, Amazon, LinkedIn og Google bruker alle NoSQL på en eller annen måte. La oss bryte ned NoSQL slik at du kan forklare det til CIO eller til og med kollegene dine.
NoSQL dukket opp fra et behov
Datalagring: Verdens lagrede digitale data måles i exabyte. En exabyte er lik en milliard gigabyte (GB) med data. Ifølge Internet.com var mengden lagrede data lagt til i 2006 161 exabyte. Bare 4 år senere i 2010 vil mengden data som lagres være nesten 1 000 ExaBytes som er en økning på over 500 %. Med andre ord, det er mye data som lagres i verden, og det kommer bare til å fortsette å vokse.
Interconnected Data: Data fortsetter å bli mer tilkoblet. Opprettelsen av nettet fremmet i hyperkoblinger, blogger har pingbacks og alle store sosiale nettverkssystem har tagger som binder ting sammen. Store systemer er bygget for å være sammenkoblet.
Kompleks datastruktur: NoSQL kan enkelt håndtere hierarkiske nestede datastrukturer. For å oppnå det samme i SQL, trenger du flere relasjonstabeller med alle slags nøkler. I tillegg er det en sammenheng mellom ytelse og datakompleksitet. Ytelsen kan forringes i en tradisjonell RDBMS ettersom vi lagrer de enorme datamengdene som kreves i sosiale nettverksapplikasjoner og det semantiske nettet.
Hva er NoSQL?
Jeg antar at en måte å definere NoSQL på er å vurdere hva den ikke er. Det er ikke SQL og det er ikke relasjonelt. Som navnet antyder, er det ikke en erstatning for en RDBMS, men komplimenterer den. NoSQL er designet for distribuerte datalagre for svært store databehov. Tenk på Facebook med sine 500 000 000 brukere eller Twitter som akkumulerer terabits med data hver eneste dag.
I en NoSQL-database er det ikke noe fast skjema og ingen sammenføyninger. En RDBMS "skalerer opp" ved å få raskere og raskere maskinvare og legge til minne. NoSQL kan derimot dra nytte av å «skalere ut». Utskalering refererer til å spre belastningen over mange varesystemer. Dette er komponenten i NoSQL som gjør den til en rimelig løsning for store datasett.
NoSQL-kategorier
Den nåværende NoSQL-verdenen passer inn i 4 grunnleggende kategorier.
- Key-values Stores er hovedsakelig basert på Amazons Dynamo Paper som ble skrevet i 2007. Hovedideen er eksistensen av en hash-tabell der det er en unik nøkkel og en peker til et bestemt dataelement. Disse tilordningene er vanligvis ledsaget av hurtigbuffermekanismer for å maksimere ytelsen.
- Document Databases ble inspirert av Lotus Notes og ligner på nøkkelverdibutikker. Modellen er i utgangspunktet versjonerte dokumenter som er samlinger av andre nøkkelverdi-samlinger. De semistrukturerte dokumentene lagres i formater som JSON.
- Graph Databases er bygget med noder, relasjoner mellom noter og egenskapene til noder. I stedet for tabeller med rader og kolonner og den stive strukturen til SQL, brukes en fleksibel grafmodell som kan skaleres på tvers av mange maskiner.
Column Family Stores ble opprettet for å lagre og behandle svært store datamengder fordelt på mange maskiner. Det er fortsatt nøkler, men de peker til flere kolonner. Når det gjelder BigTable (Googles Column Family NoSQL-modell), identifiseres rader med en radnøkkel med dataene sortert og lagret med denne nøkkelen. Kolonnene er ordnet etter kolonnefamilie.
Major NoSQL-spillere
De store aktørene i NoSQL har dukket opp først og fremst på grunn av organisasjonene som har tatt dem i bruk. Noen av de største NoSQL-teknologiene inkluderer:
- Dynamo: Dynamo ble opprettet av Amazon.com og er den mest fremtredende Key-Value NoSQL-databasen. Amazon hadde behov for en svært skalerbar distribuert plattform for deres e-handelsvirksomheter, så de utviklet Dynamo. Amazon S3 bruker Dynamo som lagringsmekanisme.
- Cassandra: Cassandra ble hentet fra Facebook og er en kolonneorientert NoSQL-database.
- BigTable: BigTable er Googles proprietære kolonneorienterte database. Google tillater bruk av BigTable, men bare for Google App Engine.
- SimpleDB: SimpleDB er en annen Amazon-database. Brukt for Amazon EC2 og S3, er den en del av Amazon Web Services som tar gebyrer avhengig av bruk.
- CouchDB: CouchDB sammen med MongoDB er åpen kildekode-dokumentorienterte NoSQL-databaser.
- Neo4J: Neo4j er en grafdatabase med åpen kildekode.
Querying NoSQL
Spørsmålet om hvordan man spørre en NoSQL-database er det de fleste utviklere er interessert i. Tross alt gjør ikke data lagret i en enorm database noe godt for noen hvis du ikke kan hente og vise dem til sluttbrukere eller webtjenester. NoSQL-databaser gir ikke et deklarativt spørringsspråk på høyt nivå som SQL. I stedet er det > å søke etter disse databasene PREFIX foaf:
SELECT ?url
FROM
WHERE {
?bidragsyter foaf:name "Jon Foobar".
?bidragsyter foaf:weblog ?url.
}
Future of NoSQL
Organisasjoner som har store behov for datalagring ser seriøst på NoSQL. Tilsynelatende får konseptet ikke så mye gjennomslag i mindre organisasjoner. I en undersøkelse utført av Information Week har 44 % av IT-fagfolk ikke hørt om NoSQL. Videre rapporterte bare 1% av respondentene at NoSQL er en del av deres strategiske retning. NoSQL har tydeligvis sin plass i vår tilkoblede verden, men vil måtte fortsette å utvikle seg for å få masseappell som mange tror det kunne ha.