2009-06-24 21 views
0

Ich habe eine Anwendung zur Datenprotokollierung (C# /. Net), die Daten in einer SQLite-Datenbank protokolliert. Auf diese Datenbank wird während der Ausführung der Anwendung ständig geschrieben. Es ist auch möglich, dass die Datenbank archiviert wird und eine neue Datenbank erstellt wird, sobald die Größe der SQLite-Datenbank eine vordefinierte Größe erreicht.Die beste Methode zum Synchronisieren der Clientdatenbank mit der Serverdatenbank

Ich schreibe eine Webanwendung für die Berichterstattung über die Daten. Mein Web-Setup ist C#/.Net mit einem SQL Server. Kunden können ihre eigenen Daten online von ihrer Instanz meiner Anwendung aus sehen.

Für Testzwecke, um die Daten zum Testen hochladen Ich habe eine grobe und schmutzige Anwendung geschrieben, die im Grunde liest aus der SQLite DB und dann injiziert die Daten in den SQL Server mit SQL - Ich führe die Anwendung einmal zum Auffüllen die SQL Server-Datenbank online.

Meine Anwendung ist in C# geschrieben und ist modular, also könnte ich einen Prozess hinzufügen, der regelmäßig die SQLite DB überprüft und dann neue Daten in Stapeln an meinen SQL Server überträgt.

Meine Frage ist, wenn ich die clientseitige SQLLite Datenbank (s) ständig mit meinem Server synchronisieren möchte, während die Anwendung Datenprotokollierung durchführt, was wäre der beste Weg dies zu bewerkstelligen?

Gibt es irgendeine Technologie/Strategie, die ich hier untersuchen sollte? Irgendwelche empfohlenen Techniken?

Antwort

0

Sie können einen Blick auf die Sync Framework untersuchen möchten. Wie komplex ist das Schema, das Sie synchronisieren möchten & ist es nur ein Weg oder müssen Daten wieder herunterkommen?

Als eine einfache Lösung würde ich betrachten Export von Daten in einem begrenzten Format und dann mit bcp/BULK INSERT, um es auf Ihrem zentralen Server zu ziehen.

+0

Danke dafür, die Datenübertragung wird in eine Richtung sein. Ich benutze etwas wie das bcp, um mit dem Sync-Framework als längerfristige Lösung zu beginnen. – Mattl

0

Könnte Konzept der Log Shipping

+0

Nicht sicher, dass dies möglich ist, da ich von einer SQLite-Datenbank zu einem SQL Server arbeite, möchte ich auch die SQL Server-Seite ständig aktualisieren - nicht in Echtzeit, aber vielleicht alle paar Minuten. Denkanstoß, aber es hat mich darüber nachdenken, wie ich ein anderes Problem lösen kann, das ich habe. – Mattl

1

Mehrere Optionen kommen in den Sinn. Sie können jeder Tabelle, von der Sie kopieren möchten, einen Zeitstempel hinzufügen und dann Zeilen auswählen, die nach der letzten Aktualisierung geschrieben wurden. Dies ist schnell und funktioniert, wenn Sie die Datenbank archivieren und mit einem leeren beginnen.

Sie können Ihre Aktualisierungen auch für jede Tabelle in einer XML-Zeichenfolge protokollieren, die die Änderungen beschreibt und in einer neuen Tabelle speichert, die als Warteschlange behandelt wird.

0

Es gibt ein Open-Source-Projekt auf Github, das auch auf Nuget verfügbar ist. Es heißt SyncWinR und implementiert das Sync Framework Toolkit, um die Synchronisation mit WinRT oder Windows Phone 8 und SQLite zu ermöglichen. Sie können auf das Projekt von https://github.com/Mimetis/SyncWinRT zugreifen.

Verwandte Themen