NoSQL ("niet alleen SQL") is een benadering van databaseontwerp die de opslag en het opvragen van gegevens mogelijk maakt buiten de traditionele structuren die in relationele databases worden gevonden. Het is gemaakt om voornamelijk om te gaan met ongestructureerde gegevens die worden gegenereerd uit verschillende bronnen, zoals documenten, audio, video, sociale netwerken, enz. NoSQL-databases zijn het beste voor moderne toepassingen waar gegevensmodellen evolueren en schaalbaarheid essentieel is. Deze database wint de laatste jaren aan populariteit doordat bedrijven nu meer dan ooit te maken hebben met ongestructureerde data. Dit model slaat gegevens op een andere manier op dan de traditionele relationele tabellen, zodat de gerelateerde gegevens binnen een enkele gegevensstructuur kunnen worden bewaard. Een NoSQL-database kan worden onderverdeeld in vier categorieën:
-
Documentwinkel
-
Key-Value Databases
-
Winkels met brede kolommen
-
Grafische databases
NoSQL-databases worden vaak gebruikt in agile projecten omdat ze flexibele datamodellen bieden. Hierdoor kunnen ontwikkelaars zich concentreren op bedrijfslogica en algoritmen in plaats van zich bezig te houden met schema-updates. Als u verwacht dat het datamodel van uw applicatie flexibel moet blijven om veranderingen in de tijd aan te kunnen, kan de flexibele schemabenadering van NoSQL-databases geschikt zijn voor uw behoeften.
Volgens db-engines zijn de twee beste NoSQL-databases (juli 2021) MongoDB (ranking:5) en Redis (ranking:6). Interessant is dat deze NoSQL-databases 12 jaar geleden niet bestonden. Hoe ze zijn ontstaan en aantrekkingskracht, populariteit hebben gewonnen en het landschap van het databasebeheersysteem hebben veranderd, is de primaire essentie van deze blogpost.
MongoDB
MongoDB is een open-source documentgeoriënteerde database, met de eerste release in februari 2009. Documentdatabases contrasteren sterk met de traditionele relationele database. Ze slaan alle informatie voor een bepaald object op in een enkele instantie in de database en elk opgeslagen object kan van elk ander verschillen. Dit elimineert de noodzaak voor object-relationele mapping en maakt een schemaloze structuur mogelijk, een functie waarbij applicatieontwikkelaars de flexibiliteit hebben om snel te evolueren dankzij het flexibele datamodel. In plaats van een applicatie aan te passen aan de schemavereisten, schrijven ontwikkelaars de applicatie en volgt het schema.
MongoDB is erg populair vanwege de flexibiliteit, het leergemak en de lagere eigendomskosten om mee te beginnen. Applicatieontwikkelaars zijn dol op MongoDB omdat ze het gegevensmodel onderweg kunnen wijzigen en omdat MongoDB JSON-documenten gebruikt om gegevens vast te leggen. JSON is overal en kan worden beschouwd als het de-facto formaat voor het verzenden van rijke data tussen webapplicaties en eindpunten. Het eenvoudige ontwerp en de flexibiliteit maken het gemakkelijk te lezen en te begrijpen, en in de meeste gevallen gemakkelijk te manipuleren in de programmeertaal van uw keuze.
MongoDB ontstond dankzij 10gen (voordat het werd omgedoopt tot MongoDB Inc), begon het te ontwikkelen in 2007 en kwam uit met de eerste GA-release in februari 2009. Sindsdien heeft MongoDB zich snel ontwikkeld en wordt beschouwd als een van de meest opwindende databaseprojecten voor moderne toepassingen. Volgens StackOverflow Developer Survey 2020 blijft MongoDB de databasetechnologie die ontwikkelaars het meest willen leren. Op het moment van schrijven hebben ze net versie 5.0 uitgebracht (13 juli 2021) en deze wordt geleverd met veel opmerkelijke functies, zoals live resharding, native time-series data-ondersteuning en versie-API, geschikt voor multi-cloudomgevingen.
Een ander belangrijk kenmerk van MongoDB zijn de ingebouwde functies voor hoge beschikbaarheid, zoals replicatie, replicaset en sharding. Het is horizontaal schaalbaar, wat helpt om de werklast te verminderen en uw bedrijf gemakkelijk op te schalen. Het biedt replicatie via een consensusprotocol van eigen bodem dat inspiratie haalt uit Raft en gegevens over shards kan verspreiden via de queryrouter die mongos wordt genoemd. U kunt ClusterControl gebruiken om eenvoudig een MongoDB-replicaset en sharded-clusterconfiguratie te implementeren.
MongoDB trok de publieke aandacht en critici vanwege de zwakte van de standaard beveiligingsconfiguratie van MongoDB, waardoor iedereen volledige toegang tot de database had. Er zijn gegevens gestolen van tienduizenden MongoDB-installaties. Bovendien zijn veel MongoDB-servers vastgehouden voor losgeld. Deze blootstelling heeft ertoe geleid dat we een handvol beveiligingsgerelateerde blogposts hebben geschreven met betrekking tot MongoDB, zoals Secure MongoDB en Protect Yourself From the Ransom Hack en How to Secure MongoDB From Ransomware - Ten Tips. Bijgevolg heeft MongoDB de standaardconfiguratieaspecten verbeterd om veiliger te zijn met MongoDB 3 en hoger.
Sommige grote bedrijven vertrouwen sterk op MongoDB als hun gegevensopslag, zoals Forbes, Toyota, SAP, Cisco, eBay en Adobe. MongoDB wordt beschouwd als een gamechanger in de databasewereld en wordt een van de belangrijkste databaseplatforms in het internettijdperk.
ClusterControl ondersteunt MongoDB sinds versie juli 2013 (v1.2.3) en is sindsdien continu verbeterd. ClusterControl ondersteunde toen zelfs de TokuMX (MongoDB met Tokutek's fractal tree), voordat het werd beëindigd in MongoDB 3 vanwege de kernontwerpwijzigingen van de upstream. In de recente opmerkelijke verbeteringen introduceert ClusterControl ondersteuning voor Percona Backup for MongoDB, een gedistribueerde, low-impact oplossing voor het bereiken van consistente back-ups van MongoDB-sharded clusters en replicasets. Het Percona Backup for MongoDB-project is overgenomen van en vervangt mongodb_consistent_backup, dat niet langer actief wordt ontwikkeld of ondersteund.
Opnieuw
Redis is een andere meest populaire NoSQL-databasetechnologie die zich richt op frequente snelle toegang tot dezelfde gegevensblokken, zelfs als die gegevensblokken groot zijn. In mei 2019 bracht Salvatore Sanfilllippo de eerste versie van Redis uit, ook wel een Remote Dictionary Server genoemd, en heeft iedereens aandacht getrokken vanwege de uitgebreidere functies van de toen al gevestigde open-source in-memory database-oplossing genaamd Memcached.
Redis is supersnel dankzij de gegevensstructuur in het geheugen en het feit dat het in de C-taal is geschreven (dat is een van de redenen waarom Memcached in C is herschreven). Vanwege de hoge prestaties hebben ontwikkelaars zich tot Redis gewend voor gegevenscaching wanneer het lees- en schrijfvolume de mogelijkheden van de traditionele databases overschrijdt. Veelgebruikte gegevens kunnen in de cache worden opgeslagen en worden geleverd door in-memory key-value datastores en het minimaliseren van lezen en schrijven naar langzamere schijfgebaseerde systemen die zich richten op permanente opslag.
Traditioneel zijn databasebeheersystemen ontworpen om robuuste gegevensfunctionaliteiten te bieden in plaats van snelheid op schaal. De applicatiecache wordt vaak gebruikt om kopieën van opzoektabellen en de antwoorden op dure query's van het DBMS op te slaan, zowel om de prestaties van de applicatie te verbeteren als om de belasting van de gegevensbron te verminderen. Soms vereist de workflow van een applicatie het genereren van resource-intensieve resultaten. Zodra deze resultaten zijn verkregen, zijn er gevallen waarin de resultaten later opnieuw kunnen worden gebruikt, zoals bij het uitvoeren van gedeeltelijke aggregaten. De cache fungeert als een ideaal tussenmedium voor het bewaren van dergelijke resultaten tussen verzoeken. Dit is waar Redis schittert.
Redis is geëvolueerd van een zeer snelle, eenvoudige sleutelwaardeopslag naar permanente gegevensopslag en wordt gebruikt als een berichtenmakelaar en wachtrijsysteem. Het maakt echte staatloosheid mogelijk voor de processen van applicaties, terwijl duplicatie van gegevens of verzoeken aan externe gegevensbronnen wordt verminderd. Volgens StackOverflow Developer Survey 2020 blijft Redis aan de top van databasetechnologie waarvan ontwikkelaars belangstelling hebben getoond om door te ontwikkelen. Op het moment van schrijven is Redis 6 de nieuwste versie, met een nieuwe, meer geavanceerde gebruikersgebaseerde ACL-implementatie, ingebouwde SSL-codering voor verkeer en multi-threaded I/O, hoewel het Redis-proces nog steeds single-threaded is .
Redis-implementatie wordt ondersteund in ClusterControl 1.9.0 door gebruik te maken van ons nieuwe next-generation ClusterControl GUI-pakket dat beschikbaar is in een aparte installatie. Op het moment van schrijven noemen we het ClusterControl v2 getagd met Technology Preview die alleen de implementatie van een Redis-replicatie ondersteunt tot 5 nodes met Redis Sentinel met back-upbeheer van AOF en RDB. Als je geïnteresseerd bent, raadpleeg dan deze handleiding over hoe je het moet installeren.
Samenvatting
MongoDB en Redis zijn zonder twijfel twee van de beste NoSQL-databaseoplossingen die momenteel op de markt zijn en men denkt dat ze hun positie in de top 10 van database-ranking nog lang zullen behouden. Daarom ondersteunt ClusterControl beide databasetechnologieën.