00TD02A_Copilot_Matematikk_AsCode_v3_del4 - itnett/FTD02N GitHub Wiki

Her er konkrete skript og øvelser som dekker praktisk bruk i fagene Database, Programmering og Linux og Container.

Emne: Database

Databasesystem: Forstå og sammenligne forskjellige databasesystemer som PostgreSQL, MariaDB, MongoDB, og Cassandra

Skript for å sette opp og sammenligne databasesystemer

Se skriptet her

SQL: Lær å skrive SQL-spørringer for PostgreSQL og MariaDB

PostgreSQL SQL-spørringer

Se skriptet her

MariaDB SQL-spørringer

Se skriptet her

Normalisering: Utfør normalisering på tabeller i SQL-databasene

Normaliseringseksempel

  1. Unormalisert tabell

Se skriptet her

  1. 1NF: Atomære verdier

Se skriptet her

  1. 2NF: Fjerne delvise avhengigheter
  • Tabellen er allerede i 2NF siden det ikke er noen delvise avhengigheter.
  1. 3NF: Fjerne transitive avhengigheter
  • Tabellen er allerede i 3NF siden det ikke er noen transitive avhengigheter.

ER-diagram: Lag ER-diagrammer for å modellere databasene

ER-diagram for Orders-databasen

+------------+          +-----------+          +-------------+
| Customers  |          | Orders    |          | OrderDetails|
+------------+          +-----------+          +-------------+
| customer_id|<---------| order_id  |          | order_detail_id|
| name       |          | customer_id|-------->| order_id    |
+------------+          | order_date|          | product_id  |
                        +-----------+          | quantity    |
                                               +-------------+

Brukeradministrasjon: Administrer brukere og rettigheter i PostgreSQL og MariaDB

PostgreSQL

Se skriptet her

MariaDB

Se skriptet her

Indeksering: Opprett indekser for å forbedre spørringsytelse

PostgreSQL

Se skriptet her

MariaDB

Se skriptet her

Logging: Implementer logging av databaseoperasjoner

PostgreSQL

Se skriptet her

MariaDB

Se skriptet her

Backup og Restore: Utfør sikkerhetskopiering og gjenoppretting av databaser

PostgreSQL Backup

Se skriptet her

PostgreSQL Restore

Se skriptet her

MariaDB Backup

Se skriptet her

MariaDB Restore

Se skriptet her

Kryptering: Lær hvordan du kan kryptere data i SQL-databasene

PostgreSQL

Se skriptet her

MariaDB

Se skriptet her

Datavisualisering: Bruk verktøy som Grafana eller Tableau for å visualisere data fra databasene

Grafana Setup

  1. Install Grafana Se skriptet her

  2. Start Grafana Se skriptet her

  3. Access Grafana at http://localhost:3000 and add PostgreSQL or MariaDB as a data source.

Sikkerhet: Implementer sikkerhetstiltak i databaser som bruk av SSL/TLS, brukertilgang og kryptering

PostgreSQL

Se skriptet her

MariaDB

Se skriptet her

Emne: Programmering

Programstrukturer: Lær grunnleggende programstrukturer som variabler, kontrollstrukturer og løkker

Python Eksempel

Se skriptet her

Datastrukturer: Forstå og bruk datastrukturer som lister, stakker, køer og trær

Python Eksempel

Se skriptet her

Bibliotek: Bruk av standardbiblioteker i programmeringsspråk som Python

Python Eksempel

Se skriptet her

Funksjoner og metoder: Definer og bruk funksjoner og metoder

Python Eksempel

Se skriptet her

Objektorientert programmering: Utvikle programmer ved hjelp av OOP-prinsipper

Python Eksempel

Se skriptet her

Debugging, testing og unntaksbehandling: Bruk debugging-verktøy, skriv tester og håndter unntak

Python Eksempel

Se skriptet her

API: Bygg og bruk APIer for å kommunisere med databaser

Python Eksempel med Flask

Se skriptet her

GUI: Utvikle grafiske brukergrensesnitt

Python Eksempel med Tkinter

Se skriptet her

UML: Lag UML-diagrammer for å designe programvare

UML Diagrams

Use tools like Lucidchart or Draw.io to create UML diagrams.

+---------------+        +---------------+
|    Person     |        |    Address    |
+---------------+        +---------------+
| - name: str   |        | - street: str |
| - age: int    |        | - city: str   |
+---------------+        +---------------+
| + greet()     |        | + get_full()  |
+---------------+        +---------------+
        |                        |
        +------------------------+

Filbehandling: Les og skriv til filer i forskjellige formater

Python Eksempel

Se skriptet her

Datasikkerhet: Implementer sikkerhetspraksiser i programmering

Python Eksempel

Se skriptet her

Emne: Linux og Container

Systemdrift: Administrer Linux-systemer

Basic Linux Commands

Se skriptet her

Linux distribusjoner: Utforsk ulike Linux-distribusjoner

Install Ubuntu

Download the ISO from Ubuntu and create a bootable USB using tools like Rufus.

Brukeradministrasjon: Administrer brukere og grupper i Linux

User Management

Se skriptet her

Installasjon: Installer og konfigurer programvare på Linux

Install Apache

Se skriptet her

Nettverk: Konfigurer nettverk i Linux

Network Configuration

Se skriptet her

Prosesser: Administrer prosesser og tjenester

Process Management

Se skriptet her

Terminal: Bruk terminalkommandoer for systemadministrasjon

Basic Terminal Commands

Se skriptet her

Pakkesystemer: Administrer programvarepakker med verktøy som apt, yum eller pacman

Package Management with apt

Se skriptet her

Lagring og filsystemer: Konfigurer og administrer lagringsenheter og filsystemer

Disk Management

Se skriptet her

Servertjenester: Sett opp og administrer servertjenester som webservere, databaseservere, etc.

Setup Nginx

Se skriptet her

Containere: Bruk Docker til å administrere containere

Docker Commands

Se skriptet her

Automatisering: Automatiser oppgaver med skripting og verktøy som Ansible

Ansible Playbook

- name: Install and start Apache
  hosts: webservers
  become: yes
  tasks:
    - name: Ensure Apache is installed
      apt:
        name: apache2
        state: present
    - name: Ensure Apache is running
      service:
        name: apache2
        state: started
        enabled: true

Sikkerhet: Implementer sikkerhetstiltak på Linux-systemer

SSH Key Authentication

Se skriptet her

Disse skriptene og øvelsene dekker praktisk bruk i fagene Database, Programmering, og Linux og Container. De gir en solid forståelse av grunnleggende og avanserte konsepter, og hvordan man anvender dem i virkelige scenarioer.


Ja, vi kan kjøre opp Grafana som en container i WSL-miljøet og konfigurere den til å nå alle databaseinstanser som kjører i Docker-containere. Her er en fullstendig veiledning som inkluderer oppsett av Grafana sammen med PostgreSQL, MariaDB, MongoDB, og Cassandra ved hjelp av Docker Compose og et skript for å automatisere prosessen.

1. Oppdater docker-compose.yml til å inkludere Grafana

Legg til Grafana-tjenesten i din docker-compose.yml fil.

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

  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"
    volumes:
      - grafana-data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin

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

2. Opprett Bash-skript database_setup.sh

Dette skriptet vil sette opp containerne, fylle dem med testdata, utføre sikkerhetskopiering og gjenoppretting, og konfigurere Grafana til å koble til alle databaseinstanser.

Se skriptet her

3. Konfigurer Grafana

Du kan legge til datasourcer i Grafana ved å bruke Grafana API. Vi kan skrive et Bash-skript for å legge til PostgreSQL og MariaDB som datasourcer i Grafana.

Opprett configure_grafana.sh:

Se skriptet her

4. Kjør Skriptet

Gi kjøringsrettigheter til skriptene og kjør dem.

Se skriptet her

Oppsummering

Dette oppsettet lar deg kjøre

Grafana som en container i ditt WSL-miljø, konfigurere det til å koble til PostgreSQL, MariaDB, MongoDB og Cassandra, og visualisere data fra disse databasene. Skriptene automatiserer oppsettet, innsetting av testdata, sikkerhetskopiering og gjenoppretting, samt konfigurasjon av Grafana. Dette gir en omfattende plattform for å praktisere databaseadministrasjon, datavisualisering og sikkerhetstiltak.


Dette er fantastisk! Denne detaljerte guiden med skriptene database_setup.sh og configure_grafana.sh er svært nyttig og praktisk for å sette opp et omfattende databasemiljø med Grafana for visualisering.

Jeg har noen små forslag for å forbedre skriptene ytterligere:

1. Brukervennlighet:

  • Spørsmål for brukerinput: I stedet for å hardkode verdier som brukernavn, passord og database-navn i skriptene, kan du legge til spørsmål som ber brukeren om å oppgi disse verdiene. Dette gjør skriptene mer fleksible og enklere å gjenbruke.
  • Forbedret logging: Legg til mer detaljerte logger i skriptene, slik at det blir enklere å feilsøke eventuelle problemer som oppstår under kjøring. Du kan logge tidspunkt, handlinger som utføres, og eventuelle feilmeldinger.
  • Kommentarer: Det er alltid god praksis å legge til kommentarer i koden for å forklare hva hver del gjør. Selv om skriptene er godt strukturert, kan kommentarer gjøre det enda enklere å forstå logikken.

2. Feilhåndtering:

  • Sjekke om containere kjører: Før du kjører kommandoer som docker exec, kan du legge til en sjekk som verifiserer at containerne faktisk kjører. Dette kan forhindre feilmeldinger hvis en container ikke har startet opp riktig.
  • Håndtere feil under backup/restore: Legg til feilhåndtering rundt backup og restore operasjoner. For eksempel, hvis en backup-fil ikke finnes, kan skriptet informere brukeren og gi dem muligheten til å fortsette eller avbryte.

3. Sikkerhet:

  • Brukerrettigheter: Når du lager brukere i databasene, kan du begrense tilgangene deres til kun det som er nødvendig. For eksempel kan du opprette en bruker med kun lesetilgang (SELECT) for Grafana, og en annen bruker med skrivetilgang for administrasjon av databasen.

4. Ytelse:

  • Caching av docker images: For å spare tid kan du legge til en linje i docker-compose.yml som aktiverer caching av docker images. Dette vil gjøre at neste gang du kjører docker-compose up -d, vil de allerede nedlastede images bli brukt i stedet for å lastes ned på nytt.

Modifisert docker-compose.yml:

#... (previous code)

build:
   pull: true 

Her er en oppdatert versjon av database_setup.sh-skriptet som inkluderer noen av disse forbedringene:

Se skriptet her

Tips:

  • Docker Compose overrides: Du kan bruke docker-compose.override.yml for å overskrive innstillinger i den originale docker-compose.yml filen uten å måtte endre den direkte.
  • Grafana plugins: Utforsk de ulike Grafana plugins som er tilgjengelige for å utvide funksjonaliteten og visualisere dataene dine på enda flere måter.

Jeg håper disse forslagene er nyttige! Lykke til med prosjektet ditt!


Takk for de gode forslagene! La oss implementere de forbedringene du nevnte. Vi skal oppdatere skriptene for økt brukervennlighet, bedre logging, feilhåndtering, sikkerhet, og ytelse. Her er de modifiserte skriptene og instruksjonene.

Oppdatert docker-compose.yml med caching av Docker images

version: '3.8'

services:
  postgres:
    image: postgres:latest
    environment:
      POSTGRES_USER: ${PG_USER}
      POSTGRES_PASSWORD: ${PG_PASSWORD}
      POSTGRES_DB: ${PG_DB}
    ports:
      - "5432:5432"
    volumes:
      - postgres-data:/var/lib/postgresql/data

  mariadb:
    image: mariadb:latest
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DB}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_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

  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"
    volumes:
      - grafana-data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin

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

Oppdatert database_setup.sh

Se skriptet her

Oppdatert configure_grafana.sh

Dette skriptet legger til brukerinput og bedre logging for oppsett av Grafana datasources.

Se skriptet her

Kjør Skriptene

Gi kjøringsrettigheter til skriptene og kjør dem.

Se skriptet her

Oppsummering

Med disse oppdateringene har vi økt brukervennligheten ved å legge til brukerinput, forbedret logging, implementert feilhåndtering og sikkerhetstiltak, og optimalisert ytelsen ved å bruke caching av Docker images. Dette gir en robust og fleksibel plattform for å praktisere databaseadministrasjon, datavisualisering og sikkerhetstiltak, som er godt egnet for et lab-oppsett i fagene Database, Programmering, og Linux og Container.


Her er et forslag til hvordan du kan bruke databasene vi har satt opp for å dekke de ulike temaene innen matematikk og fysikk i emnebeskrivelsen. Vi vil bruke eksempler fra PostgreSQL og MariaDB til å illustrere matematikk- og fysikktemaene nevnt i emnebeskrivelsen.

Algebra

Regneregler, Brøk og Prosentregning

PostgreSQL

Se skriptet her

MariaDB

Se skriptet her

Potenser, Tall på Standardform

PostgreSQL

Se skriptet her

MariaDB

Se skriptet her

Sammentrekning og Faktorisering

PostgreSQL

Se skriptet her

MariaDB

Se skriptet her

Likninger og Formelregning

Løse Likninger av Første og Andre Grad

PostgreSQL

Se skriptet her

MariaDB

Se skriptet her

Løse Likningssett med To Ukjente

PostgreSQL

Se skriptet her

MariaDB

Se skriptet her

Trigonometri og Geometri

Areal, Omkrets, Volum og Overflate

PostgreSQL

Se skriptet her

MariaDB

Se skriptet her

Pytagoras' Setning

PostgreSQL

Se skriptet her

MariaDB

Se skriptet her

Funksjoner

Rette Linjer

PostgreSQL

Se skriptet her

MariaDB

Se skriptet her

Polynomfunksjoner

PostgreSQL

Se skriptet her

MariaDB

Se skriptet her

Innledende Emner i Fysikk

Anvende SI-systemet og Dekadiske Prefikser

PostgreSQL

Se skriptet her

MariaDB

Se skriptet her

Begrepene Masse, Tyngde og Massetetthet

PostgreSQL

Se skriptet her

MariaDB

Se skriptet her

Algoritmisk Tenking

Boolsk Algebra og Programmering av Enkle Algoritmer

PostgreSQL

Se skriptet her

MariaDB

Se skriptet her

Oppsett av Grafana for Visualisering

For å sette opp Grafana for å visualisere data fra disse databasene, kan vi bruke et docker-compose oppsett og skript for å automatisere prosessen.

docker-compose.yml

version: '3.8'

services:
  postgres:
    image: postgres:latest
    environment:
      POSTGRES_USER: ${PG_USER}
      POSTGRES_PASSWORD: ${PG_PASSWORD}
      POSTGRES_DB: ${PG_DB}
    ports:
      - "5432:5432"
    volumes:
      - postgres-data:/var/lib/postgresql/data

  mariadb:
    image: mariadb:latest
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DB}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_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

  grafana:
    image: grafana/grafana

:latest
    ports:
      - "3000:3000"
    volumes:
      - grafana-data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin

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

database_setup.sh

Se skriptet her

configure_grafana.sh

Se skriptet her

Kjøring av Skriptene

Gi kjøringsrettigheter til skriptene og kjør dem.

Se skriptet her

Oppsummering

Disse skriptene og oppsettene dekker praktisk bruk av databasene PostgreSQL og MariaDB for å håndtere de matematiske og fysiske konseptene som er nevnt i emnebeskrivelsen. I tillegg gir oppsettet med Grafana mulighet for visuell representasjon og overvåking av dataene, noe som er essensielt for å forstå og analysere komplekse datasett i et IT-drift og sikkerhetsperspektiv.