Autor Beitrag
kerstel
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 05.05.15 17:34 
Hallo zusammen,

ich habe mehrere Artikeldaten und mehrere Lieferantendaten und möchte diese in ein ERP Programm importieren. Mein C# Programm soll das ganze so aufbereiten dass die Schnittstelle des ERP Programms damit umgehen kann.

Ich habe von einem Dienstleister eine Artikeldatei mit rund 200.000 Artikel. Von diesem Dienstleister gibt es zusätzlich eine Matchdatei in der ich sehe, welcher Artikel bei welchem Lieferanten unter welcher Nummer zu beziehen ist. Wir haben rund 10 Lieferanten, also ergibt das in der Matchdatei auch einiges. Und dann hab ich nochmal für jeden Lieferanten eine Datei in der ich dann Preise und Lagerbestände raushole.

Ich bin also in der ersten Zeile der Artikeldatei, schaue in die Matchdatei bei wem ich diesen Artikel bekomme und erhalte als Bsp. 3 Lieferanten. Dann hole ich mir die zusätzlichen Artikelinformationen wie Lagerbestand und Preis aus diesen 3 Lieferanten Dateien. Aus diesen Infos baue ich dann die Schnittstellendatei für das ERP und gehe zum nächsten Artikel in der Artikeldatei.

Haltet Ihr das vorgehen für sinnvoll, oder würdet Ihr das anders machen? Wäre es zB sinnvoll alle Daten in Collections einzulesen und erst dann zu verarbeiten?

Liebe Grüße
Ralf


Moderiert von user profile iconTh69: Topic aus C# - Die Sprache verschoben am Di 05.05.2015 um 18:28
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 05.05.15 18:15 
Alle Daten laden macht für die Artikel sicher keinen Sinn. Hört sich ja an als würdest du die nur einmal sequentiell durchgehen. Auf den Rest scheinst du ja random zugreifen zu müßen also wäre es sinnvoll die komplett im Speicher zu haben (wenn möglich). Am besten so das man da schnell drauf zugreifen kann ohne ihn klasssich durchsuchen zu müßen. Wenn das ein einmal Ding ist würde ich da aber jetzt keine Wissenschaft draus machen.
kerstel Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 05.05.15 23:14 
Hi,

nein der Import läuft einmal am Tag, Preise und Lagerbestand müssen ja aktualisiert werden. Allerdings bekomme ich in der Artikeldatei gesagt, ob sich etwas geändert hat und müsste dann nur noch die Lieferantendaten verarbeiten.

Also würdest du nur die Matchdatei in den Speicher lesen? Und evtl. die Lieferantendateien? Ist das nicht von der Performance her schlecht?

LG
Ralf
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 06.05.15 09:44 
Wie groß sind denn die Match- und die Lieferantendateien? Mehr als ein paar MB dürften es doch nicht sein, oder? Und dann wäre das einmalige Einlesen doch höchstens einige Sekunden - jedenfalls deutlich schneller als jedesmal bei jedem Artikel die Dateien zu durchsuchen.

Wenn die Match- und die Lieferantendateien sich nicht häufig ändern, dann könnte man diese natürlich auch in eine lokale Datenbank (z.B. SQLite) importieren und darauf dann die Abfragen durchführen.
kerstel Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 06.05.15 10:02 
Hi,

die Dateien sind schon bis zu 30MB groß und ändern sich täglich, da ja der Lagerbestand auch sehr variabel ist. Die Artikeldatei lese ich dazu einmal am Tag ein. Die Lieferantendateien evtl. auch mehrmals am Tag.

LG
Ralf
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 06.05.15 10:10 
Zitat:
Also würdest du nur die Matchdatei in den Speicher lesen? Und evtl. die Lieferantendateien? Ist das nicht von der Performance her schlecht?


Deine Frage nach der Performance lässt mich vermuten das ich das System noch nicht ganz verstanden habe.
Die Alternative zum einmal einlesen wäre mehrmals einlesen. Da ist irgendwie offensichtlich das ersteres besser ist ;)
Wieso also die Frage nach der Performance?
kerstel Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 06.05.15 10:36 
Hi,

die Frage der Performance stellt sich deshalb, weil ich nicht genau weiß ob das von mir beschriebene vorgehen besser ist, oder eben ein anderes :)

Ich versuche es mal anders zu erklären:
- Dienstleister liefert Artikeldatein (30MB) und Matchdatei (10MB)
- Lieferanten liefern Artikelzusatzdaten wie Lagerbestand und Preis

Einmal am Tag soll die Artikeldatei eingelesen werden. Mehrmals am Tag die Dateien der Lieferanten um Preise und Lagerbestände aktuell zu halten.

Jetzt die Frage:
Ist es sinnvoll beim einlesen der Artikeldaten auch gleich die Zusatzdaten der Lieferanten einzulesen und später nur noch die Zusatzdaten. Oder macht es Sinn die Prozesse komplett voneinander zu entkoppeln. Ich denke einfach das 300.000 Artikeldaten Ihre Zeit brauchen importiert zu werden. Oder vlt gibt es eine ganz andere Idee.

LG
Ralf
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 06.05.15 11:03 
Ohne Details klingt das erst mal danach das 2 Vorgänge sinnvoller wären. Unabhängig jetzt von einer Performancebetrachtung sondern einfach weil es nach deiner Beschreibung nach 2 verschiedenen Problemen klingt und die einzeln einfacher zu beherrschen und im Zweifel, wenn es zu Performanceproblemen kommt, einzelnn vermutlich einfacher zu optimieren sind.
kerstel Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 06.05.15 11:20 
Ok, Danke für die Antwort. Klingt so im Nachhinein für mich auch sinnvoller.

Sollte man dann die Artikeldaten und die Matchdatei irgendwie cachen? Unabhängig vom ERP? z.B. in einer SQLLite oder sowas? Ist glaube ich sinnvoller, als dass ich mir erst wieder das Matching und die Artikeldaten aus dem ERP ziehe, oder?
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 06.05.15 12:20 
Kann ich nicht wirklich beurteilen. Das du noch was aus dem ERP ziehen mußt war bisher nicht Teil des beschriebenen Problems. Wenn sich die Daten im ERP nicht auch über andere Wege ändern kannst du die gerne cachen. Wenn der Cache aber nicht zwingend synchron ist mit dem Zustand im ERP dann klingt ein Cache nach Problemen.
kerstel Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 06.05.15 13:46 
Ich muss nur Daten aus dem ERP ziehen wenn ich zwei Schritte mache, weil die Daten aus der Artikeldatei ja dann nicht mehr zur Verfügung stehen, weil in einem anderen Step eingelesen. Ich müsste ja auch nur die Artikelnummer cachen damit ich den Schnittpunkt zur Matchdatei habe.