A/B-Switch

Bestimmung der aktiven bzw. inaktiven Tabellen

Im Frontend wird nur mit den aktiven Tabellen gearbeitet. Im CRON und im Backend erfolgt das Einlesen der Datwn jeweils in die inaktiven Tabellen. Nach erfolgreichem Abschluss der zugehörigen Funktionen, wird die Tabelle neue Tabelle zur aktiven und die bisherige Tabelle inaktiv.

Inaktive Tabellen werden nach erfolgreicher Umschaltung sofort gelöscht.

Über den Parameter GLOBAL_PARAM_KEEP_INACTIV_TABLE = 1, kann das sofortige Löschen vorübergehend ausgesetzt werden. Dies eröht allerdings den Speicherbedarf für die Datenbank auf nahezu das Doppelte.

Für die Bestimmung der jeweils aktiven bzw. inaktiven Tabellen (Shop, Domain, Menu usw.) wird die Funktion  

db_get_activ_table($id, $type, $status='1') 
Datei: includes/functions/switch_functions.php

verwendet.

Diese Funktion gibt den Suffix _a bzw. _b für die aktive Tabelle zurück, bzw. der inaktiven wenn $status = 0 übergeben wird.

In den Funktionen im CRON und im Backend wird diese Funktion nicht direkt aufgerufen, sondern es werden für eine bessere Lesbarkeit der Programme die Funktionen

db_get_activ_[type]_table($id)

und

db_get_inactiv_[type]_table($id)

verwendet.

Aktivierung der neuen Tabellen

Die Aktivierung erfolgt mit der Funktion:

db_switch_table($id, $type='shop')
Datei: includes/functions/switch_functions.php

Um bei Bedarf zusätzliche Funktionen bzw. Prüfungen durchzuführen erfolgt der Aufruf der Funktion nicht direkt, sondern über die erweiterten Funktionen:

switch_[type]($id)
Datei: includes/functions/cron_functions_switch_[type].php

 

Typen

Derzeit werden für folgende Daten-Typen Tabellen mit Switch verwendet:

Type Verwendung ab Version Link
shop Produktdaten der Shops (Produktlisten von Affilinet), jeweils eine eigene Tabelle pro Shop. Diese Tabelle enthält alle übergebenen Daten 3.x.  
dom Auszug (id, shop_id) aus allen der Domain zugeordneten Shops, gefiltert über die Shopfilter 3.x  
menu Auszug (id, shop_id, menu_item_id) aus allen der Domain zugeordneten Shops, gefiltert über die Menüzuordnung 3.x  
prd

die bisherige Domaintabelle - wenn benötigt

   
pub die bisher verwendete Publishertabelle - wird vermutlich nicht mehr benötigt. Die Zuordnung des korrekten Deep_Links erfolgt in einer Funktion.    

 

^