Wieviele Daten passen in ein Array ?
peter
- javascript
0 wahsaga0 peter0 afra1 Sven Rautenberg
0 Siechfred
Hallo,
habe eine Datenbank mit 450.000 Einträgen.
Um in Javascript damit arbeiten zu können, will ich mir Stück für Stück Daten aus der Datenbank holen und sie einem assoziativen Javascript-Array hinzufügen.
Der Array würde dann also maximal 450.000 Elemente enthalten.
Die Elemente sind max. 4-stellige Zahlen mit 3 Nachkomma-Stellen.
Packt das Javascript das oder überlaste ich es damit ?
Welchen Einfluß hat die Länge der Elemente-Schlüssel ?
Hoffe, mir kann jemand Auskunft geben.
gruß
peter
hi,
habe eine Datenbank mit 450.000 Einträgen.
Um in Javascript damit arbeiten zu können,
Warum willst du eine solche Datenmasse am Stück und clientseitig verarbeiten?
Der Array würde dann also maximal 450.000 Elemente enthalten.
Die Elemente sind max. 4-stellige Zahlen mit 3 Nachkomma-Stellen.
Gehen wir von Zahlen aus, und nehmen ein 32-Bit/4-Byte Float als Datentyp an - dann wären das 1.800.000 Byte, also knapp 1758 KiloByte, also 1,72 MegaByte.
Packt das Javascript das oder überlaste ich es damit ?
Der Browser muss es packen.
Und je nachdem, welche Art der Be-/Verarbeitung du mit den Daten dann auch noch vorhast, musst du natürlich entsprechend mehr Speicherbedarf einkalkuliere.
Welchen Einfluß hat die Länge der Elemente-Schlüssel ?
Auch diese verbrauchen Speicherplatz :-)
gruß,
wahsaga
hi wahsaga,
vielen Dank für die Antwort !
Warum willst du eine solche Datenmasse am Stück und clientseitig verarbeiten?
Ich will die nicht am Stück verarbeiten, es werden immer nur 4 Werte von einer Funktion verarbeitet.
Ich muß aber alle Werte vorhalten, um nicht jedesmal bei einem Funktionsaufruf die entsprechende Werte aus der Datenbank holen (nachladen) zu müssen.
Geladen wird zunächst ein geeigneter begrenzter Wertebereich, der im Array gespeichert wird.
"Bewegt man sich" auf die Grenzen dieses Wertebereichs zu, werden entsprechend Werte eines wiederum begrenzten Bereichs nachgeladen und dem Array hinzugefügt.
Daß so nach und nach ALLE 450.000 Werte im Array landen ist recht unwahrscheinlich, aber theoretisch möglich.
Wie gesagt, nochmals vielen Dank für die Auskunft.
gruß
peter
Hallo Peter!
Ich muß aber alle Werte vorhalten, um nicht jedesmal bei einem Funktionsaufruf die entsprechende Werte aus der Datenbank holen (nachladen) zu müssen.
Geladen wird zunächst ein geeigneter begrenzter Wertebereich, der im Array gespeichert wird.
"Bewegt man sich" auf die Grenzen dieses Wertebereichs zu, werden entsprechend Werte eines wiederum begrenzten Bereichs nachgeladen und dem Array hinzugefügt.
Daß so nach und nach ALLE 450.000 Werte im Array landen ist recht unwahrscheinlich, aber theoretisch möglich.
Das hört sich nach _der_ Anwendungsmöglichkeit von AJAX an. Du kannst Dir doch immer genau die Menge an Daten vom Server holen die Du im Moment brauchst.
Schönen Gruß
Afra
Moin!
Ich will die nicht am Stück verarbeiten, es werden immer nur 4 Werte von einer Funktion verarbeitet.
Ich muß aber alle Werte vorhalten, um nicht jedesmal bei einem Funktionsaufruf die entsprechende Werte aus der Datenbank holen (nachladen) zu müssen.
Es dürfte aber extrem unwirtschaftlich sein, den zur Erzeugung des Arrays notwendigen Javascript-Code immer nachzuladen. Wie schon berechnet wurde, sind deine Daten bereits im Megabytebereich - und das betrifft nur die reinen Daten, dazu kommen dann mindestens noch ein paar Strukturinformationen (ich schätze mindestens nochmal die gleiche Menge), und um ein derartiges Array anzulegen, wird ja Javascript-Sourcecode gebraucht, in dem die Zahlenwerte nicht in 4-Byte-Floats, sondern in Stringnotierung vorkommen müssen.
Grobe Schätzung: Dein JAvascript-Code für die Arrayerzeugung kann durchaus 5 MB groß werden.
Und sowas willst du nicht ohne weiteres einfach jedesmal neu laden (was du vermutlich mußt, wenn sich deine Datenbank zwischendurch auch mal ändern kann). Und du willst das eigentlich auch nicht ausführen, denn 5 MB Javascript brauchen ja doch eine gewisse Zeit zum Precompiling und zur Ausführung.
Geladen wird zunächst ein geeigneter begrenzter Wertebereich, der im Array gespeichert wird.
"Bewegt man sich" auf die Grenzen dieses Wertebereichs zu, werden entsprechend Werte eines wiederum begrenzten Bereichs nachgeladen und dem Array hinzugefügt.
Mit AJAX den passenden Bereich vom Server abzufragen bietet sich also an. Ob es schlau ist, die aktuell nicht mehr benötigten Werte im Speicher zu behalten, mußt du vermutlich einfach mal ausprobieren. Es dürfte kaum Aufwand darstellen, dich bei Erreichen von Grenzbereichen noch anders zu entscheiden und beispielsweise nur den aktuellen und den vorherigen Bereich zu behalten. Die Werte würden sich ja nur endlos ansammeln, wenn man nach und nach immer weiter in eine Richtung "durchblättert". In diesem Fall aber braucht man die ganz zu Anfang geladenen Werte vermutlich nicht mehr.
- Sven Rautenberg
Hell-O!
habe eine Datenbank mit 450.000 Einträgen.
Um in Javascript damit arbeiten zu können, will ich mir Stück für Stück Daten aus der Datenbank holen und sie einem assoziativen Javascript-Array hinzufügen.
Brauchst du wirklich *alle* Daten auf einen Schlag in einem Array?
Packt das Javascript das oder überlaste ich es damit ?
Theoretisch sollte es kein Problem geben, wenn der Client über ausreichend Arbeitsspeicher verfügt. Praktisch dürftest du kaum einen Client finden, der soviel Speicher verfügbar hat (siehe Performance in Javascript - Arbeiten mit Arrays, unter "Erläuterungen").
Du solltest dein Konzept überdenken.
Siechfred