De afgelopen jaren zijn NoSQL- of niet-relationele databasetools enorm populair geworden in termen van het opslaan van enorme hoeveelheden gegevens en het eenvoudig schalen ervan. Er zijn discussies over de vraag of niet-relationele databases in de toekomst relationele databases zullen vervangen. Met het toenemende aantal sociale gegevens en andere ongestructureerde gegevens, zijn de volgende enkele van de vragen die gerezen worden over relationele databases.
Zijn relationele databases in staat om big data te verwerken?
Zijn relationele databases in staat om een enorme hoeveelheid gegevens?
Zijn relationele databases geschikt voor gegevens uit de moderne tijd?
Voordat we deze vragen beantwoorden, moeten we eerst wat basisprincipes van zowel relationele als niet-relationele databases weten.
basisprincipes van relationele en niet-relationele databases
Relationele databases: Het concept van de relationele database werd ontwikkeld in de jaren 1970. Het belangrijkste kenmerk van alle relationele databases is de ondersteuning van ACID-eigenschappen (Automicity,Consistentie, Isolatie en Duurzaamheid), die ervoor zorgen dat alle transacties betrouwbaar worden verwerkt.
Automaticiteit: Elke transactie is uniek en zorgt ervoor dat als een logisch onderdeel van een transactie mislukt, alles wordt teruggedraaid, zodat de gegevens ongewijzigd blijven.
Consistentie: Alle gegevens die naar de database worden geschreven, zijn onderworpen aan de gedefinieerde regels (beperkingen, triggers, enz.)
Isolatie: Wijzigingen die in een transactie zijn aangebracht, zijn pas zichtbaar voor andere transacties als ze zijn vastgelegd.
Duurzaamheid: Wijzigingen die in een transactie zijn vastgelegd, worden opgeslagen en zijn beschikbaar in de database, zelfs als er een stroomstoring is of als de database plotseling offline gaat.
Strict gestructureerd: De objecten in de relationele databases zijn strikt gestructureerd. Alle gegevens in de tabel worden opgeslagen in rijen en kolommen. Elke kolom heeft een gegevenstype. Het is meestal genormaliseerd. Structured Query Language (SQL) is geschikt om relationele databases gestructureerd op te slaan en op te halen. Query's zijn gewone Engelse commando's. Er is altijd een vast aantal kolommen hoewel additionele kolommen later kan worden toegevoegd. De meeste tabellen zijn aan elkaar gerelateerd met primaire en externe sleutels en bieden zo "Referentiële integriteit" tussen de objecten. De belangrijkste leveranciers zijn ORACLE, SQL Server, MySQL, PostgreSQL, enz.
Niet-relationele databases: Het concept van niet-relationele databases kwam in beeld om de snelle groei van ongestructureerde gegevens aan te kunnen en deze gemakkelijk uit te schalen. Dit biedt een flexibel schema, dus er bestaat niet zoiets als "Referentiële integriteit" zoals we zien in relationele databases. De gegevens zijn in hoge mate de-genormaliseerd en vereisen geen naden tussen objecten. Dit versoepelt de ACID-eigenschap van relationele databases en ondersteunt CAP (Consistentie, Beschikbaarheid en Partitionering). Maar uit deze drie slechts twee worden gegarandeerd op elk punt in de tijd. Dus in tegenstelling tot ACID, ondersteunt het alleen BASE (Basically Available Soft-status, eventuele consistentie). De eerste databases die op basis van deze concepten zijn gemaakt, zijn BigTable van Google, HBase van Yahoo, Cassandra van Facebook, enz.
Categorieën van niet-relationele databases: Niet-relationele databases kunnen worden ingedeeld in vier hoofdcategorieën, zoals sleutel-waardendatabase, kolomdatabase, documentdatabase en grafiekdatabase.
Sleutelwaardendatabase: Dit is de eenvoudigste vorm van NoSQL-database waarbij elke waarde is gekoppeld aan de unieke sleutel.(ex Redis)
Kolomdatabase: Deze database is in staat een grote hoeveelheid gegevens op te slaan en te verwerken met behulp van een aanwijzer die verwijst naar vele kolommen die over een cluster zijn verdeeld. (ex HBase)
Documentdatabase: Deze database kan veel sleutel/waarde-documenten met veel geneste niveaus bevatten. Efficiënt opvragen is mogelijk met deze database. De documenten worden opgeslagen in JSON-formaat.(ex MongoDB)
Grafische database: In plaats van traditionele rijen en kolommen, gebruikt deze database knooppunten en randen om grafiekstructuren weer te geven en gegevens op te slaan. (ex Neo4J)