Datendiskrepanz Lokale Daten zur synchronisierten Cloud

Forum für Fragen rund um MultiBaseCS.
Antworten
intacta
Beiträge: 7
Registriert: So 5. Apr 2020, 16:48

Datendiskrepanz Lokale Daten zur synchronisierten Cloud

Beitrag von intacta »

Hallo,

ich hatte mit MultiBaseCS3 eine lokale Datenbank angelegt und diese seinerzeit mit einer Cloud-Datenbank synchron gehalten.
Jetzt habe ich MultiBaseCS4 installiert, eine neue leere lokale Datenbank angelegt und diese mit der gleichen Cloud-DB synchronisiert.
Die meisten Daten sind wie erwartet identisch mit denen in der Cloud und mit denen der alten lokalen MBCS3-Datenbank auf dem alten PC.
In der Cloud werden alle Daten (meiner untersuchten Stichprobe) erwartungsgemäß angezeigt.

Allerdings musste ich feststellen, dass in meiner neuen lokalen Datenbank alle Dateneinträge eines bestimmten Beobachters nicht mehr diesem Beobachter zugeordnet sind!
Der Beobachtereintrag in den Stammdaten existiert weiterhin (ohne darauf verweisende Dateneinträge) mit der ursprünglichen GUID_Beobachter und wurde offenbar aus der Cloud heraus korrekt heruntersynchronisiert.
In den ursprünglich diesem Beobachter zugeordneten Dateneinträgen ist jedoch ein neuer, in den Stammdaten nicht vorhandener GUID_Beobachter-Wert eingetragen. Daher Wird beim Filter auf den (ursprünglichen) Beobachter kein Datensatz gefunden und beim Anzeigen der Datensätze dieses Beobachters kein Name angezeigt.
Die lokale Datenbank ist somit inkonsistent, obwohl sie frisch aus einer Cloud-Datenbank (die den Beobachternamen noch korrekt anzeigt, bei der ich allerdings die GUID_Beobachter nicht anzeigen kann) heruntersynchronisiert wurde!

Es ist genau ein Beobachter betroffen.
Ich habe diese Datensätze in der Listenansicht durch Sortieren der Beobachter-Spalte ausgewählt und den ursprünglichen Benutzer neu zugewiesen. Danach war meine lokale DB offenbar wieder in Ordnung, jedoch wurde meine Arbeit bei der nächsten Synchronisation mit der Cloud wieder mit den fehlerhaften Werten überschrieben (obwohl meine lokalen Datensätze ja eigentlich neuer sind als die in der Cloud).

Nun sitze ich wieder auf der inkonsistenten und fehlerhaften lokalen Datenbank und kann diesen Zustand nicht reparieren.
Offenbar manipuliert die Synchronisationsroutine die Daten.

  • Wie kann ich die Daten reparieren?
  • Wie kann ich eine solche Situation für die Zukunft ausschließen?
  • Wieso wird die Inkonsistenz bei der regelmäßigen Basis-Datenpflege nicht gefunden?
Vielen Dank!

Torsten


P.S.: Hier ein kurzes SQL-Snippet, das in ähnlicher Form vielleicht in die Basis-Datenpflege integriert werden könnte:

Code: Alles auswählen

SELECT 
COUNT(tblDaten.GUID_Beobachter) AS Datensaetze
, tblDaten.GUID_Beobachter      AS Unauffindbare_GUID_Beobachter
FROM tblDaten
WHERE tblDaten.GUID_Beobachter NOT IN
	(SELECT GUID_Beobachter FROM tblBeobachter)
GROUP BY tblDaten.GUID_Beobachter;

Benutzeravatar
Tino Kohbach
Beiträge: 31
Registriert: Do 30. Jan 2020, 12:29
Kontaktdaten:

Re: Datendiskrepanz Lokale Daten zur synchronisierten Cloud

Beitrag von Tino Kohbach »

Hallo Torsten,

Du hast da eine sehr interessante Entdeckung gemacht.

Aktuell gehen wir davon aus, dass dieses Verhalten durch einen gelöschten Beobachter zustande kommt. Wird ein Beobachter in einer lokalen MultiBaseCS Datenbank gelöscht und sind diesem Beobachter noch Beobachtungen zugeordnet, so muss ein entsprechender Ersatz angegeben werden. Damit beim Datenimport (egal ob nur neue oder auch geänderte Beobachtungen) ein gelöschter Beobachter nicht wieder aktiv gesetzt wird, speichert MultiBaseCS in der Datenbank am gelöschten Beobachter die GUID des Ersatzes. Beim Import werden Beobachtungen dann entsprechend korrigiert. Ich will nicht ausschließen, dass dabei etwas schief gehen kann.

In Verbindung mit der MultiBaseCS Cloud, wo einem Benutzer ein konkreter Beobachter zugeordnet ist, kann das unter Umständen zu dem von Dir beschriebenen Verhalten führen.

Zunächst würde uns interessieren, ob Du mit nachfolgendem SQL-Statement einen oder mehrere Treffer bekommst. Wenn ja, kannst Du uns das Ergebnis als Excel- oder Text-Datei gezippt an dieses Thema mit dranhängen? In MultiBaseCS im Modul Liste kann man das Ergebnis als Excel-Liste exportieren (Kontextmenü auf der rechten Maustaste > Excel-Datei exportieren).

Code: Alles auswählen

SELECT GUID_Beobachter, GUID_Replace, 
LEFT (Beobachter, 2) + '...' + RIGHT (Beobachter, 2) AS Beobachter, Flag_Deleted 
FROM tblBeobachter WHERE Flag_Deleted = 1
Herzliche Grüße
Tino
Bitte gebt bei jedem Thema die verwendete MultiBaseCS Edition sowie die Versionsnummer an!

z.B. MultiBaseCS Professional, 4.3.0.2

intacta
Beiträge: 7
Registriert: So 5. Apr 2020, 16:48

Re: Datendiskrepanz Lokale Daten zur synchronisierten Cloud

Beitrag von intacta »

Hallo Tino,

da kam nur eine Zeile zurück, die ich hier ohne Datenschutzbedenken direkt im Text (mit allen Zeichen) wiedergeben kann, weil der Eintrag offenbar keinem Menschen zugeordnet ist:

GUID_Beobachter GUID_Replace Beobachter Flag_Deleted
519ec2a1-a408-4991-89d7-09535884f344 b4cb944d-d04f-4a1d-aa05-b3faad44c09f Chalcolestes viridis...Chalcolestes viridis True

Den hatte ich kürzlich gelöscht, nachdem ich einen genaueren Blick in die Beobachter-Stammdaten geworfen hatte. Er existierte auch bereits in der alten Datenbank und es waren keine Beobachtungen zugeordnet.

In der alten Datenbank auf MBCS3, die bis zum letzten Jahresende mit dieser Cloud-Datenbank synchronisiert wurde, hat dieser Filter übrigens keine Treffer geliefert, obwohl ich mich erinnere, vor langer Zeit mal doppelt angelegte Beobachter konsolidiert zu haben. Die Abfrage nach Flag_Deleted=0 lieferte aber die erwartete Beobachterliste.
Einer dieser damals konsolidierten Beobachter ist derjenige, der jetzt nicht mehr funktioniert.

Der in den Datensätzen vorhandene GUID_Beobachter, für den es keine Entsprechung in der Beobachter-Tabelle gibt, ist übrigens in der alten Datenbank auch nirgends (tblDaten, tblBeobachter) vorhanden. Er ist wohl außerhalb meines PCs erzeugt worden.

Wäre es ggf. möglich, in der Cloud-Website auf der [Status]-Seite der Beobachtungen sowie auf der 'Benutzer Bearbeiten'-Seite jeweils die GUID_Benutzer mit anzuzeigen? Vielleicht ergibt sich ja daraus ein Hinweis.
(Übrigens klappt bei mir seit Kurzem das Anmelden an der Cloud oft nicht mehr reibungslos, dazu erstelle ich ggf. ein getrenntes Posting.)

Was kann ich sonst tun?

LG,
Torsten


P.S.: Ich habe gerade lokal einen Testdatensatz für diesen Beobachter erstellt und in die Cloud synchronisiert. Dort erscheint er unter dem korrekten Beobachternamen. Lokal wurde beim Synchronisieren wieder der GUID_Beobachter des Datensatzes auf den gleichen falschen, nicht existierenden Eintrag gesetzt. Im Log des Sync-Service wurde dabei aber angeblich ein neuer Beobachter heruntersynchronisiert:
11:31:28: Cloud (Details): Download (tblBeobachter)
11:31:28: Cloud (Details): Download IDs: '995 ........ '
11:31:28: Cloud (Details): DownloadData (tblBeobachter, ResultDS: 1)

Dieser erscheint jedoch nach dem Synchronisieren nicht in der lokalen Beobachter-Tabelle.
Nach dem Löschen des Testdatensatzes in der Cloud wurde der Datensatz auch lokal gelöscht, wiederum mit der Angabe im Log, dass der neue Beobachter heruntergeladen wurde.
Also wird anscheinend einerseits die Beobachter-GUID beim hochsynchronisieren in die Cloud umgeschrieben und andererseits die umgeschriebene GUID beim heruntersynchronisieren in die lokale DB verworfen.

Antworten