Die detaillierte Aufgabenstellung beschreibt die notwendigen Schritte zur Realisierung.
- Erstellen eines neuen Models (WarehouseData)
- Anpassung des Java Codes (Application)
- Zum Testen erstellung & speichern von WarehouseData Objekten
- Finden von WarehouseData Objekten
- Erstellung von Kronjobs für die automatische Speicherung von WarehouseData Objekten
- Hinzufügen von Timestamps zu WarehouseData und ProductData mit LocalDateTime
- Queries bearbeiten, damit sie auch den Timestamp und die mehreren Warehouses mit derselben ID berücksichtigen
- Nennen Sie 4 Vorteile eines NoSQL Repository im Gegensatz zu einem relationalen DBMS
- Skalierbarkeit: Horizontal skalierbar, ideal für Big Data.
- Flexibles Schema: Ermöglicht unstrukturierte Daten, schnelle Iterationen.
- Leistung: Optimiert für schnelle Lese- und Schreibvorgänge.
- Verfügbarkeit: Entworfen für hohe Verfügbarkeit über verteilte Systeme.
- Nennen Sie 4 Nachteile eines NoSQL Repository im Gegensatz zu einem relationalen DBMS
- Standardisierung: Fehlt, was Lernkurve erhöht.
- Transaktionen: Eingeschränkte ACID-Transaktionsunterstützung.
- Konsistenz: Eventual Consistency kann zu Inkonsistenzen führen.
- Analysefähigkeit: Weniger robuste Abfrage- und Berichtsfunktionen.
- Welche Schwierigkeiten ergeben sich bei der Zusammenführung der Daten?
Unterschiede in Datenmodellen, Konsistenz und Skalierungsstrategien erschweren die Integration.
- Welche Arten von NoSQL Datenbanken gibt es?
- Nennen Sie einen Vertreter für jede Art?
- Dokument: MongoDB
- Schlüssel-Wert: Redis
- Spaltenorientiert: Cassandra
- Graph: Neo4j
- Beschreiben Sie die Abkürzungen CA, CP und AP in Bezug auf das CAP Theorem
- CA: Konsistenz und Verfügbarkeit, schwierig bei Netzwerkpartition.
- CP: Konsistenz und Partitionstoleranz, kann Verfügbarkeit beeinträchtigen.
- AP: Verfügbarkeit und Partitionstoleranz, kann Konsistenz beeinträchtigen.
- Mit welchem Befehl koennen Sie den Lagerstand eines Produktes aller Lagerstandorte anzeigen.
Aller Lagerstandorte:
db.warehouses.aggregate([
{$unwind: "$products"},
{$match: {"products.productId": "X"}},
{$group: {_id: null, totalQuantity: {$sum: "$products.quantity"}}}
])
- Mit welchem Befehl koennen Sie den Lagerstand eines Produktes eines bestimmten Lagerstandortes anzeigen.
Eines bestimmten Lagerstandortes:
db.warehouses.find(
{"warehouseId": "Y", "products.productId": "X"},
{"products.$": 1}
)
- Formulierung 3 sinnvollen Fragestellung für einen Anwendungsfall in der Zentrale und deren Abfragen in einer Mongo Shell
- Produkte mit geringem Bestand
Anwendungsfall: Identifizierung fast ausverkaufter Produkte.
MongoDB-Abfrage:
db.warehouseData.find({"productData.productQuantity": {$lt: 100}})
- Lagerbestand eines spezifischen Produkts
Anwendungsfall: Finden aller Lager mit Vorräten von "Ariel Waschmittel Color".
MongoDB-Abfrage:
db.warehouseData.find({"productData.productName": "Ariel Waschmittel Color"})
- Gesamtbestand eines Produkts
Anwendungsfall: Ermittlung der Gesamtzahl eines Produkts über alle Lager.
MongoDB-Abfrage:
db.warehouseData.aggregate([
{$unwind: "$productData"},
{$match: {"productData.productName": "Bio Orangensaft Sonne"}},
{$group: {_id: null, total: {$sum: "$productData.productQuantity"}}}
])
- Erstellen einer Batch-Datei
warehouse.bat:
cd Path\To\Application
gradle bootRun
- Task erstellen
Aufgabe im Task Scheduler erstellen
oder
Tool schtasks in Powerschell
schtasks /create /tn "Task" /tr "C:\Path\To\Application" /sc daily /st 14:00
- /tn: Der Name des Tasks
- /tr: Der Task zum Ausführen
- /sc: Abstände für die Ausführung
- /st: Uhrzeit für die Ausführung