00TD02A_Copilot_Matematikk_AsCode_v3_del3 - itnett/FTD02H-N GitHub Wiki

Å vise hvordan de samme beregningene kan utføres i forskjellige databaser krever en forståelse av hver databases evner og syntaks. Noen databaser, som MongoDB og Redis, er NoSQL-databaser og bruker derfor en annen tilnærming enn SQL-databaser som MySQL, PostgreSQL og SQL Server. Her er en oversikt over hvordan man kan utføre tilsvarende operasjoner i de nevnte databasene.

1. Cassandra

Cassandra bruker CQL (Cassandra Query Language) som ligner på SQL.

-- Create the table
CREATE TABLE PerformanceMetrics (
    student_id UUID PRIMARY KEY,
    cpu_usage float,
    memory_usage float,
    network_traffic float,
    disk_usage float,
    network_latency float
);

-- Insert data
INSERT INTO PerformanceMetrics (student_id, cpu_usage, memory_usage, network_traffic, disk_usage, network_latency)
VALUES (uuid(), 75.5, 60.2, 500.0, 250.0, 20.5);

-- Query to calculate percentage utilization
SELECT student_id, cpu_usage, memory_usage, 
       ((cpu_usage + memory_usage) / 2) * 100 AS percentage_utilization 
FROM PerformanceMetrics;

2. PostgreSQL

PostgreSQL støtter avanserte SQL-funksjoner og matematiske operasjoner.

-- Create the table
CREATE TABLE PerformanceMetrics (
    metric_id SERIAL PRIMARY KEY,
    student_id INT,
    cpu_usage FLOAT,
    memory_usage FLOAT,
    network_traffic FLOAT,
    disk_usage FLOAT,
    network_latency FLOAT
);

-- Insert data
INSERT INTO PerformanceMetrics (student_id, cpu_usage, memory_usage, network_traffic, disk_usage, network_latency)
VALUES (1, 75.5, 60.2, 500.0, 250.0, 20.5);

-- Query to calculate percentage utilization
SELECT student_id, 
       ((cpu_usage + memory_usage) / 2) * 100 AS percentage_utilization 
FROM PerformanceMetrics;

3. SQLite

SQLite er en lettvekts database som støtter mange SQL-funksjoner.

-- Create the table
CREATE TABLE PerformanceMetrics (
    metric_id INTEGER PRIMARY KEY AUTOINCREMENT,
    student_id INTEGER,
    cpu_usage REAL,
    memory_usage REAL,
    network_traffic REAL,
    disk_usage REAL,
    network_latency REAL
);

-- Insert data
INSERT INTO PerformanceMetrics (student_id, cpu_usage, memory_usage, network_traffic, disk_usage, network_latency)
VALUES (1, 75.5, 60.2, 500.0, 250.0, 20.5);

-- Query to calculate percentage utilization
SELECT student_id, 
       ((cpu_usage + memory_usage) / 2) * 100 AS percentage_utilization 
FROM PerformanceMetrics;

4. MariaDB

MariaDB er en fork av MySQL og støtter de fleste av de samme funksjonene.

-- Create the table
CREATE TABLE PerformanceMetrics (
    metric_id INT AUTO_INCREMENT PRIMARY KEY,
    student_id INT,
    cpu_usage FLOAT,
    memory_usage FLOAT,
    network_traffic FLOAT,
    disk_usage FLOAT,
    network_latency FLOAT
);

-- Insert data
INSERT INTO PerformanceMetrics (student_id, cpu_usage, memory_usage, network_traffic, disk_usage, network_latency)
VALUES (1, 75.5, 60.2, 500.0, 250.0, 20.5);

-- Query to calculate percentage utilization
SELECT student_id, 
       ((cpu_usage + memory_usage) / 2) * 100 AS percentage_utilization 
FROM PerformanceMetrics;

5. ArangoDB

ArangoDB bruker AQL (ArangoDB Query Language) for spørringer.

-- Create the collection
db._create('PerformanceMetrics');

-- Insert data
db.PerformanceMetrics.insert({
    student_id: 1,
    cpu_usage: 75.5,
    memory_usage: 60.2,
    network_traffic: 500.0,
    disk_usage: 250.0,
    network_latency: 20.5
});

-- Query to calculate percentage utilization
FOR metric IN PerformanceMetrics
RETURN {
    student_id: metric.student_id,
    percentage_utilization: ((metric.cpu_usage + metric.memory_usage) / 2) * 100
}

6. RethinkDB

RethinkDB bruker ReQL (RethinkDB Query Language).

// Create the table
r.db('test').tableCreate('PerformanceMetrics');

// Insert data
r.table('PerformanceMetrics').insert({
    student_id: 1,
    cpu_usage: 75.5,
    memory_usage: 60.2,
    network_traffic: 500.0,
    disk_usage: 250.0,
    network_latency: 20.5
});

// Query to calculate percentage utilization
r.table('PerformanceMetrics').map(function (metric) {
    return {
        student_id: metric('student_id'),
        percentage_utilization: ((metric('cpu_usage').add(metric('memory_usage'))).div(2)).mul(100)
    };
});

7. MongoDB

MongoDB bruker en dokumentmodell og spørringer i BSON.

// Create the collection and insert data
db.PerformanceMetrics.insert({
    student_id: 1,
    cpu_usage: 75.5,
    memory_usage: 60.2,
    network_traffic: 500.0,
    disk_usage: 250.0,
    network_latency: 20.5
});

// Query to calculate percentage utilization
db.PerformanceMetrics.aggregate([
    {
        $project: {
            student_id: 1,
            percentage_utilization: {
                $multiply: [
                    {
                        $divide: [
                            { $add: ["$cpu_usage", "$memory_usage"] },
                            2
                        ]
                    },
                    100
                ]
            }
        }
    }
]);

8. OrientDB

OrientDB støtter både dokument- og grafmodeller.

-- Create the class
CREATE CLASS PerformanceMetrics EXTENDS V;

-- Insert data
INSERT INTO PerformanceMetrics SET student_id = 1, cpu_usage = 75.5, memory_usage = 60.2, network_traffic = 500.0, disk_usage = 250.0, network_latency = 20.5;

-- Query to calculate percentage utilization
SELECT student_id, ((cpu_usage + memory_usage) / 2) * 100 AS percentage_utilization FROM PerformanceMetrics;

9. Redis

Redis er en nøkkel-verdi database og støtter LUA-skript for komplekse beregninger.

-- Store data in Redis
HMSET student:1 cpu_usage 75.5 memory_usage 60.2 network_traffic 500.0 disk_usage 250.0 network_latency 20.5

-- LUA script to calculate percentage utilization
redis.call('HMSET', 'student:1', 'percentage_utilization', (redis.call('HGET', 'student:1', 'cpu_usage') + redis.call('HGET', 'student:1', 'memory_usage')) / 2 * 100)

10. SQL Server Express

SQL Server Express støtter avanserte SQL-funksjoner og beregninger.

-- Create the table
CREATE TABLE PerformanceMetrics (
    metric_id INT IDENTITY PRIMARY KEY,
    student_id INT,
    cpu_usage FLOAT,
    memory_usage FLOAT,
    network_traffic FLOAT,
    disk_usage FLOAT,
    network_latency FLOAT
);

-- Insert data
INSERT INTO PerformanceMetrics (student_id, cpu_usage, memory_usage, network_traffic, disk_usage, network_latency)
VALUES (1, 75.5, 60.2, 500.0, 250.0, 20.5);

-- Query to calculate percentage utilization
SELECT student_id, 
       ((cpu_usage + memory_usage) / 2) * 100 AS percentage_utilization 
FROM PerformanceMetrics;

11. Couchbase

Couchbase bruker N1QL (Couchbase Query Language).

-- Create the document
INSERT INTO `PerformanceMetrics` (KEY, VALUE) VALUES ("metric::1", {
    "student_id": 1,
    "cpu_usage": 75.5,
    "memory_usage": 60.2,
    "network_traffic": 500.0,
    "disk_usage": 250.0,
    "network_latency": 20.5
});

-- Query to calculate percentage utilization
SELECT student_id, 
       ((cpu_usage + memory_usage) / 2) * 100 AS percentage_utilization 
FROM `PerformanceMetrics`;

Disse eksemplene viser hvordan du kan utføre lignende beregninger i forskjellige databaser ved hjelp av deres respektive spørringsspråk og funksjoner. MySQL og PostgreSQL har omfattende støtte for matematiske operasjoner, mens NoSQL-databaser som MongoDB og Redis har sine egne metoder for å utføre beregninger. Avhengig av hvilken database du bruker, kan syntaksen variere, men konseptene forblir de samme.

For å automatisere oppsettet av containere med forskjellige databaser, sette inn testdata, utføre sikkerhetskopiering og gjenoppretting, og logge alle operasjonene, kan vi bruke Docker Compose sammen med Bash-skript. Her er en trinnvis veiledning:

1. Sett opp Docker Compose

Opprett en docker-compose.yml fil for å definere alle databasene.

2. Opprett Bash-skript for automatisering

Skriptet vil laste ned avhengigheter, opprette containere, fylle dem med testdata, utføre sikkerhetskopiering og gjenoppretting, og logge alle operasjonene.

3. Opprett SQL- og NoSQL-skript for å fylle testdata og utføre spørringer

Her er en komplett løsning:

Trinn 1: Opprett docker-compose.yml

version: '3.8'

services:
  postgres:
    image: postgres:latest
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: testdb
    ports:
      - "5432:5432"
    volumes:
      - postgres-data:/var/lib/postgresql/data

  mariadb:
    image: mariadb:latest
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: testdb
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    ports:
      - "3306:3306"
    volumes:
      - mariadb-data:/var/lib/mysql

  mongodb:
    image: mongo:latest
    ports:
      - "27017:27017"
    volumes:
      - mongo-data:/data/db

  cassandra:
    image: cassandra:latest
    ports:
      - "9042:9042"
    volumes:
      - cassandra-data:/var/lib/cassandra

volumes:
  postgres-data:
  mariadb-data:
  mongo-data:
  cassandra-data:

Trinn 2: Opprett Bash-skript database_setup.sh

#!/bin/bash

# Start Docker containers
docker-compose up -d

# Wait for containers to be fully up and running
sleep 20

# PostgreSQL setup
echo "Setting up PostgreSQL..."
docker exec -i $(docker ps -qf "name=postgres") psql -U user -d testdb <<-EOSQL
CREATE TABLE PerformanceMetrics (
    metric_id SERIAL PRIMARY KEY,
    student_id INT,
    cpu_usage FLOAT,
    memory_usage FLOAT,
    network_traffic FLOAT,
    disk_usage FLOAT,
    network_latency FLOAT
);
INSERT INTO PerformanceMetrics (student_id, cpu_usage, memory_usage, network_traffic, disk_usage, network_latency) VALUES
(1, 75.5, 60.2, 500.0, 250.0, 20.5);
EOSQL

# MariaDB setup
echo "Setting up MariaDB..."
docker exec -i $(docker ps -qf "name=mariadb") mysql -u user -ppassword testdb <<-EOSQL
CREATE TABLE PerformanceMetrics (
    metric_id INT AUTO_INCREMENT PRIMARY KEY,
    student_id INT,
    cpu_usage FLOAT,
    memory_usage FLOAT,
    network_traffic FLOAT,
    disk_usage FLOAT,
    network_latency FLOAT
);
INSERT INTO PerformanceMetrics (student_id, cpu_usage, memory_usage, network_traffic, disk_usage, network_latency) VALUES
(1, 75.5, 60.2, 500.0, 250.0, 20.5);
EOSQL

# MongoDB setup
echo "Setting up MongoDB..."
docker exec -i $(docker ps -qf "name=mongodb") mongo testdb --eval '
db.PerformanceMetrics.insert({
    student_id: 1,
    cpu_usage: 75.5,
    memory_usage: 60.2,
    network_traffic: 500.0,
    disk_usage: 250.0,
    network_latency: 20.5
});
'

# Cassandra setup
echo "Setting up Cassandra..."
docker exec -i $(docker ps -qf "name=cassandra") cqlsh <<-EOSQL
CREATE KEYSPACE testdb WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
USE testdb;
CREATE TABLE PerformanceMetrics (
    student_id UUID PRIMARY KEY,
    cpu_usage float,
    memory_usage float,
    network_traffic float,
    disk_usage float,
    network_latency float
);
INSERT INTO PerformanceMetrics (student_id, cpu_usage, memory_usage, network_traffic, disk_usage, network_latency) VALUES
(now(), 75.5, 60.2, 500.0, 250.0, 20.5);
EOSQL

# Backup databases
echo "Backing up databases..."
docker exec -i $(docker ps -qf "name=postgres") pg_dump -U user -d testdb > postgres_backup.sql
docker exec -i $(docker ps -qf "name=mariadb") mysqldump -u user -ppassword testdb > mariadb_backup.sql
docker exec -i $(docker ps -qf "name=mongodb") mongoexport --db testdb --collection PerformanceMetrics --out mongo_backup.json
docker exec -i $(docker ps -qf "name=cassandra") cqlsh -e "COPY testdb.PerformanceMetrics TO '/var/lib/cassandra/data/cassandra_backup.csv'"

# Stop and remove containers
echo "Stopping and removing containers..."
docker-compose down

# Bring up containers again
echo "Bringing up containers again..."
docker-compose up -d
sleep 20

# Restore databases from backup
echo "Restoring PostgreSQL from backup..."
docker exec -i $(docker ps -qf "name=postgres") psql -U user -d testdb < postgres_backup.sql

echo "Restoring MariaDB from backup..."
docker exec -i $(docker ps -qf "name=mariadb") mysql -u user -ppassword testdb < mariadb_backup.sql

echo "Restoring MongoDB from backup..."
docker exec -i $(docker ps -qf "name=mongodb") mongoimport --db testdb --collection PerformanceMetrics --drop --file /mongo_backup.json

echo "Restoring Cassandra from backup..."
docker exec -i $(docker ps -qf "name=cassandra") cqlsh -e "COPY testdb.PerformanceMetrics FROM '/var/lib/cassandra/data/cassandra_backup.csv'"

# Log operations
echo "Logging operations..."
echo "Database operations completed on $(date)" > db_operations.log

# Shut down containers one by one
echo "Shutting down containers one by one..."
docker-compose stop postgres
docker-compose stop mariadb
docker-compose stop mongodb
docker-compose stop cassandra

echo "All operations completed successfully!"

Trinn 3: Kjør Skriptet

Gi kjøringsrettigheter til skriptet og kjør det.

chmod +x database_setup.sh
./database_setup.sh

Oppsummering

Dette skriptet utfører følgende:

  1. Starter Docker-containere for PostgreSQL, MariaDB, MongoDB og Cassandra.
  2. Venter på at alle containere skal starte opp.
  3. Oppretter nødvendige tabeller og setter inn testdata i hver database.
  4. Utfører sikkerhetskopiering av hver database.
  5. Stopper og fjerner containere.
  6. Starter opp containere igjen.
  7. Gjenoppretter data fra sikkerhetskopiering.
  8. Logger operasjonene.
  9. Stopper containere en etter en.

Dette gir en fullstendig automatisert måte å sette opp, teste og håndtere flere databaser på.

For å sette opp en praktisk lab for flere databaser som dekker emnene i fagene Database, Programmering og Linux og container, kan vi bruke Docker og Docker Compose for å håndtere flere databaseinstanser. Vi vil opprette nødvendige tabeller, sette inn testdata, kjøre spørringer, utføre sikkerhetskopiering og gjenoppretting, og logge operasjonene. Her er en omfattende guide for å gjøre dette.

1. Docker Compose Setup

Først oppretter vi en docker-compose.yml for å definere miljøet vårt med PostgreSQL, MariaDB, MongoDB og Cassandra.

version: '3.8'

services:
  postgres:
    image: postgres:latest
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: testdb
    ports:
      - "5432:5432"
    volumes:
      - postgres-data:/var/lib/postgresql/data

  mariadb:
    image: mariadb:latest
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: testdb
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    ports:
      - "3306:3306"
    volumes:
      - mariadb-data:/var/lib/mysql

  mongodb:
    image: mongo:latest
    ports:
      - "27017:27017"
    volumes:
      - mongo-data:/data/db

  cassandra:
    image: cassandra:latest
    ports:
      - "9042:9042"
    volumes:
      - cassandra-data:/var/lib/cassandra

volumes:
  postgres-data:
  mariadb-data:
  mongo-data:
  cassandra-data:

2. Oppretting av Bash-skript database_setup.sh

Dette skriptet vil håndtere oppsett av containere, sette inn testdata, utføre sikkerhetskopiering og gjenoppretting, og logge operasjonene.

#!/bin/bash

# Start Docker containers
docker-compose up -d

# Wait for containers to be fully up and running
sleep 20

# PostgreSQL setup
echo "Setting up PostgreSQL..."
docker exec -i $(docker ps -qf "name=postgres") psql -U user -d testdb <<-EOSQL
CREATE TABLE PerformanceMetrics (
    metric_id SERIAL PRIMARY KEY,
    student_id INT,
    cpu_usage FLOAT,
    memory_usage FLOAT,
    network_traffic FLOAT,
    disk_usage FLOAT,
    network_latency FLOAT
);
INSERT INTO PerformanceMetrics (student_id, cpu_usage, memory_usage, network_traffic, disk_usage, network_latency) VALUES
(1, 75.5, 60.2, 500.0, 250.0, 20.5);
EOSQL

# MariaDB setup
echo "Setting up MariaDB..."
docker exec -i $(docker ps -qf "name=mariadb") mysql -u user -ppassword testdb <<-EOSQL
CREATE TABLE PerformanceMetrics (
    metric_id INT AUTO_INCREMENT PRIMARY KEY,
    student_id INT,
    cpu_usage FLOAT,
    memory_usage FLOAT,
    network_traffic FLOAT,
    disk_usage FLOAT,
    network_latency FLOAT
);
INSERT INTO PerformanceMetrics (student_id, cpu_usage, memory_usage, network_traffic, disk_usage, network_latency) VALUES
(1, 75.5, 60.2, 500.0, 250.0, 20.5);
EOSQL

# MongoDB setup
echo "Setting up MongoDB..."
docker exec -i $(docker ps -qf "name=mongodb") mongo testdb --eval '
db.PerformanceMetrics.insert({
    student_id: 1,
    cpu_usage: 75.5,
    memory_usage: 60.2,
    network_traffic: 500.0,
    disk_usage: 250.0,
    network_latency: 20.5
});
'

# Cassandra setup
echo "Setting up Cassandra..."
docker exec -i $(docker ps -qf "name=cassandra") cqlsh <<-EOSQL
CREATE KEYSPACE testdb WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
USE testdb;
CREATE TABLE PerformanceMetrics (
    student_id UUID PRIMARY KEY,
    cpu_usage float,
    memory_usage float,
    network_traffic float,
    disk_usage float,
    network_latency float
);
INSERT INTO PerformanceMetrics (student_id, cpu_usage, memory_usage, network_traffic, disk_usage, network_latency) VALUES
(now(), 75.5, 60.2, 500.0, 250.0, 20.5);
EOSQL

# Backup databases
echo "Backing up databases..."
docker exec -i $(docker ps -qf "name=postgres") pg_dump -U user -d testdb > postgres_backup.sql
docker exec -i $(docker ps -qf "name=mariadb") mysqldump -u user -ppassword testdb > mariadb_backup.sql
docker exec -i $(docker ps -qf "name=mongodb") mongoexport --db testdb --collection PerformanceMetrics --out mongo_backup.json
docker exec -i $(docker ps -qf "name=cassandra") cqlsh -e "COPY testdb.PerformanceMetrics TO '/var/lib/cassandra/data/cassandra_backup.csv'"

# Stop and remove containers
echo "Stopping and removing containers..."
docker-compose down

# Bring up containers again
echo "Bringing up containers again..."
docker-compose up -d
sleep 20

# Restore databases from backup
echo "Restoring PostgreSQL from backup..."
docker exec -i $(docker ps -qf "name=postgres") psql -U user -d testdb < postgres_backup.sql

echo "Restoring MariaDB from backup..."
docker exec -i $(docker ps -qf "name=mariadb") mysql -u user -ppassword testdb < mariadb_backup.sql

echo "Restoring MongoDB from backup..."
docker exec -i $(docker ps -qf "name=mongodb") mongoimport --db testdb --collection PerformanceMetrics --drop --file /mongo_backup.json

echo "Restoring Cassandra from backup..."
docker exec -i $(docker ps -qf "name=cassandra") cqlsh -e "COPY testdb.PerformanceMetrics FROM '/var/lib/cassandra/data/cassandra_backup.csv'"

# Log operations
echo "Logging operations..."
echo "Database operations completed on $(date)" > db_operations.log

# Shut down containers one by one
echo "Shutting down containers one by one..."
docker-compose stop postgres
docker-compose stop mariadb
docker-compose stop mongodb
docker-compose stop cassandra

echo "All operations completed successfully!"

Trinn 3: Kjøre Skriptet

Gi kjøringsrettigheter til skriptet og kjør det.

chmod +x database_setup.sh
./database_setup.sh

Praktisk Bruk i Fagene

Emne: Database

  1. Databasesystem: Forstå og sammenligne forskjellige databasesystemer som PostgreSQL, MariaDB, MongoDB, og Cassandra.
  2. SQL: Lær å skrive SQL-spørringer for PostgreSQL og MariaDB.
  3. Normalisering: Utfør normalisering på tabeller i SQL-databasene.
  4. ER-diagram: Lag ER-diagrammer for å modellere databasene.
  5. Brukeradministrasjon: Administrer brukere og rettigheter i PostgreSQL og MariaDB.
  6. Indeksering: Opprett indekser for å forbedre spørringsytelse.
  7. Logging: Implementer logging av databaseoperasjoner.
  8. Backup og Restore: Utfør sikkerhetskopiering og gjenoppretting av databaser.
  9. Kryptering: Lær hvordan du kan kryptere data i SQL-databasene.
  10. Datavisualisering: Bruk verktøy som Grafana eller Tableau for å visualisere data fra databasene.
  11. Sikkerhet: Implementer sikkerhetstiltak i databaser som bruk av SSL/TLS, brukertilgang og kryptering.

Emne: Programmering

  1. Programstrukturer: Lær grunnleggende programstrukturer som variabler, kontrollstrukturer og løkker.
  2. Datastrukturer: Forstå og bruk datastrukturer som lister, stakker, køer og trær.
  3. Bibliotek: Bruk av standardbiblioteker i programmeringsspråk som Python.
  4. Funksjoner og metoder: Definer og bruk funksjoner og metoder.
  5. Objektorientert programmering: Utvikle programmer ved hjelp av OOP-prinsipper.
  6. Debugging, testing og unntaksbehandling: Bruk debugging-verktøy, skriv tester og håndter unntak.
  7. API: Bygg og bruk APIer for å kommunisere med databaser.
  8. GUI: Utvikle grafiske brukergrensesnitt.
  9. UML: Lag UML-diagrammer for å designe programvare.
  10. Filbehandling: Les og skriv til filer i forskjellige formater.
  11. Datasikkerhet: Implementer sikkerhetspraksiser i programmering.

Emne: Linux og Container

  1. Systemdrift: Administrer Linux-systemer.
  2. Linux distribusjoner: Utforsk ulike Linux-dis

tribusjoner. 3. Brukeradministrasjon: Administrer brukere og grupper i Linux. 4. Installasjon: Installer og konfigurer programvare på Linux. 5. Nettverk: Konfigurer nettverk i Linux. 6. Prosesser: Administrer prosesser og tjenester. 7. Terminal: Bruk terminalkommandoer for systemadministrasjon. 8. Pakkesystemer: Administrer programvarepakker med verktøy som apt, yum eller pacman. 9. Lagring og filsystemer: Konfigurer og administrer lagringsenheter og filsystemer. 10. Servertjenester: Sett opp og administrer servertjenester som webservere, databaseservere, etc. 11. Containere: Bruk Docker til å administrere containere. 12. Automatisering: Automatiser oppgaver med skripting og verktøy som Ansible. 13. Sikkerhet: Implementer sikkerhetstiltak på Linux-systemer.

Konklusjon

Dette lab-oppsettet gir en omfattende læringsplattform hvor du kan utforske og praktisere mange av de essensielle emnene innen databaser, programmering og Linux-administrasjon. Ved å bruke Docker og Docker Compose, får du en fleksibel og skalerbar løsning for å håndtere flere databaseinstanser og praktisere reelle operasjoner som sikkerhetskopiering og gjenoppretting, oppsett og konfigurasjon, samt datahåndtering.