Ich versuche, Werte in 2 Datenbanken zu schreiben (müssen nicht gleichzeitig sein), wenn die saveAll-Funktion aufgerufen wird. Dies gilt nicht für alle Tabellen, sondern nur für 4 der 10 Tabellen in den 2 Datenbanken.
Meine derzeitige Logik, in Pseudocode:
$updateOk = $model->saveAll(...);
if (!$updateOk)
return error;
/* start second source synchronizing */
$model->changeDataSource('second');
$updateOk = $model->saveAll(...);
$model->changeDataSource('default');
if (!$updateOk)
return error;
return;
Das Problem dabei ist, dass manchmal nicht in die zweite Quelle geschrieben wird, was zu Inkonsistenzen führt.
Ich brauche einen Rat, wie ich dieses Problem am besten lösen kann. Ich habe 3 mögliche Ideen:
- Folgen Sie dem obigen Code und fügen Sie Überprüfungen hinzu, um sicherzustellen, dass die Dinge gespeichert werden, und wenn dies nicht der Fall ist, setzen Sie die Standardeinstellungen zurück, um die Konsistenz zu wahren
- Schreiben Sie ein Serverskript, das bei jedem Aufruf von saveAll() eine Replikation durchführt. (Ressourcenintensiv und nicht wirklich skalierbar)
- Verwenden Sie eine Kombination aus beidem. Führen Sie vor dem Speichern eine Konsistenzprüfung durch und replizieren Sie das Skript einmal pro Tag.
Welches ist der beste Weg oder gibt es bessere Möglichkeiten, diese Anforderung umzusetzen? Gibt es Möglichkeiten, um Konsistenz zu gewährleisten?