Ergebnis 1 bis 9 von 9
  1. #1
    Mitglied
    Registriert seit
    Jan 2009
    Beiträge
    172

    Standard [C#] Datensatz suchen

    Guten Morgen!

    Ich habe eine CSV-Datei mit rund 270.000 Datensätzen. (Kann weniger, aber auch mehr werden, ist abhängig vom Kunden) Diese Datei hat den folgenden Aufbau:

    artikelnummer;artikelbezeichnung

    Ich möchte die Daten gerne auf einem Windows CE Gerät abrufen. Das bedeutet ein Kunde gibt eine Artikelnummer ein, und erhält die Artikelbezeichnung ausgegeben.

    Das Hauptproblem ist jetzt natürlich die Form der Speicherung. Zuerst habe ich überlegt, ob die Datenstruktur Dictionary eventuell den Zweck erfüllen würde, jedoch mache ich mir Sorgen, dass der RAM des CE Geräts der Datenmenge nicht standhalten kann.
    Auch bei einer Iteration durch die CSV-Datei habe ich so meine Zweifel, da auch diese nicht wirklich schnell sein wird.
    Da das Programm relativ schlank gehalten werden soll, möchte ich nicht unbedingt eine Datenbankanbedingung hinzufügen, bei der die Daten von der CSV-Datei in eine Datenbank geladen werden können und danach abgefragt werden.
    Leider kann ich die Daten nicht sortiert ausgeben. Die Artikelnummern sind keine Interger sondern Strings.

    Habt ihr eine Idee wie das Handling mit der Datei am besten funktionieren würde?

    Liebe Grüße

  2. #2
    Mitglied
    Registriert seit
    Oct 2009
    Beiträge
    703

    Standard Re: [C#] Datensatz suchen

    Das könnte in der Tat ein Problem sein - solle man vielleicht erstmal testen.

    Hast du die Möglichkeit die csv datei in verschiedene Datein aufzuspalten (um sie dann erstmal nach irgendeiner Sortierung aufzuteilen)?

  3. #3
    Mitglied

    (Threadstarter)


    Registriert seit
    Jan 2009
    Beiträge
    172

    Standard Re: [C#] Datensatz suchen

    Die Datei wird prinzipiell über unsere eigene Warenwirtschaft generiert, das bedeutet ich müsste nur mit dem zuständigen Kollegen besprechen in welchem Format die Daten vorliegen sollen. Es muss jetzt auch nicht zwingend CSV sein.

  4. #4
    Mitglied
    Registriert seit
    Oct 2009
    Beiträge
    703

    Standard Re: [C#] Datensatz suchen

    Du wirst um eine entsprechende Indexierung nicht herum kommen. Die Indexierung hilft dir aber nur wenn du die Datensätze auf mehrere cvs oder xml files aufteilen kannst und genau dort könnte man sich ja schon eine sinnvolle Aufsplitung überlegen.

  5. #5
    Werbekritiker Avatar von StaTiC
    Registriert seit
    May 2003
    Beiträge
    14.143

    Standard Re: [C#] Datensatz suchen

    man kann auch strings sortieren.

  6. #6
    Mitglied

    (Threadstarter)


    Registriert seit
    Jan 2009
    Beiträge
    172

    Standard Re: [C#] Datensatz suchen

    Ich bin mir im Klaren, dass ich auch nach Strings sortieren/suchen kann!
    Die Tatsache, dass die Artikelnummer aus Strings besteht war nur eine Zusatzinformation die ich nicht vorenthalten wollte.

  7. #7
    Mitglied
    Registriert seit
    Apr 2011
    Beiträge
    34

    Standard Re: [C#] Datensatz suchen

    Für so etwas ist eine Datenbank die einfachste Lösung, wenn der Hauptspeicher nicht für die komplette Datenmege reicht oder aus anderen Gründen geschont werden sollen.
    Da Du aber auf den Overhead der Datenbank verzichten willst, und es - wenn ich das richtig verstanden habe - nur ein Suchkriterium (Artikelnummer) gibt, die Genierung der Daten beeinflussbar ist und die Daten am Gerät nicht verändert werden, sind auch File(-System) basierte Ansätze denkbar :

    Variante a)
    Die Datei ist nach der Artikelnummer vorsortiert und in einem Fixed-Length Format.
    Dann kannst Du Dich mit Binärsuche durch die Datei hanteln, da die Fileposition jedes Records berechenbar ist. Das ist ähnlich flott wie eine Datenbank.

    Variante b)
    Die Datei splitten und ggf. in einer Verzeichnisstruktur abbilden.
    Annahme, die Artikelnummer wäre numerisch und 8 Stellen lang (ggf mit führenden Nullen auffüllen), könnte das z.B. so aussehen :

    Artikelnummer 12345678 wird übersetzt in den Dateipfad <Daten>\12\34\56.csv
    Diese Datei enthält dann die Artikelnummern 12345600 -12345699, also max. 100 Artikel => Datei laden und im Hauptspeicher suchen.

    Wenn auch nach Artikelname gesucht werden muss, sind diese Varianten nur bedingt geeignet (a = langsam, b = langsam und kompliziert).

  8. #8
    Mitglied
    Registriert seit
    Oct 2009
    Beiträge
    703

    Standard Re: [C#] Datensatz suchen

    Wie wäre es denn mit einer schöne NoSQL DB .. wobei ich nicht weiß in wieweit CouchDB/MongoDB und co auf CE laufen.

    Ansonsten bleibt eben wie schon gesagt, die Daten nach einer Systematik aufzusplitten. Wenn ihr sowieso die Kontrolle der Daten inne habt, dann könntet ihr ja eine weiteren String für eine einfache Zuordnung hinzufügen.

  9. #9
    Mitglied Avatar von lupo1977
    Registriert seit
    Feb 2006
    Ort
    Hier & Jetzt
    Beiträge
    1.151

    Standard Re: [C#] Datensatz suchen

    Zuerst habe ich überlegt, ob die Datenstruktur Dictionary eventuell den Zweck erfüllen würde, jedoch mache ich mir Sorgen, dass der RAM des CE Geräts der Datenmenge nicht standhalten kann.
    Über wie viele Datensätze reden wir denn?

    möchte ich nicht unbedingt eine Datenbankanbedingung hinzufügen
    In welcher Sprache willst Du das Tool denn entwickeln? Falls in C#, dann würde ich das schon in Betracht ziehen. Viel komplizierter als die anderen Vorschläge ist das dann auch nicht.

    Schau Dir mal SqLite an.
    http://www.sqlite.org/
    Und auch Microsofts antwort darauf.
    http://nolovelust.com/post/Microsoft...Edition-4.aspx

  10.  
     
     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •