Neu Können mehrere Ameisen-Importe gleichzeitig laufen?

ma_mm

Mitglied
17. Januar 2018
11
0
Guten Tag!

Ich habe Importe von diversen Herstellern, die bisher alle nacheinander laufen, und im Anschluß, wenn auch die Daten des letzten Herstellers verarbeitet und die CSV-Dateien fertig generiert sind, fangen nacheinander alle Ameisen-Importe an.

Das Problem ist, das kostet unheimlich viel Zeit bei der Anzahl der Artikel und Importe und ich würde das gerne paralellisieren, d.h. jedes Importskript startet auf einem anderen Kern und ruft jeweils dann, wenn es selber fertig ist, seinen Ameisenimport auf.

Weil ich es hier gerade schlecht testen kann, wäre meine Frage, ob mehrere Ameisenimporte / Ameisen-Prozesse gleichzeitig laufen können. Das könnte nämlich bei der Anzahl der Skripte mindestens dreifach schneller sein, weil wir jetzt schon an der Grenze dessen sind, was zwischen Feierabend und Arbeitsbeginn am nächsten Tag so möglich ist.
 

NETZdinge.de

Sehr aktives Mitglied
7. April 2010
2.289
339
Wie viele Artikel sind es denn in Summe? Wie viele Lieferanten/Hersteller?

Vom Gefühl her würde ich sagen, dass das keine gute Idee ist und irgendwann zu Problemen in der DB kommen kann.

Also ich richte das immer so ein, dass per Aufgabenplanung ein batch ausgeführt wird, welches erst die Lieferantendaten abruft, gegebenfalls bestände leert und dann den Ameisenimport anstößt....

Sollte bei 100k Artikeln nicht länger als 30min. gehen (nicht gemessen)...

Wieviele dann zwischen Feierabend und Arbeitsbeginn rein passen kannst du dir ja ausrechnen...
 

Enrico W.

Administrator
Mitarbeiter
27. November 2014
8.725
1.777
Grundsätzlich können durchaus mehrere Importe und Exporte gleichzeitig laufen. Dass diese dann aber tatsächlich parallel schneller laufen als einzeln kann man nicht voraussetzen. Schließlich muss die Datenbank mitspielen und das kann ggf. sehr schnell einen Flaschenhals darstellen.
Darüber hinaus läuft man schnell Gefahr, dass zwei oder mehr Importe gleichzeitig auf die gleichen Elemente zugreifen wollen - mit dem Ergebnis, dass eins von beiden dann als Deadlock-Opfer ausgewählt und nicht importiert wird. Ausnahmsweise mal 2 absolut unterschiedliche Importe (z.B. ein Import der Kundendaten und einen für Artikeldaten) geht durchaus mal! Zur Gewohnheit sollte das nicht werden und von einer grundsätzlichen Einrichtung solcher Parallelimporte rate ich definitiv ab.
 

ma_mm

Mitglied
17. Januar 2018
11
0
Grundsätzlich können durchaus mehrere Importe und Exporte gleichzeitig laufen. Dass diese dann aber tatsächlich parallel schneller laufen als einzeln kann man nicht voraussetzen. Schließlich muss die Datenbank mitspielen und das kann ggf. sehr schnell einen Flaschenhals darstellen.
Darüber hinaus läuft man schnell Gefahr, dass zwei oder mehr Importe gleichzeitig auf die gleichen Elemente zugreifen wollen - mit dem Ergebnis, dass eins von beiden dann als Deadlock-Opfer ausgewählt und nicht importiert wird. Ausnahmsweise mal 2 absolut unterschiedliche Importe (z.B. ein Import der Kundendaten und einen für Artikeldaten) geht durchaus mal! Zur Gewohnheit sollte das nicht werden und von einer grundsätzlichen Einrichtung solcher Parallelimporte rate ich definitiv ab.

Es handelt sich auf jeden Fall um unterschiedliche Artikel. Jeder Import kommt von einem anderen Hersteller, läuft in einen selbstgeschriebenen Mapper rein, der dann die unterschiedlichen Eingangsformate, Bildbezeichnungen etc. pp. in ein identisches, für die Ameise lesbares Format bringt.

Zumindest bis zum Punkt wenn die Ameise los legt werden die Skripte definitiv schneller laufen, die Bandbreite auf dem Server online ist zumindest internettechnisch hoch genug, und wenn sich die Skripte ihre Texte paralell ziehen können hilft das schon mal ungemein.

Ich möchte gerne einfach alles im gleichen Skript haben, damit ich nicht raten muss wann der erste Teil, das holen und zusammenstellen der CSV-Dateien von den Händlern, fertig ist um nen zweites Skript für die Ameise zu schreiben. Die Imports sind jeweils immer nur Artikeldaten.
 

Enrico W.

Administrator
Mitarbeiter
27. November 2014
8.725
1.777
Das heißt, die Ameise soll hier einfach nach festgelegten Zeitabschnitten die CSV nehmen und importieren? Wie willst du sicherstellen, dass der eine Import bereits fertig ist, wenn der nächste angestoßen wird? Ggf. auch vom gleichen Hersteller? Wie willst du sicherstellen, dass diese beiden Importe, die dann ggf. parallel laufen nicht doch auf gleiche Artikel zugreifen?
 

ma_mm

Mitglied
17. Januar 2018
11
0
Das heißt, die Ameise soll hier einfach nach festgelegten Zeitabschnitten die CSV nehmen und importieren? Wie willst du sicherstellen, dass der eine Import bereits fertig ist, wenn der nächste angestoßen wird? Ggf. auch vom gleichen Hersteller? Wie willst du sicherstellen, dass diese beiden Importe, die dann ggf. parallel laufen nicht doch auf gleiche Artikel zugreifen?

Weil diese, wie gesagt, von unterschiedlichen Herstellern kommen, und die Artikelnummer eindeutig ist.
Der einzige Sonderfall wo das passieren könnte, wäre wohl eine Firmenfusion ;)

Beim Hersteller selber gehe ich Schritt für Schritt vor, erst ziehen, mappen & verarbeiten, Werte konvertieren und beim CSV-Dateien ausspucken dann auch gleich in die Ameise importieren.

Übrigens in Chunks von 2000 Artikeln, denn obwohl mir alle möglichen Leute erklären wollen, das dieses Wunderding mit unglaublich großen Dateien klar kommt, musste ich für einen ordentlichen Import die Dateien entsprechend klein halten, damit sie ohne Abstürze durchlaufen.

Wie meinst du das mit, der eine bereits fertig wenn der andere angestoßen wird? Das war doch die Frage: Kann ich Ameisen-Importe (nicht identischer Artikel) paralell laufen lassen.
(Alternativ habe ich natürlich auch nichts gegen eine schnellere Ausführung der Ameise)
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.237
1.966
Berlin
Grundsätzlich können durchaus mehrere Importe und Exporte gleichzeitig laufen. Dass diese dann aber tatsächlich parallel schneller laufen als einzeln kann man nicht voraussetzen. Schließlich muss die Datenbank mitspielen und das kann ggf. sehr schnell einen Flaschenhals darstellen.
Darüber hinaus läuft man schnell Gefahr, dass zwei oder mehr Importe gleichzeitig auf die gleichen Elemente zugreifen wollen - mit dem Ergebnis, dass eins von beiden dann als Deadlock-Opfer ausgewählt und nicht importiert wird. Ausnahmsweise mal 2 absolut unterschiedliche Importe (z.B. ein Import der Kundendaten und einen für Artikeldaten) geht durchaus mal! Zur Gewohnheit sollte das nicht werden und von einer grundsätzlichen Einrichtung solcher Parallelimporte rate ich definitiv ab.

Den Begriff Deadlock höre ich in Verbindung mit der wawi neuerdings immer öfter, gibt es hier keinen wartemodus, wenn ein anderer Prozess gerade exklusiv in die Datenbank schreibt. Ich kann mir das schwer vorstellen, weil die Chance eines Deadlocks recht hoch ist wenn ich 20 Mitarbeiter habe und alle in der wawi rumwuseln.
 

maydo

Sehr aktives Mitglied
28. März 2011
2.133
85
DE-Fulda
Das heißt, die Ameise soll hier einfach nach festgelegten Zeitabschnitten die CSV nehmen und importieren? Wie willst du sicherstellen, dass der eine Import bereits fertig ist, wenn der nächste angestoßen wird? Ggf. auch vom gleichen Hersteller? Wie willst du sicherstellen, dass diese beiden Importe, die dann ggf. parallel laufen nicht doch auf gleiche Artikel zugreifen?

Das kann man per Batch abbilden, dass Importe die nicht parallel laufen "dürfen" nacheinander über eine Batch Datei aufgerufen werden.
 

maydo

Sehr aktives Mitglied
28. März 2011
2.133
85
DE-Fulda
Hi,

wir haben aktuell Ameisen Deadlock Probleme.
Es sind Importe die schon seit Jahren fehlerfrei laufen.

Bzw. es ist ein Import von ca. 20-30 betroffen, die per Automeise 24/7 laufen.

Wann genau wird ein Artikel gelockt, bzw. entlockt ?
Die Wahrscheinlichkeit, dass ein Artikel zeitgleich manuell durch einen Mitarbeiter oder durch einen Import bearbeitet wird ist praktisch fast 0.

Der Worker läuft ebenfalls 24/7
 

Ähnliche Themen