20TD02U_ForAlle_Blooms_Side_62_Database_env - itnett/FTD02H-N GitHub Wiki

Forståelsen av oppbygging, virkemåte og bruk av databaser i forskjellige driftsmiljøer er avgjørende for å kunne tilpasse databasesystemer til ulike behov og situasjoner. Her vil vi dekke emnet ved å bruke Blooms taksonomi, som vil ta deg fra grunnleggende forståelse til avansert bruk av databaser i forskjellige driftsmiljøer. Vi vil inkludere logiske, programmatiske og praktiske eksempler som dekker både relasjonsdatabaser og NoSQL-databaser i on-premises, cloud, og hybridmiljøer.

Videregående Skole Nivå

1. Kunnskap (Remembering)

Emne: Grunnleggende Oppbygging av Databaser

  • Logisk tilnærming: Lær de grunnleggende komponentene i en database, inkludert tabeller, rader, kolonner, indekser, og relasjoner.
  • Programmatisk tilnærming: Implementer en enkel database med en tabell som lagrer grunnleggende data.
  • Praktisk tilnærming: Opprett en tabell i en lokal database og legg inn noen eksempler på data.
-- Opprett en enkel tabell i MySQL
CREATE TABLE ansatte (
    ansatt_id INT PRIMARY KEY,
    navn VARCHAR(50),
    stilling VARCHAR(50),
    lønn DECIMAL(10, 2)
);

-- Sett inn noen eksempeldata
INSERT INTO ansatte (ansatt_id, navn, stilling, lønn) VALUES (1, 'Ola Nordmann', 'Utvikler', 60000.00);

2. Forståelse (Understanding)

Emne: Virkemåte for Relasjonsdatabaser og NoSQL-Databaser

  • Logisk tilnærming: Forstå forskjellene mellom relasjonsdatabaser (RDBMS) og NoSQL-databaser, inkludert hvordan de strukturerer og lagrer data.
  • Programmatisk tilnærming: Implementer en enkel NoSQL-database ved hjelp av MongoDB, og sammenlign den med en relasjonsdatabase som MySQL.
  • Praktisk tilnærming: Lag en MongoDB-samling og legg inn data, og sammenlign med en SQL-tabell.
# Eksempel på å legge inn data i MongoDB
from pymongo import MongoClient

# Koble til MongoDB
client = MongoClient('localhost', 27017)
db = client['bedrift']
samling = db['ansatte']

# Sett inn dokumenter (tilsvarer rader i en SQL-tabell)
samling.insert_one({'ansatt_id': 1, 'navn': 'Ola Nordmann', 'stilling': 'Utvikler', 'lønn': 60000.00})

# Hent data
for ansatt in samling.find():
    print(ansatt)

Høyskole Nivå

3. Anvendelse (Applying)

Emne: Databasedrift i On-Premises og Cloud-Miljøer

  • Logisk tilnærming: Lær hvordan databaser kan driftes både on-premises (lokalt) og i skyen, inkludert fordeler og ulemper ved begge tilnærmingene.
  • Programmatisk tilnærming: Implementer en database i en skyløsning som AWS RDS eller Azure SQL Database, og sammenlign dette med å sette opp en database lokalt.
  • Praktisk tilnærming: Sett opp en enkel MySQL-database lokalt, og en tilsvarende database i AWS RDS, og sammenlign hvordan de administreres.
# AWS CLI for å opprette en RDS-database
aws rds create-db-instance \
    --db-instance-identifier mydatabase \
    --db-instance-class db.t2.micro \
    --engine mysql \
    --allocated-storage 20 \
    --master-username admin \
    --master-user-password secret99 \
    --backup-retention-period 7

4. Analyse (Analyzing)

Emne: Analyse av Databasedrift i Hybridmiljøer

  • Logisk tilnærming: Forstå hvordan databaser kan driftes i et hybridmiljø, der deler av dataene er lagret lokalt og andre deler er i skyen, og hvordan dette påvirker ytelse og sikkerhet.
  • Programmatisk tilnærming: Implementer en hybrid løsning der data er delt mellom en lokal database og en skydatabase.
  • Praktisk tilnærming: Analyser hvordan data kan synkroniseres mellom en lokal MySQL-database og en AWS RDS-instans.
# Bruk av MySQL Workbench for å sette opp replikering mellom en lokal database og AWS RDS
# Start replikering for å holde data synkronisert mellom on-premises og cloud
CHANGE MASTER TO MASTER_HOST='rds-endpoint.amazonaws.com',
MASTER_USER='replica_user',
MASTER_PASSWORD='replica_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;

START SLAVE;

Universitets Nivå

5. Syntese (Synthesizing)

Emne: Design av Distribuerte Databasesystemer

  • Logisk tilnærming: Kombiner kunnskap om databasetyper og driftsmiljøer for å designe et distribuert databasesystem som kan håndtere store mengder data på tvers av flere geografiske steder.
  • Programmatisk tilnærming: Implementer et distribuert databasesystem ved hjelp av verktøy som Apache Cassandra eller Google Spanner.
  • Praktisk tilnærming: Sett opp et distribuert system med MongoDB Sharding eller Cassandra for å håndtere høy tilgjengelighet og skalerbarhet på tvers av flere datasentre.
# Eksempel på å sette opp MongoDB Sharding
mongod --shardsvr --replSet rs0 --dbpath /var/lib/mongo --port 27018
mongod --configsvr --replSet configReplSet --dbpath /var/lib/mongo/config --port 27019
mongos --configdb configReplSet/localhost:27019 --port 27017

# Legg til en shard
mongo --eval "sh.addShard('rs0/localhost:27018')"

6. Evaluering (Evaluating)

Emne: Evaluering av Ytelse og Skalerbarhet i Ulike Driftsmiljøer

  • Logisk tilnærming: Lær hvordan du evaluerer ytelse og skalerbarhet i forskjellige databasedriftsmiljøer, inkludert hvordan forskjellige konfigurasjoner påvirker responstid og dataintegritet.
  • Programmatisk tilnærming: Bruk verktøy som sysbench eller pgbench for å teste ytelsen til databaser i ulike miljøer.
  • Praktisk tilnærming: Utfør en ytelsestest på en database satt opp i et cloud-miljø og sammenlign resultatene med en tilsvarende lokal database.
# Bruk sysbench til å benchmarke MySQL i forskjellige miljøer
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=testdb --mysql-user=root --mysql-password=secret prepare
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=testdb --mysql-user=root --mysql-password=secret run

7. Skapelse (Creating)

Emne: Utvikling av Avanserte Databaseløsninger for Kompleks Infrastruktur

  • Logisk tilnærming: Design og implementer en avansert databaseløsning som kan håndtere store datamengder, høy tilgjengelighet, og sikkerhet i komplekse infrastrukturer.
  • Programmatisk tilnærming: Implementer en database med høy tilgjengelighet og disaster recovery-funksjoner, som replikerte databaser med automatisert failover.
  • Praktisk tilnærming: Bygg et komplett databasesystem med høy tilgjengelighet ved å bruke Galera Cluster for MySQL eller Always On Availability Groups i SQL Server.
# Eksempel på å sette opp en Galera Cluster for MySQL
# Start tre MySQL noder som skal delta i clusteren
service mysql start --wsrep-new-cluster
mysql -u root -e "SET GLOBAL wsrep_cluster_address='gcomm://192.168.0.1,192.168.0.2,192.168.0.3';"

Konklusjon

Denne fullstendige tilnærmingen til oppbygging, virkemåte og bruk av databaser i forskjellige driftsmiljøer dekker alle nivåer fra videregående skole til universitetsnivå, basert på Blooms taksonomi. Ved å bruke praktiske, logiske og programmatiske eksempler, vil du utvikle en dyp forståelse av hvordan databaser kan settes opp, driftes og optimaliseres i forskjellige miljøer, inkludert on-premises, cloud, og hybridløsninger.


*Denne veiledningen er designet for studenter, utviklere, og IT-fagfolk som ønsker en grundig forståelse av hvordan databaser fungerer og kan

tilpasses forskjellige driftsmiljøer for å møte spesifikke behov innen skalerbarhet, sikkerhet og ytelse.*