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
ellerpgbench
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.*