Initial commit: IHK Ausbildung materials
This commit is contained in:
182
2-Ausbildungsjahr/LF8-Daten-bereitstellen/LF8-Notizen.md
Normal file
182
2-Ausbildungsjahr/LF8-Daten-bereitstellen/LF8-Notizen.md
Normal file
@@ -0,0 +1,182 @@
|
||||
# LF 8: Daten systemübergreifend bereitstellen
|
||||
|
||||
> **2. Ausbildungsjahr** | Zeitrichtwert: **80 Stunden**
|
||||
|
||||
## Kernkompetenz
|
||||
|
||||
Die Schülerinnen und Schüler besitzen die Kompetenz, Daten aus dezentralen Quellen zusammenzuführen, aufzubereiten und zur weiteren Nutzung zur Verfügung zu stellen.
|
||||
|
||||
---
|
||||
|
||||
## Lernziele
|
||||
|
||||
Nach diesem Lernfeld kannst du:
|
||||
- [ ] Datenquellen analysieren und bewerten
|
||||
- [ ] Heterogene Datenquellen integrieren
|
||||
- [ ] Daten für die Weiterverarbeitung aufbereiten
|
||||
- [ ] APIs und Schnittstellen nutzen
|
||||
- [ ] Datenbanksysteme anbinden
|
||||
- [ ] Dokumentation erstellen
|
||||
|
||||
---
|
||||
|
||||
## Datenquellen
|
||||
|
||||
### Typen
|
||||
|
||||
```
|
||||
DATENQUELLEN
|
||||
├── Relationale Datenbanken
|
||||
│ ├── MySQL/MariaDB
|
||||
│ ├── PostgreSQL
|
||||
│ └── MS SQL Server
|
||||
├── NoSQL-Datenbanken
|
||||
│ ├── MongoDB (Dokument)
|
||||
│ ├── Redis (Key-Value)
|
||||
│ └── Cassandra (Spaltenorientiert)
|
||||
├── Dateien
|
||||
│ ├── CSV, JSON, XML
|
||||
│ └── Excel, PDF
|
||||
├── Web-Services
|
||||
│ ├── REST-APIs
|
||||
│ └── SOAP
|
||||
└── Cloud-Dienste
|
||||
└── AWS S3, Azure Blob, etc.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Datenintegration
|
||||
|
||||
### ETL-Prozess
|
||||
|
||||
```
|
||||
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
|
||||
│ Extract │ → │ Transform│ → │ Load │ → │ Target │
|
||||
└─────────┘ └─────────┘ └─────────┘ └─────────┘
|
||||
│ │
|
||||
│ Bereinigung │
|
||||
│ Konvertierung │
|
||||
│ Aggregation │
|
||||
```
|
||||
|
||||
### Herausforderungen
|
||||
|
||||
- **Datenqualität**: Vollständigkeit, Konsistenz
|
||||
- **Formate**: Unterschiedliche Strukturen
|
||||
- **Latenz**: Echtzeit vs. Batch
|
||||
- **Security**: Authentifizierung, Autorisierung
|
||||
|
||||
---
|
||||
|
||||
## APIs (Application Programming Interface)
|
||||
|
||||
### REST-Prinzipien
|
||||
|
||||
```
|
||||
REST-Konventionen:
|
||||
├── Ressourcenorientiert (Nomen)
|
||||
├── HTTP-Methoden nutzen
|
||||
│ ├── GET → Lesen
|
||||
│ ├── POST → Erstellen
|
||||
│ ├── PUT → Ersetzen
|
||||
│ ├── PATCH → Teilaktualisierung
|
||||
│ └── DELETE → Löschen
|
||||
├── Statuscodes
|
||||
│ ├── 200 OK
|
||||
│ ├── 201 Created
|
||||
│ ├── 400 Bad Request
|
||||
│ ├── 401 Unauthorized
|
||||
│ └── 404 Not Found
|
||||
└── Stateless (zustandslos)
|
||||
```
|
||||
|
||||
### API-Beispiel
|
||||
|
||||
```python
|
||||
# Python REST-API mit Flask
|
||||
from flask import Flask, jsonify, request
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
# GET - Daten abrufen
|
||||
@app.route('/api/kunden', methods=['GET'])
|
||||
def get_kunden():
|
||||
return jsonify(kunden_liste)
|
||||
|
||||
# POST - Daten erstellen
|
||||
@app.route('/api/kunden', methods=['POST'])
|
||||
def create_kunde():
|
||||
daten = request.json
|
||||
kunden_liste.append(daten)
|
||||
return jsonify(daten), 201
|
||||
|
||||
# PUT - Daten aktualisieren
|
||||
@app.route('/api/kunden/<int:id>', methods=['PUT'])
|
||||
def update_kunde(id):
|
||||
daten = request.json
|
||||
for i, k in enumerate(kunden_liste):
|
||||
if k['id'] == id:
|
||||
kunden_liste[i] = daten
|
||||
return jsonify(daten)
|
||||
return jsonify({'error': 'Not found'}), 404
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Datenbank-Anbindung
|
||||
|
||||
### Python mit SQLAlchemy
|
||||
|
||||
```python
|
||||
from sqlalchemy import create_engine, Column, Integer, String
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
|
||||
Base = declarative_base()
|
||||
|
||||
class Kunde(Base):
|
||||
__tablename__ = 'kunden'
|
||||
id = Column(Integer, primary_key=True)
|
||||
name = Column(String(100))
|
||||
email = Column(String(255))
|
||||
|
||||
# Verbindung herstellen
|
||||
engine = create_engine('sqlite:///kunden.db')
|
||||
Base.metadata.create_all(engine)
|
||||
Session = sessionmaker(bind=engine)
|
||||
session = Session()
|
||||
|
||||
# Daten abfragen
|
||||
for kunde in session.query(Kunde).all():
|
||||
print(f"{kunde.id}: {kunde.name}")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Handlungsphasen
|
||||
|
||||
1. **Analysieren**: Datenquellen identifizieren, Strukturen verstehen
|
||||
2. **Planen**: Integrationskonzept erstellen
|
||||
3. **Entwickeln**: Schnittstellen implementieren
|
||||
4. **Testen**: Datenfluss prüfen
|
||||
5. **Dokumentieren**: Handhabung beschreiben
|
||||
|
||||
---
|
||||
|
||||
## Prüfungsrelevanz
|
||||
|
||||
- Wichtig für LF 12a (Abschlussprojekt)
|
||||
- Datenintegration in Projekten
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[2-Ausbildungsjahr/LF7-Cyber-physische-Systeme|Vorher: LF 7]]
|
||||
- [[2-Ausbildungsjahr/LF9-Netzwerke-Dienste|Nachher: LF 9]]
|
||||
- [[Programmiersprachen/Python|Python Vertiefung]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024 | Quelle: KMK Rahmenlehrplan 13.12.2019*
|
||||
Reference in New Issue
Block a user