MongoDB - Iemand005/IT-Landscape GitHub Wiki

MongoDB

MongoDB Logo

Wat is MongoDB

MongoDB is database software die een vorm van NoSQL (Not only SQL) is.

MongoDB gebruikt niet SQL als taal, maar je kan ermee communiceren met JavaScript. Sinds 2013 gebruikt MongoDB ook de JavaScript v8 engine van Chromium.

De structuur van hoe MongoDB gegevens opslaat is gelijkaardig aan JSON. Intern word alles als BSON opgeslagen.

Wat is BSON

BSON is een meer binair gerichte representatie van JSON met wat extra uitbreidingen.

Zo heeft BSON ondersteuning voor het duidelijker opslaan van data types door een byte toe te wijzen die het type data aangeeft.

Omdat BSON en JSON eigenlijk dezelfde structuur hebben kan data gemakkelijk vertaald worden van de ene naar de andere. Dit laat ons dus die data in Javascript gebruiken omdat deze super gemakkelijk van BSON naar een JSON object kan worden vertaald en rechtstreeks in Javascript gebruikt kan worden.

BSON en JSON

In JSON moet het document gelezen worden van open haakje tot gesloten haakje om het begin en einde aan te duiden tussen stukken data. Zo weet de computer niet direct wanneer de data structuur begint en eindigt en ook niet hoe lang de data is zonder het eerst helemaal te lezen, wat veel trager is.

Door de lengte op voorhand te weten kan je veel sneller zoeken door grote databases en naar specifieke offsets springen om data op te halen zonder alles in het geheugen te moeten laden. Hierdoor kunnen de databases veel groter worden en ook nog eens sneller zijn door BSON te gebruiken in plaats van JSON.

BSON heeft in plaats van haakjes aan het begin van elk stuk data een getal van 4 bytes (little endian) wat aangeeft hoe groot het stuk data is. Deze lengte telt enkel de data, de eerst 4 bytes voor de lengte, de 5de byte voor het type en de laatste byte van de gehele structuur (null terminator) worden niet meegerekend in de data lengte.

JSON kan datatypes onderscheiden tussen string, number en boolean:

  • strings zijn altijd geschreven als "hey" met a aanhalingstekens om aan te geven dat het een string is.
  • numbers zijn alle numerieke karakters zonder aanhalingstekens 100.
  • booleans zijn ofwel true of false, zonder aanhalingstekens.

In BSON is dit strict aangegeven met een nummer (als een enumerator). Zo kan de data als rauwe bytes geschreven worden zonder extra transformaties om het leesbaar te maken.

In JSON heb je een key en een value, aangeduid als key: value, bijvoorbeeld: "greeting": "hello", waarbij de key greeting is en de value een string hello is. Meerdere key-value paren worden onderscheiden met een komma (,).

In BSON zijn deze keys en values aangeduid door de key direct na de type byte en afgesloten met een null terminator (\x00)

In BSON word de data structuur afgesloten met nog een null terminator in plaats van een gesloten gekruld haakje }

MongoDB installeren

Installatie instructies (manueel)

  1. Haal de mongo image op
docker pull mongo
  1. Maak de container aan op basis van de mongo image en voer deze uit met toegang tot poort 27017 (standaard poort voor MongoDB)
docker run --name MongoDB -p 27017:27017 -d mongo

Installatie instructies (Docker Compose)

We gaan een MongoDB uitvoeren in een Docker container.

  1. Maak een map aan om de configuratie van de container in uit te voeren.
  2. Open deze map in een editor naar keuze. Wij gaan met Visual Studio Code werken.
  3. Maak een bestand aan compose.yaml
  4. Plaats de volgende code in dit bestand:
services:
  mongo:
    image: mongo:latest
    container_name: MongoDB
    environment:
      MONGO_INITDB_ROOT_USERNAME: mongole
      MONGO_INITDB_ROOT_PASSWORD: password
    ports:
      - 27017:27017
    volumes:
      - mongodata:/data/db
volumes:
  mongodata:
    driver: local
  1. Voer het volgende commando uit in dezelfde map als het compose.yaml bestand:
docker compose up

MongoDB beheren

Starten en stoppen

Dit doe je met de basiscommando's

Een backup maken van je database

Je kan een backup maken met mongod of mongodump