Hallo Uwe

Am 16.03.2010 09:19, schrieb Uwe Altmann:
Hi Salvalaggio ( nenn mich einfach Marino so sagen hier alle  :-D  )

Zum anderen aber, Numerische oder String Variable.... Da habe ich schon
gewisse Vorbehalte.
Die stammen aus meiner Praxis der Programmierung. Diese liegen auf der
Ebene der Funktionalität und Rechenintensivität gekapselter Programmteile.
Ja klar, C (oder fast jede andere verbreitete Sprache) ist besser beim
Zahlenschubsen. Das hier ist aber eine Datenbank - der ist es erst mal
völlig egal, was an Position(Index Nr soundso) aus dem file gelesen und
an dene client weitergegeben wird - es sind halt "nur" ein paaar bit
mehr Daten. Wie gesagt - du rechnest ja nie damit, es ist ja reiner I/O.
Andererseites gewinnst du viel Sicherheit durch eine korrekte
Typisierung. Und vermeidet die dauernden
integer-zu-string-Konvertierungen und andere von Dir ja schon genannten
Merkwürdigkeiten.
Ist letztlich aber eine Frage des Programmierstils. Ich bin aber
ziemlich sicher: Es würde auf das Startverhalten Deiner Anwendung keinen
messbaren Einfluss haben.

Es ist sicher so, dass bei meinem Beispiel, welches ich hier angeführt habe, das irrelevant ist. Doch da denke ich halt ein wenig weiter... Ich habe in meinem Hinterkopf eine Datenbank, in der diese ersten Tabelle nur der Ansatz sind. Bei der Datenflut, die ich dann zumal in meine Tabellen einzutragen habe, wird das aber letzlich wirklich zum tragen kommen.

Was ich jetzt beschreibe betrifft nur eine einzige Steuerung.
Von diesen sind bei uns zur Zeit über 30 in Betrieb, wobei der Datendurchsatz in der Regel bedeuten höher ist. Zum Teil jede Sekunde ein neuer Wert!

Stell dir mal vor, in einer Lokalen Steuerung gibt es zur Zeit 6 dreidimensionale Arrays. In diesen werden. 1..7, 0..23, 0..3 1.für die Wochentage, 2. für die Stunden und 3. für die viertel Stunden abgelegt. In jedem Feld findet sich ein Integer-Wert.

Alle diese Werte werden neu schliesslich in eine Datei geschrieben. Alle diese sind definitiv berechnet und werden nur noch zu statistischen Zwecken weiter verwendet. Wenn wir das umrechnen, so ergibt das 7*24*4 = 672 Felder je Tabelle / Woche im Jahr also 34'944 Einträge * 6 Messwerte das sind immerhin stolze 209'664 Datenpunkte. Auf der Steuerung könnte ich diese problemlos auch als ASCII-String übergeben. Würde weder Mühe noch Aufwand erfordern.

Jetzt nehmen wir mal an, ich würde die als Sting übergeben. In der Datei würden nun also zu jeder Viertelstunde ein Eintrag gemacht. Als Integervariable nutze ich 2Byte je Datenpunkt und kann von gerundet von -32 000...+32'000 darstellen. In ASCII muss je Ziffer ein Byte bereitgestellt werden. Für die Zahl 32'000 also 5Byte.

Das Ergebnis ist jetzt also:

mit Integer: 209'664*2 = 419'328 Byte pro Jahr ergo rund ein halbes MByte.
mit ASCII    209'664*5 =    1'048'320 Byte pro Jahr

Da wir solche Daten, über viele Jahre zu halten haben (langjähriges Mittel beträgt im Kraftwerk >30 Jahre) kannst du Dir den Umfang der Datei selber ausmalen....

Jetzt sortiere mal die Daten via Abfragen für Formulare oder Berichte - wirst du wohl feststellen ob da Rechenzeitdifferenzen auftreten?
Ich wage zu behaupten - mit Sicherheit!

Letztlich ist es eine Frage der Ressourcenverwendung im Projekt -
sozusagen "schnellerer Start oder funktionierendes Datenbankmodul?".
Ich könnte mir aber andererseits schon ein paar Leute vorstellen, die da
wirklich froh über Deine Hilfe wären.

Wie Du siehst, stammen meine Bedenken aus der Praxis....

Gruss Marino

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Antwort per Email an