ich speicher große mengen von daten in einer datenbank (simpleDB). dabei möchte ich das existierende einträge upgedated werden. mein python script liesst hierfür alle item namen aus und speichert diese in einem dict. dieses vergleicht beim import von neuen daten ob diese bereits bekannt sind. das problem hierbei ist je mehr daten in der simpleDB gespeichert sind umso zeit-intensiver ist dieser vorgang!
habt ihr eine idee wie man den vorgang beschleunigen könnte?
Wo läuft denn deine Anwendung oder der Import? Ich vermute mal nicht, in der Amazon-Cloud.
Wie wäre es, die Import-Anwendung in einer EC2-Instanz laufen zu lassen. Die hat dann eine sehr performante Anbindung an den SimpleDB-Service und sollte deutlich schneller sein als eine Anwendung, die per Internet auf die SimpleDB zugreift.
Gerade bei einem Massenimport könnte sich das lohnen.
Wenn es die Anwendungslogik zulässt: Puste alle neuen Datensätze in die DB und schmeiß später, über Nacht z.B., in einem Batch alle doppelten Einträge raus.
Es kommt halt immer darauf an, wozu und wann du die Daten in der DB benötigst.
Ich würde die Duplikatsprüfung in die DB verlagern, in dem du zuerst mit den Schlüsselattributen nach einem bestehenden Datensatz suchst. Findest du ihn, wird dieser aktualisiert, ansonsten ein neuer Eintrag angelegt.
Damit hast du zwar pro Datensatz eine Abfrage, diese sollten aber recht schnell sein.
Weiterhin liefert SimpleDB pro Query maximal 2500 Elemente. Wenn du also mehr Elemente speicherst erhältst du ohnehin nicht mehr alle mit einer Query.