Files
ihk-ausbildung/2-Ausbildungsjahr/LF8-Daten-bereitstellen/LF8-Notizen.md

183 lines
4.4 KiB
Markdown

# 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*