2009-04-09 5 views
0

Ich betreibe eine Website, die hilft, viele Informationen für Kliniken zu verwalten. Ein Teil der Anwendung muss Patientenakten aus einer Excel-Tabelle hochladen. Die Patiententabelle enthält ungefähr 1 Million Datensätze und ein Excel-Import muss 10k, 20k, 30k Patientenaufzeichnungen gleichzeitig einfügen oder aktualisieren. Die ganze Zeit drängen andere Kunden auf den Tisch. Die Verarbeitungszeit ist weniger wichtig als die Reduzierung der Konflikte in der Datenbank. Welche Strategien würdest du empfehlen?Laden Sie große Datenmengen auf die Produktion sql Server mit minimaler Konkurrenz

Ich weiß, dass andere Websites dies effektiv tun. Mit Salesforce können Sie große Datenmengen gleichzeitig hochladen.

Antwort

0

Wenn jede Zeile Update unabhängig ist, eine Schleife ausführen, die eine Reihe bekommt, aktualisiert die Tabelle, eine andere Reihe bekommen, ...

Dann können Sie eine Verzögerung in der Schleife setzen, um es langsam zu vermeiden, nach unten zu beeinträchtigen der Hauptstandort (eine Art Lastmetrik könnte verwendet werden, um dies im laufenden Betrieb anzupassen). Eine Art Token Ring wie Setup könnte verwendet werden, um mehrere Updates zusammen zu schalten.

4

Laden Sie zuerst das Excel-Arbeitsblatt in eine Zwischenspeichertabelle und entscheiden Sie dann, ob die Zeilen in einem einzelnen Batch aktualisiert oder eingefügt werden sollen.

In der Regel sollte das Einfügen einer Million Zeilen von einer Tabelle in eine andere schnell genug sein, um ausgeführt zu werden, während der Server belastet ist. Sie werden während der Einfügung eine Sperre haben, aber es sollte eine Frage von Sekunden sein. Es sei denn, Sie laden Milliarden von Datensätzen pro Minute, oder Ihre Upsert-Operation ist sehr intensiv, ich sehe es nicht als ein Problem.

Wenn Ihr Upsert sehr komplex ist, gibt es eine Reihe von Möglichkeiten. Sie können in einen einzelnen Stapel einfügen, aber die Produktionsdatensätze als unvollständig markieren, da ihre untergeordneten Datensätze aktualisiert werden. Sie können die Stagingzeilen als unbearbeitet markieren und in Batches verarbeiten.

+0

Wenn ich mehrere upvotes zu diesem würde ich würde vergeben. MonkeyBrother, das ist der, auf den du dich konzentrieren willst. –