Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: samWare am 13.07.09 - 13:04:23

Titel: Speichergrenze für Arrays?
Beitrag von: samWare am 13.07.09 - 13:04:23
Hallo Leute,

für mein nächstes Projekt lese ich gigantische Datenmengen in ein 6 Dimensionales Array ein. Da ja Notes viele Schranken enthält, wollte ich fragen, ob ich ab einer bestimmten größe des Arrays mit Problemen rechnen muss. Währe nett wenn ihr so schnell wie möglich antworten könntet!

(Sorry für den Doublepost, aber ich habe das Gefühl dass keiner im N7 Entwickler Board liest ;))
Titel: Re: Speichergrenze für Arrays?
Beitrag von: samWare am 13.07.09 - 13:05:00
--Sorry hatte statt auf "Editieren" auf "Zitieren" geklickt--
Titel: Re: Speichergrenze für Arrays?
Beitrag von: koehlerbv am 13.07.09 - 13:10:26
Siehe DesignerHelp unter "Limits on array variables in LotusScript". By 64kB ist Ende Gelände.

Bernhard
Titel: Re: Speichergrenze für Arrays?
Beitrag von: samWare am 13.07.09 - 13:51:26
Danke dir Bernhard...
Titel: Re: Speichergrenze für Arrays?
Beitrag von: Thomas Schulte am 13.07.09 - 15:46:51
Wozu brauchst du ein sechsdimensionales Array?

Das wäre ein Arr(Arr(Arr(Arr(Arr(Arr(0))))))
Titel: Re: Speichergrenze für Arrays?
Beitrag von: samWare am 13.07.09 - 16:28:28
Mhh. Ich wollte richtig viele richtig große Datensätze in ein Array einlesen und danach ordentlich auswerten :'(;) Da bietet sich die Möglichkeit eines multidimensionalen Arrays geradezu an finde ich..

Titel: Re: Speichergrenze für Arrays?
Beitrag von: Thomas Schulte am 13.07.09 - 16:31:22
Da kannst du zum Beispiel mit List und Type arbeiten ...
Titel: Re: Speichergrenze für Arrays?
Beitrag von: koehlerbv am 13.07.09 - 17:25:43
Ergänzung zu Thomas: Der Datentyp List ist im Gegensatz zu Arrays nur durch den maximal zur Verfügung stehenden Speicher der Kiste (physisch + virtuell) begrenzt.

Ob Du allerdings mit Arrays oder Lists schneller und / oder bequemer arbeiten kannst als mit den tatsächlichen Notes-Dokumenten, hängt schon sehr vom Einzelfall ab. Ich habe da schon Konstrukte gesehen, zu denen mir nur einfiel: Komplizierter und / oder langsamer geht es nicht.

Vielleicht kannst Du daher zu Deinem eigentlichen Anliegen genaueres sagen.

Bernhard
Titel: Re: Speichergrenze für Arrays?
Beitrag von: Thomas Schulte am 13.07.09 - 17:27:26
Ja ein genauer Use Case wäre nicht schlecht. Dann könnten sich Gurus wie Berhard, Werner, Ulrich und andere Gedanken machen.
Titel: Re: Speichergrenze für Arrays?
Beitrag von: bikerboy am 20.07.09 - 16:10:15
Also ich habe auch mal "riesige" Datenmengen verglichen in 2 Datenbanken. Der ursprüngliche Code hat ca 10 Stunden gebraucht. Konnte das ganze unter Einsatz von einer Liste auf ne 3/4 Stunde runterbrechen.

Also ich finde Listen gut. Wenn du bei deinen 6 Dimensionen nur 6 Werte reinpacken willst, dann würde ich diese in einem String mit definierten Delimitern packen. Diese kannst du ja dann bei Bedarf wieder splitten. Die Frage ist die hier auch noch im Raum steht, warum willst du erst alles in ein Array/Liste packen ?  Wenn du die Daten ja schon mal in der Hand hast kannst du Sie doch bestimmt auch gleich ver-edv-tieren, oder ?
Titel: Re: Speichergrenze für Arrays?
Beitrag von: pram am 20.07.09 - 20:46:26
Ein kleiner Tipp, weiß nicht ob's in deinen Use-case passt. Man kann mittels Evaluate und @Password einen Hashwert über bestimmte Felder berechnen, welcher (so gut wie) eindeutig ist. Somit kann man den Speicherplatzbedarf auf
<Länge des Hashes> * <Anzahl Dokumente> beschränken (auch wenn Listen nahezu unbegrenzt sind).
Als Listtag wählt man idealerweise den Hashwert, somit kann man sofort sagen, ob man den Wert schon verarbeitet hat.

Btw. Datenbanken vergleichen (Docs und Design) geht auch relativ einfach über DXL-Export der gewünschten Docs und anschließend mittels Tools wie beyondcompare vergleichen

Gruß
Roland
Titel: Re: Speichergrenze für Arrays?
Beitrag von: samWare am 29.07.09 - 12:06:21
Danke für diese vielen Anregungen. Hatte zwischen drin ein anderes Projekt geschrieben. Jetzt ist wieder das besagte an der Reihe.

K.A. ob das geheim ist, aber ich kann ja trotzdem mal sagen um was es eig. geht:

Ich erstelle aus zusammengetragenen App/Tsk-Dokumenten aus unserem Gruppenkalender Tages-/Monatsübersichtsdokumente (Dokumente mit Zahlenfeldern, werden in Ansichten mit "Wert als Symbol anzeigen" angezeigt). Im großen und ganzen (vom Korrektursystem her usw.) ist das schon alles ganzschön gut durchdacht (meiner Meinung nach). Wo ich nur tooootal ins Klo gegriffen habe ist beim erstellen. Dort gehe ich nähmlich nach folgender Müll-Methodik vor:

Ich baue eine entrycollection aus allen App/Tsk-Dokumenten.
 -> Durchlaufe alle Dokumente.
      |
      ->Springe ins Dokument:
Löse alle Namen / Datums-Zeitwerte auf. Mache noch andere tolle Dinge die ich jetzt nicht sagen will.

Ich hab im vorherigen Schritt unter anderem 2 Arrays gebildet. Eins für die Namen, eins für die Datum/Zeit-Werte.
Jetzt giebts ne Schleife die Alle Namen durchläuft. In dieser Schleife ist ne Schleife die die Datum/Zeit-Werte durchläuft.

JETZT KOMMT DER PERFORMANCE-SCHROTT: Ich sehe dann jeweils nach ob zu dem jeweiligen Namen/Datum/Zeitwert bereits ein Dokument besteht. Wenn ja update ich das jeweilige Dokument (dabei wird halt immer nur der eine Symbolwert in das einschlägige Feld geschrieben). Wenns noch kein Dokument zu den jeweiligen Daten besteht lege ich eines an.

Meine Idee zur Verbesserung war das ganze mit sonem Dicken fetten Array zu lösen, in das ich alle meine Werte aufeinmal einlese und danach gezielt in einem aufwasch in die Dokumente schreibe. Damit hätt ich das Zeitaufwendige rumgespeichere nicht mehr, sondern würde jedes Dokument halt nur einmal Speichern.

Natürlich kann man das oben beschriebene ZeitArray komplett mit den jeweils möglichen Zeitpunkten des zu updatenden/erstellenden Dokuments vergleichen und dann eintragen und einmal Speichern.

Ist aber noch nicht die optimale Lösung da es sich bei den einzelnen Feldern im Dokument um Mehrfachfelder handelt, in dem dann eben die - sich möglicherweise überschneidenden - Termine aufgelistet werden (ja sowas ist vom logischen Standpunkt her möglich^^). Das macht es mir beim Korrigieren leichter (veränderungen am App/Task-Dokument werden natürlich auch behandelt, ich nenne das hier "Korrigieren").

Vllt. wisst ihr ja die optimale Lösung  ;D Ich bin wahrscheinlich einfach noch zu unerfahren für derartige Riesenprojekte..

Danke schon mal im voraus...
Titel: Re: Speichergrenze für Arrays?
Beitrag von: Thomas Schulte am 29.07.09 - 12:33:55
Arbeite mit Listen.
Titel: Re: Speichergrenze für Arrays?
Beitrag von: samWare am 29.07.09 - 13:34:43
Bin dabei  ;)