Het acroniem NoSQL is in 1998 geïntroduceerd. Veel mensen denken dat NoSQL een denigrerende term is die is gemaakt om te porren bij SQL. In werkelijkheid betekent de term Niet alleen SQL. Het idee is dat beide technologieën naast elkaar kunnen bestaan en dat elk daarvan zijn plaats heeft. De NoSQL-beweging is de afgelopen jaren in het nieuws geweest, omdat veel van de Web 2.0-leiders een NoSQL-technologie hebben gebruikt. Bedrijven zoals Facebook, Twitter, Digg, Amazon, LinkedIn en Google gebruiken allemaal NoSQL op de een of andere manier. Laten we NoSQL afbreken, zodat je het aan je CIO of zelfs je collega's kunt uitleggen.
NoSQL is ontstaan vanuit een behoefte
Gegevens opslag: De opgeslagen digitale gegevens van de wereld worden gemeten in exabytes. Een exabyte is gelijk aan één miljard gigabytes (GB) aan gegevens. Volgens Internet.com bedroeg de hoeveelheid opgeslagen gegevens die in 2006 werd toegevoegd 161 exabytes. Slechts 4 jaar later in 2010 zal de hoeveelheid opgeslagen gegevens bijna 1000 ExaBytes bedragen, wat een toename is van meer dan 500%. Met andere woorden, er worden veel gegevens opgeslagen in de wereld en het gaat gewoon door met groeien.
Onderling verbonden gegevens: Gegevens blijven steeds meer verbonden. De creatie van het web bevorderd in hyperlinks, blogs hebben pingbacks en elk groot sociaal netwerksysteem heeft tags die dingen met elkaar verbinden. Grote systemen zijn gebouwd om onderling verbonden te zijn.
Complexe gegevensstructuur: NoSQL kan eenvoudig hiërarchische geneste gegevensstructuren verwerken. Om hetzelfde te bereiken in SQL, hebt u meerdere relationele tabellen nodig met allerlei soorten sleutels. Bovendien is er een relatie tussen prestaties en gegevenscomplexiteit. Prestaties kunnen verslechteren in een traditioneel RDBMS omdat we de enorme hoeveelheden gegevens opslaan die nodig zijn in sociale netwerktoepassingen en het semantische web.
Wat is NoSQL?
Ik denk dat een manier om NoSQL te definiëren is om te overwegen wat het niet is. Het is geen SQL en het is niet relationeel. Zoals de naam al doet vermoeden, is het geen vervanging voor een RDBMS, maar complimenteert het dit. NoSQL is ontworpen voor gedistribueerde datastores voor zeer grootschalige gegevensbehoeften. Denk aan Facebook met zijn 500.000.000 gebruikers of Twitter die elke dag Terabits aan gegevens verzamelt.
In een NoSQL-database is er geen vast schema en geen joins. Een RDBMS "schaalt op" door snellere en snellere hardware te krijgen en geheugen toe te voegen. NoSQL, aan de andere kant, kan profiteren van "schaalvergroting". Scaling out verwijst naar het spreiden van de belasting over vele productsystemen. Dit is het onderdeel van NoSQL dat het een goedkope oplossing maakt voor grote datasets.
NoSQL-categorieën
De huidige NoSQL-wereld past in 4 basiscategorieën.
- Belangrijkste waarden Winkels zijn voornamelijk gebaseerd op het Dynamo-papier van Amazon, dat in 2007 werd geschreven. Het belangrijkste idee is het bestaan van een hash-tabel met een unieke sleutel en een verwijzing naar een bepaald gegevenstype. Deze toewijzingen gaan meestal gepaard met cachemechanismen om de prestaties te maximaliseren.
- Column Family Stores zijn gemaakt om zeer grote hoeveelheden gegevens op te slaan en te verwerken die over meerdere machines zijn verspreid. Er zijn nog steeds toetsen, maar deze wijzen naar meerdere kolommen. In het geval van BigTable (Google's Column Family NoSQL-model), worden rijen geïdentificeerd door een rijsleutel waarbij de gegevens worden gesorteerd en opgeslagen met deze sleutel. De kolommen zijn gerangschikt per kolomfamilie.
- Document Databases werden geïnspireerd door Lotus Notes en zijn vergelijkbaar met winkels met sleutelwaardes. Het model bestaat voornamelijk uit versies van documenten die collecties van andere collecties met sleutelwaarde zijn. De semi-gestructureerde documenten worden opgeslagen in formaten zoals JSON.
- Grafiekdatabases zijn gebouwd met knooppunten, relaties tussen notities en de eigenschappen van knooppunten. In plaats van tabellen met rijen en kolommen en de rigide structuur van SQL, wordt een flexibel grafiekmodel gebruikt dat op veel machines kan worden geschaald.
Major NoSQL-spelers
De belangrijkste spelers in NoSQL zijn vooral voortgekomen uit de organisaties die deze hebben overgenomen. Enkele van de grootste NoSQL-technologieën zijn onder andere:
- Dynamo: Dynamo is gemaakt door Amazon.com en is de meest prominente Key-Value NoSQL-database. Amazon had behoefte aan een zeer schaalbaar gedistribueerd platform voor hun e-commercebedrijven en daarom hebben ze Dynamo ontwikkeld. Amazon S3 gebruikt Dynamo als opslagmechanisme.
- Cassandra: Cassandra was open source van Facebook en is een kolomgeoriënteerde NoSQL-database.
- Grote tafel: BigTable is de eigen kolomgeoriënteerde database van Google. Google staat het gebruik van BigTable toe, maar alleen voor de Google App Engine.
- SimpleDB: SimpleDB is een andere Amazon-database. Het wordt gebruikt voor Amazon EC2 en S3 en maakt deel uit van Amazon Web Services en brengt kosten in rekening, afhankelijk van het gebruik.
- CouchDB: CouchDB is samen met MongoDB open-source documentgeoriënteerde NoSQL-databases.
- Neo4J: Neo4j is een open source grafiekdatabase.
Querying NoSQL
De vraag hoe een NoSQL-database moet worden opgevraagd, is waar de meeste ontwikkelaars in geïnteresseerd zijn. Gegevens die in een enorme database zijn opgeslagen, doen immers niemand goed als u deze niet kunt ophalen en aan eindgebruikers of webservices kunt laten zien. NoSQL-databases bieden geen declaratieve querytaal op hoog niveau, zoals SQL. In plaats daarvan is het opvragen van deze databases specifiek voor gegevensmodellen.
Veel van de NoSQL-platforms maken RESTful-interfaces met de gegevens mogelijk. Andere aanbieding-API's. Er zijn een aantal querytools ontwikkeld die proberen om meerdere NoSQL-databases te doorzoeken. Deze hulpprogramma's werken meestal in een enkele NoSQL-categorie. Een voorbeeld is SPARQL. SPARQL is een declaratieve query-specificatie ontworpen voor grafiegegevensbestanden. Hier is een voorbeeld van een SPARQL-query die de URL van een bepaalde blogger (met dank aan IBM) ophaalt:
PREFIX-foaf:
Toekomst van NoSQL
Organisaties die enorme behoefte hebben aan gegevensopslag kijken serieus naar NoSQL. Blijkbaar krijgt het concept niet zoveel grip in kleinere organisaties. In een onderzoek van Information Week heeft 44% van de IT-professionals van bedrijven nog nooit van NoSQL gehoord. Verder meldde slechts 1% van de respondenten dat NoSQL deel uitmaakt van hun strategische richting. Het is duidelijk dat NoSQL zijn plaats heeft in onze verbonden wereld, maar zal moeten blijven evolueren om de massale aantrekkingskracht te krijgen die velen denken dat het zou kunnen hebben.