En oversikt over NoSQL

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 dine medarbeidere.

MYSQL database.

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. I følge Internett.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 1000 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.

Sammenkoblede 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 å henge sammen.

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 semantisk nett.

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.

  1. Nøkkelverdibutikker er først og fremst 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.
    1. Kolonne Familiebutikker ble laget 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.
  2. Dokumentdatabaser 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.
  3. Grafdatabases er bygget med noder, relasjoner mellom notater 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.

Store NoSQL-spillere

De store aktørene i NoSQL har dukket opp først og fremst på grunn av organisasjonene som har adoptert dem. 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.
  • Enkel DB: SimpleDB er en annen Amazon-database. Brukt for Amazon EC2 og S3, er det 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 åpen kildekode-grafdatabase.

Spørre NoSQL

Spørsmålet om hvordan man spør en NoSQL-database er det de fleste utviklere er interessert i. Tross alt gjør ikke data som er lagret i en enorm database noe godt for noen hvis du ikke kan hente og vise dem til sluttbrukere eller nettjenester. NoSQL-databaser gir ikke et deklarativt spørringsspråk på høyt nivå som SQL. I stedet er spørring i disse databasene datamodellspesifikk.

Mange av NoSQL-plattformene tillater RESTful-grensesnitt til dataene. Andre tilbudsspørrings-APIer. Det er et par spørringsverktøy som er utviklet som forsøker å søke etter flere NoSQL-databaser. Disse verktøyene fungerer vanligvis på tvers av en enkelt NoSQL-kategori. Et eksempel er SPARQL. SPARQL er en deklarativ spørringsspesifikasjon designet for grafdatabaser. Her er et eksempel på et SPARQL-søk som henter URL-en til en bestemt blogger (med tillatelse fra IBM):

PREFIX skum: 
VELG ?url
FRA
HVOR {
?bidragsyter foaf: navn "Jon Foobar" .
?bidragsyter foaf: nettlogg ?url .
}

Fremtiden til NoSQL

Organisasjoner som har store behov for datalagring ser seriøst på NoSQL. Tilsynelatende får konseptet ikke like mye gjennomslag i mindre organisasjoner. I en undersøkelse utført av Information Week, har 44 % av IT-profesjonelle 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.