Hallo,
ich bastele gerade an einer Webanwendung. Ich soll Buchungen von Kunden abspeichern. Modelliert, normalisiert… wir buchen und die Datensätze landen in 7 Tabellen. Sorgen habe ich bei der Positionen Tabelle. Ich rechne mit einem Datenaufkommen von etwa 50 Millionen Datensätze im Jahr. Die Lösung wird voraussichtlich 5 Jahre halten müssen.
- Hat jemand Erfahrungen mit solchen Datenmengen?
- Mein zweites Problem ist die Buchungsänderung. Ich soll nach jeder Änderung den alten Stand einfrieren. Mein Auftraggeber möchte jederzeit sehen, wie sich die Buchung wann geändert hat. Da ich bei jeder Buchung mit bis zu 50 Datensätzen im Schnitt rechne, kann ich nicht jedes Mal alle Positionen einfrieren. Der Ansatz, nur geänderte Positionen einzufrieren hat folgenden Nachteil. Angenommen die Buchung ist in der Version 5 (angefangen bei 1), ich kann die Version 3 erst wiederherstellen, in dem ich aus der Version 1 ausgehe, die Änderungen der Version 2 darauf anwende, dann die der dritten Version. Das macht den Algorithmus für den Programmierer komplexer. Mein Horror fall ist die Version 10 zum Beispiel wiederherstellen zu müssen, es wären dann 9 Durchläufe. Ich spiele also mit dem Gedanken die 50 Positionen bei Änderung über eine „Datenkonvertierungsklasse“ in ein String umzuwandeln, und das ganze in einem Datensatz in einem nvarchar(max) Feld abzuspeichern. Da ich in diesen Datensätzen nie suchen werde, sondern immer nur eine Version auslesen werde, kommt es mir effektiver als das „positionsweise“ Einfrieren der Datensätze.
Jemand eine Idee, oder herrscht eher „Kopfschütteln“ bei diesem Ansatz?
Bin für jede Anregung oder Meinung dankbar