4.4 KiB
4.4 KiB
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 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
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
- Analysieren: Datenquellen identifizieren, Strukturen verstehen
- Planen: Integrationskonzept erstellen
- Entwickeln: Schnittstellen implementieren
- Testen: Datenfluss prüfen
- Dokumentieren: Handhabung beschreiben
Prüfungsrelevanz
- Wichtig für LF 12a (Abschlussprojekt)
- Datenintegration in Projekten
Querverweise
- 2-Ausbildungsjahr/LF7-Cyber-physische-Systeme
- 2-Ausbildungsjahr/LF9-Netzwerke-Dienste
- Programmiersprachen/Python
Stand: 2024 | Quelle: KMK Rahmenlehrplan 13.12.2019