Ich hatte dieses Jahr ein ähnliches Problem lösen müssen. Eine Datenbank, die für 1 Mio Dokumente angefordert und bis 2,5 Mio Dokumente getestet war, flog mir bei 4,5 Mio Dokumenten um die Ohren (eine Ansicht, 1 Maske, 20 Felder, alle bis auf eines mit IsSummary = False, kein direkter manueller Zugriff auf die Datenbank).
Die Lösung bei uns sieht folgendermaßen aus:
- Definition mehrerer Datenbanken als Speicherort (wir nutzen derzeit 10)
- Routinen
- Erstellen neuer Dokumente: immer in die leerste Datenbank, Schlüssel wird vorab abgefragt
- Suchen von Dokumenten: in allen Datenbanken, erster Treffer gewinnt (doppelte gibt es aber nicht)
Überrascht war ich darüber, dass sich das Laufzeitverhalten fast nicht verändert hat, insbesondere die Suche über die 10 Datenbanken ist nicht spürbar langsamer, als die in einer Datenbank.
Natürlich wäre auch möglich, eine Logik zu schaffen, die die Zuordnung in die einzelnen Datenbanken ermittelt, das war in unserem Fall aber nicht möglich, da alle Datensätze sehr ähnlich sind. Die Performance zeigt auch, dass es nicht notwendig gewesen ist. Die Datenbanken sind nun alle mit etwa gleich vielen Dokumenten ausgestattet. Wird die Anzahl der Dokumente je DB kritisch, wird die Anzahl der Datenbanken erhöht.