====== Mongo-Cluster (Architektur) ====== Im Sinne der Effizienz wird die ReplicaSet-Funktionalität der Mongo-DB eingesetzt. Die Konfiguration für den Zugriff auf das ReplicaSet wird in der “mongoReplicaConfig.json” abgelegt. === Produktiv-Umgebung === ?? === Testing-Umgebung === ?? === Dev-Umgebung === * Name des ReplicaSets: picalikedev01 * Master/Slave: dev01, dev02 * Arbiter: dev02 ===== Datenbanken ===== Auf jedem ReplicaSet gibt es drei Datenbanken, die unabhängig von ihren tatsächlichen Namen in der “mongoReplicaConfig.json” mit den Namen “settings”, “billing” und “data” angesprochen werden. Die Idee ist es logische Namen zu verwenden, so dass sich die darunter liegende Struktur später leicht ändern lässt. ===== Collections ===== Die folgenden Collections sind relevant für den Feed-Update-Prozess. === settings === * **user**: Diese Collection enthält alle wichtigen Informationen zu einem Kunden. * active (bool): Dieses Feld steuert, ob ein Kunde auf die API zugreifen darf. * company (string): Firmenname * contact (dictionary): Kontaktdaten (Ansprechpartner, Postanschrift, email) * name (string): interner Name * nickname (string): ?? * password (string): ?? * products (dictionary): Welche Produkte hat der Kunde gekauft * settings (dictionary): Settings für den CSV-Import, den Enrichment-Prozess, Name der image-collection, Zeitpunkt für den Feed-Update * uid (int): Interne ID des Kunden * update (bool): soll der Feed automatisch upgedated werden * url (string): URL der Webseite * admin (bool): ?? * **feed_updates**: * busy (bool): //false// wenn der gesamte Feed-Update-Prozess (CSV-Import, Enrichment, Lilly-DB-Export) abgeschlossen ist, sonst //true// * deletedEntries (int): * feedUrl (string): URL des Datenfeeds. Kopie aus user.settings.csv.feedUrl * finishTime (date/time): Wird gesetzt wenn der gesammte Feed-Update-Prozess (CVS-Import, Enrichment, Lilly-DB-Export) abgeschlossen ist. * imgCollection (string): Name der Image-Collection in der “data”-DB * importHandle (string): Einzigartiger String für den CSV-Import (Wo wird der benötigt?) * newErrorSize (int): Einträge mit Status “error” nach dem feedImport * newNewSize (int): Einträge mit Status “new” nach dem feedImport * newReadySize (int): Einträge mit Status “ready” nach dem feedImport * newSize (int): Einträge gesamt nach dem feedImport * oldErrorSize (int): Einträge mit Status “error” vor dem feedImport * oldNewSize (int): Einträge mit Status “new” vor dem feedImport * oldReadySize (int): Einträge mit Status “ready” vor dem feedImport * oldSize (int): Einträge gesamt vor dem feedImport * priority (int): Priorität, mit der der FeedImport Arbeitspakete erstellt hat. Die Priorität wird pro Arbeitspaket eingestellt und kann dort nachträglich geändert werden. Werte können zwischen 0-10 liegen, wobei 0 die höchste Priorität ist. * procId (string): Einzigartiger String, der innerhalb der anderen Collections einen Bezug zu diesem Feed-Update herstellt. * startTime (date/time): Beginn des CSV-Imports * timeStamp (date/time): Zeitpunkt an dem das Feed-Update angestoßen wurde * toRun (bool): Wurde der CVS-Import durchgeführt * uid (int): Interne ID des Kunden * **enrichment_updates** * allowedColorDist (double): Erlaubte Farbdistanz für den ColorExport/CustomerColors * busy (bool): //false// wenn das Enrichment durchgeführt wurde und die Enrichment Daten in die Image Collection geschrieben wurden, sonst //true// * colorsForExport (dictionary): Farben für den CustomerColors Schritt beim Enrichment * finishTime (date/time): Wird gesetzt, wenn busy auf //false// gesetzt wird * hostname (string): Wird von enrichmentUpdate.py gesetzt, wenn das Paket vom Indexer runtergeladen wurde * imageCount (int): Anzahl der Image-IDs im Arbeitspaket * imgCollection (string): Name der Image-Collection, wo die Enrichmentdaten (und Metadaten aus der CSV-Datei) gesammelt werden * importHandle (string): Einzigartiger String * priority (int): Priorität des Arbeitspaketes, Werte zwischen 0-10, 0 bedeutet höchste Priorität * procId (string): Einzigartiger String, der einen Bezug zum Feed-Update-Prozess herstellt * startTime (date/time): Wird gesetzt, wenn enrichmentUpdate.py das Paket runterlädt * timeStamp (date/time): Zeitpunkt an dem das Arbeitspaket erstellt wurde. * toRun (bool): Muss das Arbeitspaket noch berechnet werden? * uid (int): Interne ID des Kunden * workload (array): JSON für pvt-dev * **db_updates** * busy (bool): ?? (Wenn dieses Feld auf false gesetzt wird, ist der Feed-Update-Prozess beendet und die Daten sind in der API abrufbar. Zeitgleich sollte auch das busy-Feld in feed_updates auf false gesetzt werden. * createTime (date/time): Zeitpunkt an dem der Eintrag erstellt wurde. * packDecrement (int): wird mit der Anzahl der Arbeitspakete initialisiert. Wird dekrementiert, wenn ein Arbeitspaket abgearbeitet wurde * packages (int): Anzahl der Arbeitspakete im Update * procId (string): Einzigartiger String, der einen Bezug zum Feed-Update-Prozess herstellt * toRun (bool): Wurden die Daten bereits in die Lilly-DB exportiert * uid (int): Interne ID des Kunden * startTime (date/time): ?? (noch sinnvoll?) * finishTime (date/time): ?? (noch sinnvoll?)