Migration QualificationBlockedDue und LmsStatus #75

Closed
opened 2023-05-24 17:55:02 +02:00 by jost · 8 comments
jost commented 2023-05-24 17:55:02 +02:00 (Migrated from gitlab.uniworx.de)

Problem

Die folgenden Datentypen sind aus historischen Gründen in der DB nicht in Normalform gespeichert (sind erst später komplexer geworden):

data QualificationBlocked = QualificationBlocked { qualificationBlockedDay    :: Day
                                                 , qualificationBlockedReason :: Text 
                                                 } 
  deriving (Eq, Ord, Read, Show, Generic, NFData)

data LmsStatus = LmsBlocked { lmsStatusDay :: Day }
               | LmsExpired { lmsStatusDay :: Day }
               | LmsSuccess { lmsStatusDay :: Day }
  deriving (Eq, Read, Show, Generic, NFData)

Dadurch ist es sehr ineffizient, wenn in der Datenbank nach dem Datum gefiltert werden muss, da erst aus dem jsonb Typ ein Text projiziert wird der dann per cast in ein Datum gewandelt wird. Dies geschieht zeilenweise und insbesondere ohne DB Index.

Warum Refactoring?

  • Inzwischen ist klar, dass entgegen vorheriger Annahmen solche Filterungen und Sortierungen erwünscht sind.
  • Weiterhin wird eine Block/Unblock-Historie gewünscht, siehe #37 und #79

Aufwand

  • Jeder Datentyp wird durch eine eigene Tabelle ersetzt
  • Es müssen entsprechende LeftJoins eingebaut werden
  • Wenn eine Historie (nur bei QualifikationBlocked) gebraucht wird, fällt die Uniqueness Constraint in der DB weg; der Nachteil ist dann, dass statt einem Join ein Subselect notwendig ist, damit keine Zeilen dupliziert werden

Branch fradrive/lms-type-refactor

## Problem Die folgenden Datentypen sind aus historischen Gründen in der DB nicht in Normalform gespeichert (sind erst später komplexer geworden): ``` data QualificationBlocked = QualificationBlocked { qualificationBlockedDay :: Day , qualificationBlockedReason :: Text } deriving (Eq, Ord, Read, Show, Generic, NFData) data LmsStatus = LmsBlocked { lmsStatusDay :: Day } | LmsExpired { lmsStatusDay :: Day } | LmsSuccess { lmsStatusDay :: Day } deriving (Eq, Read, Show, Generic, NFData) ``` Dadurch ist es sehr ineffizient, wenn in der Datenbank nach dem Datum gefiltert werden muss, da erst aus dem jsonb Typ ein Text projiziert wird der dann per cast in ein Datum gewandelt wird. Dies geschieht zeilenweise und insbesondere ohne DB Index. ## Warum Refactoring? - Inzwischen ist klar, dass entgegen vorheriger Annahmen solche Filterungen und Sortierungen erwünscht sind. - Weiterhin wird eine Block/Unblock-Historie gewünscht, siehe #37 und #79 ## Aufwand - Jeder Datentyp wird durch eine eigene Tabelle ersetzt - Es müssen entsprechende LeftJoins eingebaut werden - Wenn eine Historie (nur bei `QualifikationBlocked`) gebraucht wird, fällt die Uniqueness Constraint in der DB weg; der Nachteil ist dann, dass statt einem Join ein Subselect notwendig ist, damit keine Zeilen dupliziert werden ## Branch fradrive/lms-type-refactor
jost commented 2023-05-24 17:55:02 +02:00 (Migrated from gitlab.uniworx.de)

assigned to @jost

assigned to @jost
jost commented 2023-05-24 18:26:29 +02:00 (Migrated from gitlab.uniworx.de)

Erste Schritte in d377d717d2

Erste Schritte in d377d717d2f374a19f8ed837b8bb84b308eb3b60
jost commented 2023-05-26 18:01:26 +02:00 (Migrated from gitlab.uniworx.de)

added #79 as child task

added #79 as child task
jost commented 2023-06-27 09:45:07 +02:00 (Migrated from gitlab.uniworx.de)

mentioned in issue #66

mentioned in issue #66
jost commented 2023-06-29 15:12:47 +02:00 (Migrated from gitlab.uniworx.de)

changed the description

changed the description
jost commented 2023-07-03 18:45:21 +02:00 (Migrated from gitlab.uniworx.de)

mentioned in commit 2d62acea5e

mentioned in commit 2d62acea5eddb52ffbf2bfdde68fdfaeb2193bee
jost commented 2023-07-24 12:37:40 +02:00 (Migrated from gitlab.uniworx.de)

Stand

  • Zweig test erfoglreich ausgerollt in Test-System fradrive-t.apps.fra.fraport.de
  • DB Migration hat gut funktioniert.

Probleme

  • Unklar für Update im Live-System: Background-Worker sollten zeitverzögert starten **WURDE EIGENES ISSUE #115 **
  • Entzug per DBTable Action auf Qualifications funktioniert nicht. Aktion wird verarbeitet, aber nicht ausgeführt. Immer nur 0/X erfolgreich.
# Stand - Zweig `test` erfoglreich ausgerollt in Test-System `fradrive-t.apps.fra.fraport.de` - DB Migration hat gut funktioniert. # Probleme - [x] Unklar für Update im Live-System: Background-Worker sollten zeitverzögert starten **WURDE EIGENES ISSUE #115 ** - [x] Entzug per DBTable Action auf Qualifications funktioniert nicht. Aktion wird verarbeitet, aber nicht ausgeführt. Immer nur 0/X erfolgreich.
jost commented 2023-08-29 13:26:18 +02:00 (Migrated from gitlab.uniworx.de)

Done in branch test needs merge

Done in branch test needs merge
jost (Migrated from gitlab.uniworx.de) closed this issue 2023-09-20 15:09:24 +02:00
This repo is archived. You cannot comment on issues.
No Milestone
No project
No Assignees
1 Participants
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: fraport/fradrive-old#75
No description provided.