-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDesignentscheidungen
24 lines (18 loc) · 1.95 KB
/
Designentscheidungen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dokumentation der Designentscheidungen
Filme der Jahre 2010 und 2011
-----------------------------
Da es so viele Filme in der DB gibt, haben wir uns der Einfachheit halber entschieden zu überprüfen, ob im Filmtitel 2010 oder 2011 vorkommt. Daduch wird das Parsen erleichtert und beschleunigt. Am wichtigsten war uns, eine einigermaßen konsistente Datenbasis zu haben. Dadurch kann man schon mal eine Menge Filme schnell rauswerfen, die ohnehin nicht benötigt werden.
Primary Keys
------------
Wir haben uns dazu entschieden, sofern möglich, natürliche Primärschlüssel zu benutzen. Dadurch ist die Dateninegrität gewahrt, allerdings verbraucht der Filmtitel als Fremdschlüssel sehr viel Platz. Customer besitzen jedoch eine ID, weil sich der Primärschlüssel sonst aus sehr vielen Feldern zusammensetzen würde.
Parsen
------
Alle Dateien werden von einem AbstractParser in einzelne Tokens zerlegt, die dann von spezialisierten Parsern in INSERT Statements umgewandelt werden.
Alle Zeilen, die nicht korrekt geparst werden können, werden verworfen. Gleichnamige Personen (Schauspieler, Regisseure) werden nur einmal importiert, auch wenn sie mehrmals in den Listen auftauchen.
DB und Cache
------------
Wir benutzen PreparedStatements mit Batch-Execution, um effizient Daten in die DB einzufügen. Um die Konsistenz der Daten zu garantieren und die Geschwindgkeit zu erhöhen benutzen wir einen Cache für die meisten Daten (Movie, Actor, Director, usw.).
Der Zugriff auf die Datenbank erfolgt über ein java.sql.Connection-Singleton, das anfangs einmalig mit den Verbindungsdaten konfiguriert werden muss.
Preismodelle
------------
Grundgebühr pro Monat bedeutet bei uns pro Kalendermonat. Im Tarifmodell Flat haben wir den Zusatz, dass an jedem Tag der erste B-Movie kostenlos ist, ausgelassen. Zur Berechnung des Rabatts wäre es nötig, für jeden Kunden jeweils eine Liste der Tage des betreffenden Zeitraums mitzuführen, an denen der Rabatt bereits wahrgenommen wurde.