Kennisbank › Sqlite Nosql › MongoDB en SQLite: twee databases, twee architecturen
sqlite nosql starter 29 August 2026

MongoDB en SQLite: twee databases, twee architecturen

MongoDB en SQLite: twee databases, twee architecturen Dit artikel legt het verschil uit tussen MongoDB (NoSQL, document-georiënteerd) en SQLite (relationeel,

De database werd in 2009 gelanceerd door het bedrijf 10gen, dat in 2007 werd opgericht door Dwight Merriman, Eliot Horowitz en Kevin Ryan. De naam MongoDB is afgeleid van "humongous" — de database is ontworpen voor grote hoeveelheden data die niet in vaste tabellenstructuren passen.

Horizontaal schalen met sharding

MongoDB onderscheidt zich van relationele databases door horizontale schaalbaarheid. Relationele databases vertrouwen vaak op een enkele krachtige server (verticale schaalbaarheid). MongoDB kan worden uitgebreid over meerdere servers via sharding, waarbij data automatisch wordt verdeeld over verschillende machines.

Daarnaast ondersteunt MongoDB replicaset-architecturen. Data wordt automatisch gerepliceerd naar meerdere knooppunten. Dit zorgt voor betrouwbaarheid, hoge beschikbaarheid en snellere leesbewerkingen, omdat query's kunnen worden verdeeld over meerdere replica's.

MongoDB installeren en testen

De volgende stappen installeren MongoDB Community Server op een Debian/Ubuntu-systeem en testen de basisfunctionaliteit.

1. Importeer de MongoDB GPG-key en voeg de repository toe:

curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

2. Werk de pakketlijst bij en installeer MongoDB:

sudo apt-get update
sudo apt-get install -y mongodb-org

3. Start de MongoDB-service en controleer de status:

sudo systemctl start mongod
sudo systemctl status mongod

4. Open de MongoDB-shell en maak een testdatabase aan:

mongosh
use testdb
db.users.insertOne({ name: "Pixzo", role: "admin", active: true })

5. Voeg een document toe met een afwijkende structuur — dit werkt zonder schema-aanpassing:

db.users.insertOne({ name: "Tux", role: "user", active: false, lastLogin: new Date() })

6. Haal alle documenten op:

db.users.find().pretty()

7. Verifieer dat beide documenten met verschillende structuren in dezelfde collectie staan:

db.users.countDocuments()

SQLite: embedded relationele database

SQLite is een embeddable relationele database-engine, ontwikkeld door D. Richard Hipp in 2000 tijdens zijn werk voor General Dynamics op contract voor de United States Navy. In tegenstelling tot MongoDB, dat draait als een aparte server, is SQLite een zelfstandige, serverloze bibliotheek die rechtstreeks in een applicatie wordt ingebouwd. Data wordt opgeslagen in een enkel bestand op schijf.

SQLite is geschreven in C en beschikbaar op vrijwel elk platform — van smartphones tot routers. Het is aanwezig in bijna elke Android- en iOS-applicatie, webbrowsers zoals Chrome en Firefox, en besturingssystemen zoals Windows en macOS.

SQLite-versleuteling met SQLCipher

SQLite ondersteunt geen native versleuteling. Voor versleutelde opslag gebruik je SQLCipher, een fork van SQLite die AES-256-versleuteling toevoegt. Een voorbeeld van deze aanpak is AloxBook, een Linux-desktopapp voor financiële administratie. Zonder wachtwoord gebruikt AloxBook een onversleutelde SQLite-database; met wachtwoord schakelt het over naar SQLCipher.

De eenvoud van SQLite wordt onderstreept door tools zoals sqldiff, een command-line hulpprogramma dat verschillen tussen twee SQLite-databases weergeeft. Het genereert een SQL-script dat de ene database naar de andere transformeert — handig voor versiebeheer, migraties en foutopsporing.

SQLite testen op Linux

SQLite is standaard aanwezig op de meeste Linux-distributies. De volgende stappen testen de basisfunctionaliteit.

1. Controleer de geïnstalleerde versie:

sqlite3 --version

2. Maak een database aan en voeg een tabel toe:

sqlite3 test.db "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, role TEXT);"

3. Voeg data in:

sqlite3 test.db "INSERT INTO users (name, role) VALUES ('Pixzo', 'admin');"

4. Haal de data op:

sqlite3 test.db "SELECT * FROM users;"

5. Toon de verschillen tussen twee databases met sqldiff:

sqlite3 test2.db "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, role TEXT);"
sqldiff test.db test2.db

Vergelijking: MongoDB versus SQLite

MongoDB en SQLite verschillen fundamenteel in architectuur, gebruik en doelgroep.

| Kenmerk | MongoDB | SQLite | |---------|---------|--------| | Type | NoSQL, document-georiënteerd | Relationeel | | Architectuur | Client-server, gedistribueerd | Embedded, serverloos | | Opslag | BSON-documenten in collecties | Enkel bestand op schijf | | Schema | Schema-agnostisch, flexibel | Vast schema met tabellen en kolommen | | Schalen | Horizontaal via sharding | Verticaal, beperkt tot één machine | | ACID-transacties | Beperkt, groeit in moderne versies | Volledig | | Ideaal voor | Grote, dynamische, gedistribueerde systemen | Kleine tot middelgrote lokale opslag |

MongoDB excelleert in scenario's waar data snel groeit, waar schema's vaak veranderen, en waar hoge beschikbaarheid en schaalbaarheid essentieel zijn — sociale media, e-commerceplatforms of real-time monitoring. SQLite is perfect voor apps die geen complexe query's of meerdere gelijktijdige gebruikers hoeven te ondersteunen — mobiele apps, desktopsoftware en systeemtools.

De twee databases zijn complementair, geen concurrenten. MongoDB draait in de cloud of op een cluster; SQLite draait op de achtergrond van je telefoon of laptop.

NoSQL: geen standaard, wel een filosofie

MongoDB is een prominente vertegenwoordiger van het NoSQL-paradigma, maar niet de enige. NoSQL is geen technologie maar een benadering. Het omvat document-databases (MongoDB), key-value stores (Redis), column-family stores (Cassandra) en graph databases (Neo4j). Gemeenschappelijk kenmerk: het afstappen van het strikte relationele model in ruil voor schaalbaarheid, prestaties en flexibiliteit.

De keuze voor NoSQL wordt gedreven door de behoefte aan schema-agnostisch ontwerp. In traditionele relationele databases leg je van tevoren vast welke kolommen een tabel heeft, welke datatypen worden gebruikt, en hoe tabellen met elkaar zijn verbonden. Bij MongoDB is dat niet nodig: elk document kan unieke velden bevatten, en het schema kan tijdens runtime evolueren. Dit is handig in agile ontwikkeling waar requirements snel veranderen.

NoSQL heeft ook nadelen. Het mist vaak ACID-eigenschappen (Atomicity, Consistency, Isolation, Durability) in de strikte vorm die relationele databases bieden. Hoewel moderne versies van MongoDB steeds meer transactionele ondersteuning bieden, blijft het lastiger om complexe, consistente transacties over meerdere collecties uit te voeren. SQLite ondersteunt volledige ACID-transacties en is daarom betrouwbaarder voor lokale, consistente opslag.

Verificatie

Controleer of beide databases correct functioneren:

mongosh --eval "db.runCommand({ ping: 1 })"
sqlite3 test.db "PRAGMA integrity_check;"

De MongoDB-query retourneert `{ ok: 1 }`. SQLite retourneert `ok` als de database intact is.

Veelgestelde problemen

1. MongoDB start niet na installatie — Controleer of het databasemap pad correct is. MongoDB vereist dat de directory `/var/lib/mongodb` bestaat en eigendom is van de `mongodb`-gebruiker:

sudo mkdir -p /var/lib/mongodb
sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo systemctl restart mongod

2. SQLite-database is vergrendeld — SQLite ondersteunt geen gelijktijdige schrijvers. Controleer of geen ander proces de database open heeft:

lsof /pad/naar/database.db

3. MongoDB-sharding werkt niet met replicasets — Sharding vereist dat elk shard-knooppunt deel uitmaakt van een replicaset. Configureer eerst de replicaset met `rs.initiate()` voordat je sharding inschakelt via `sh.addShard()`.

De databasewereld is niet of-of. De keuze tussen MongoDB en SQLite hangt af van je use case: heb je een gedistribueerd systeem met dynamische data, of een lokale applicatie met vaste structuur — en de grens tussen beide vervaagt naarmate tools als SQLCipher en MongoDB Atlas het landschap blijven verschuiven.

← Terug naar kennisbank
← Terug naar kennisbank