00TD02A_Copilot_Matematikk_AsCode_v3_del3 - itnett/FTD02N 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.

Se skriptet her

2. PostgreSQL

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

Se skriptet her

3. SQLite

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

Se skriptet her

4. MariaDB

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

Se skriptet her

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.

Se skriptet her

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.

Se skriptet her

11. Couchbase

Couchbase bruker N1QL (Couchbase Query Language).

Se skriptet her

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

Se skriptet her

Trinn 3: Kjør Skriptet

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

Se skriptet her

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.

Se skriptet her

Trinn 3: Kjøre Skriptet

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

Se skriptet her

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.