|
|
|
|
serverseitige Programmiersprache |
Zmaster
Junior Member
Dabei seit: 15.02.2003
Beiträge: 133
|
|
serverseitige Programmiersprache |
|
Hallo,
ich möchte mit einem Kumpel bald ein kleines Projekt starten. Es soll zum Schluss mehr oder weniger ein Bild an den Anwender schicken.
Die Programmiersprache muss Daten aus einer Datenbank holen und dann mit diesen arbeiten können. Ich würde mal schätzen, dass die Rechenzeit für die Datenbankabfrage ca. 20% in Anspruch nimmt. Der Rest ist die Kalkulation mit diesen Daten.
Da die Daten sehr groß sind, ist es uns wichtig, dass diese wirklich schnell abgearbeitet werden können.
Nun stellt sich natürlich die Frage, welche Programmiersprache am Besten geeignet ist. PHP und MySql würden zwar unsere Erwartungen in Sachen "realisierbar" erfüllen, aber wir halten sie schlichtweg einfach für zu langsam. Derzeit würden wir Java Server Page nehmen. Ist das ratsam?
Welche serverseitige Sprache würdert ihr empfehlen?
Gruß
zmaster
|
|
11.06.2004 01:08 |
|
|
CDW
eine Simulation
Dabei seit: 12.10.2002
Beiträge: 1.329
Herkunft: CreateRemoteThread
|
|
|
11.06.2004 14:32 |
|
|
phlox81
Bote des Lichts und Moderator
Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo
|
|
JSP ist schneller als PHP, doch was bringt es bei grossen
Datenmengen, wenn dann immer noch eine schlechte Performance
der MySQL datenbank hat. Imho könnte man die MySQL DB
gut gegen eine PostgreSQL oder Teradata Datenbank tauschen.
Oder eine Firebird, welche ja auch frei zu haben ist.
Was CGI angeht, da ist doch einwenig erfahrung nötig,
genauso wie für JSP, zudem ihr schon PHP könnt, ist
es evtl. sinnvoller erst die DB zu optimieren.
Devil
__________________ Intelligenz ist eine Illusion des Menschen
phlox81.de | codenode.de
|
|
11.06.2004 16:44 |
|
|
CDW
eine Simulation
Dabei seit: 12.10.2002
Beiträge: 1.329
Herkunft: CreateRemoteThread
|
|
@Devil:
Zitat: |
JSP ist schneller als PHP |
gut zu wissen...
Zitat: |
Was CGI angeht, da ist doch einwenig erfahrung nötig |
mit ganz schlechtem stil:
StdIn und StdOut (hab gerade eine Demo-cgi auf der platte gefunden
), eventuell noch ein paar Globalvariablen abfragen (je nach Bedarf)... die CGI Spezifizierung ist zwar recht komplex, man braucht aber nicht unbediengt alles zu beachten - wenn es für ein eigenes Projekt ist
Naja, gut, um kein Sicherheitsloch zu erschaffen sollte man schon die Augen auflassen (oder statt C Pascal/Delphi C++ nehmen (wegen der Stringverarbeitung) )
Aber im Prinzip sollte ein Tag reichen um sich mit CGI vertraut zu machen.
PS: ich plädiere immer noch für eine eigene Datenbank
- allerdings lohnt es sich eventuell nicht eine eigene zu scheiben (falls die struktur der Daten zu komplex ist).Ansonsten müsste eigentlich auch ein primitiver Index-array eine relationale Datenbank hinter sich lassen (nur lässen sich damit nur einfache Strukturen erfassen )
|
|
11.06.2004 23:16 |
|
|
phlox81
Bote des Lichts und Moderator
Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo
|
|
|
12.06.2004 00:47 |
|
|
Zmaster
Junior Member
Dabei seit: 15.02.2003
Beiträge: 133
Themenstarter
|
|
Also wir haben keinen Auftraggeber - erst recht nicht die Schule!
Datenbank selber schreiben? hm...
Ich hoffe, du meinst jetzt nicht das ganze bloß in Dateien reinschreiben, weil das nun nicht wirklich den Performance-Vorteil bringt. Ich selber habe sehr viel Erfahrung mit MySql, aber werde mich mal weiter erkundigen, welche Datenbanken es noch so im Angebot gibt. Eventuell kaufen wir uns auch eine Lizens. Aber da muss man erstmal sehen, wie sich das Projekt entwickelt.
Ich merke schon, dass ihr von Java nicht wirklich fasziniert seid. Kann ich auch gut verstehen. Ich tendiere auch immer mehr zu C++ mit CGI als Schnittstelle.
Mein Kumpel ist in C++ ein bisschen firm, aber mit CGI fangen wir beide das erste Mal an. Aber da mache ich mir mal nicht so große Sorgen. Wir haben schon ganz andere Sachen geschaft
Ich will mal soviel verraten: Es soll eine Stadtkarte gezeichnet werden.
Welche Grundidee aber noch dahinter steht, verrate ich nicht.
Es müssen also Punkte für die Straßen gespeichert werden. Diese werden in die Datenbank geschrieben und zum Zeichnen des Bildes wieder ausgelesen und miteinander verbunden. Der Server schickt dann nur noch eine Bild Datei an den Client. Vielleicht noch ein kleine JavaApplet, womit der User ein paar Aktionen machen kann, ohne den Server zu belästigen.
Gruß
zmaster
|
|
12.06.2004 10:54 |
|
|
phlox81
Bote des Lichts und Moderator
Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo
|
|
Zitat: |
Original von Zmaster
Ich merke schon, dass ihr von Java nicht wirklich fasziniert seid. Kann ich auch gut verstehen. Ich tendiere auch immer mehr zu C++ mit CGI als Schnittstelle.
Mein Kumpel ist in C++ ein bisschen firm, aber mit CGI fangen wir beide das erste Mal an. Aber da mache ich mir mal nicht so große Sorgen. Wir haben schon ganz andere Sachen geschaft
|
Das hab ich nicht gesagt.
JSP hat sogar viele Vorteile, da es mit JDBC zusammen direkt
eine sehr gute Datenbankschnittstelle anbietet, und durch die
Objektorientierung bietet sich auch eine sehr einfache Modularisierung
an. Zu dem werden heute viele große Projekte in JSP gemacht,
es ist also nicht verkehrt, es zu kennen und zu können.
Devil
__________________ Intelligenz ist eine Illusion des Menschen
phlox81.de | codenode.de
|
|
12.06.2004 11:24 |
|
|
CDW
eine Simulation
Dabei seit: 12.10.2002
Beiträge: 1.329
Herkunft: CreateRemoteThread
|
|
Zitat: |
Ich hoffe, du meinst jetzt nicht das ganze bloß in Dateien reinschreiben, weil das nun nicht wirklich den Performance-Vorteil bringt |
eigentlich doch
- ist nur die Frage der organisation und komplexität. Bzw. haben für mich Dateien nix mit einer Datenbank zu tun
(zumindest nicht direkt).
Zitat: |
von wikipedia: Eine Datenbank ist die elektronische Form eines Karteikastens. Es handelt sich um eine Sammlung von Daten, die aus der Sicht des Benutzers zusammengehören, z. B. eine Personaldatenbank oder eine Lagerinventardatenbank. Es gibt hierarchische, relationale, multidimensionale und objektorientierte Datenbanken. Die Datenbank wird üblicherweise von einem Datenbankverwaltungssystem (DBMS) verwaltet. Ein DBMS zusammen mit einer oder mehreren Datenbanken nennt man auch Datenbanksystem. |
so gesehen hat bestimmt schon mal jeder eine Datenbank geschrieben - sei es ein Adressenverwalter oder Teminkalender - auch auf Arraybasis. Ein Array von 0 bis 2004 in welchem jeweils die Ereignise stehen die im entsprechendem Jahr stattgefunden haben ist schon eine Datenbank.
Ich beschreib das mal so: man speichert die Straßennahmen mit den dazugehörigen koordinaten.Sortiert nach Strassennahmen. Wichtig ist hier die schnelle Suche nach dem Namen.Man kann es in einer Liste machen, aber dann müsste man die Liste bei der suche immer durchlaufen (bei 4294967296 einträgen im schnitt 2142967296 Schritte).
Dagegen wäre hier ein Binärbaum nahezu perfekt (wenn man 4294967296 Elemente durchsucht, braucht man maximal 32 schritte). Aus der programmiertechnischen Sicht ist es natürlich günstig den Baum im Speicher zu behalten und nur Backups als Dateien abzulegen
.
Es gibt ja relativ viele Datenbankmodelle - MySql ist relational und müsste demnach die Daten in einer zweidimensionalen Tabelle verwalten die über Schlüssel miteinander verknüpft sind - ziemlich universell aber auch langsam (relativ
). Jedenfalls gehe ich jede Wette ein, dass mein Beispiel mit dem Array da oben geschwindigkeitsmäßig (wenn man sucht was in einem bestimmten Jahr passiert ist) MySql & Co um Längen schlägt - natürlich sieht es wiederum anders aus, falls man plötzlich nach einem Ereignis sucht und nicht weiß in welchem Jahr es eingetreten ist.
Natürlich spielen hier auch Algorithmen eine große Rolle - die kommen direkt nach dem Konzept - mit einem schlechten Algo kann man auch ein gutes Konzept und Assembler/MMX optimierung nicht wieder wett machen
Z.B kann man eine Textdatei nach einem Wort duchsuchen, in dem man buchstabe für buchstabe duchrgeht und vergleicht. Schneller gehts aber mit dem Boyer Moore Algo.
Zurück zum thema:
So ist es auch mit dem Binärbaum - sollte man mehrere Verknüpunfgen der Daten unter einander benötigen, wird die organisation schon mal komplexer... (meine komlexeste Datenbankstruktur war bis jetzt ein Binärbaum mit einer ListeInListe mit Verweisen auf einen anderen Baum ( Abiklausur - umsetzen wollen würde ich das nicht
)). Das heißt ab einer gewissen Komplexität lohnt es sich nicht auf eine professionelle Datenbank zu verzichnten (zuviel aufwand). Vielleicht lohnt es sich eher nach den Anforderungen zu schauen und dann das passende datenbankmodell herauszusuchen (hierarchisch, objektorientiert usw). Ihr müsst es entscheiden. Ich sage nicht dass professionelle Datenbanksysteme schlecht seinen - man muss nur bedenken wozu die da sind und welche Aufgaben sie zu erfüllen haben. Denn für eine Firma ist es viel billiger eine universelle Datenbank zu verwenden als für jedes Problem eine eignene, angepasste zu entwickeln (bzw. entwickeln zu lassen).
Ok, hoffe mein Anliegen verständlich rübergebracht zu haben
Zitat: |
Wie gesagt, imho ist die Datenbank der Punkt, wo man am meisten holen
wird können. |
Das wäre auch so ein Streitpunkt
- da hier mit den Daten gerechnet werden soll kann man viel mit einem richtigen Algo holen, dann immer kleinschrittiger optimieren (compileroptionen) + Cacheausrichtung, Alignen und eventuell inline-asm+MMX nutzung oder zusammenfassung der Rechenoperationen zur Blöcken (wegen FPU) oder nutzung von MMX und so weiter und so fort. Intelcompiler könnte hier schnonmal gute Dienste leisten. Kenntniss der jeweiligen Tricks wären auch nicht schlecht. Programmiererfahrung spielt da auch eine Rolle.
|
|
12.06.2004 23:27 |
|
|
phlox81
Bote des Lichts und Moderator
Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo
|
|
Ich hab im Januar den Terradata Physical Implementation Kurs gehabt.
Da gings unteranderem darum, wie man ne moderene Relationale
DB aufbaut, und wie die DB dann die Daten über die einzelnen
Knoten verteilt, und wie die Tabellenstruktur darauf sich auswirkt.
Ich kann nur sagen, das war sehr interessant, mal zu sehen,
wie die Daten auf den DB-Amps(Knoten) verteilt werden.
Devil
__________________ Intelligenz ist eine Illusion des Menschen
phlox81.de | codenode.de
|
|
13.06.2004 00:11 |
|
|
Zmaster
Junior Member
Dabei seit: 15.02.2003
Beiträge: 133
Themenstarter
|
|
Mal kurz zu CDW:
Ich weiß schon, was du mit deinen Dateien meinst. So ähnliche Programme habe ich früher auch mal geschrieben.
Einer wirklichen Datenbank soll das aber nicht entsprechen. Ein Kumpel (Wirtschaftsinformatiker) meinte nur, dass eine richtige Datenbank als Prozess laufe. Im Hintergrund werden natürlich auch Dateien zum Teil gespeichert, aber der Geschwindigkeitsunterschied ist doch, so glaube ich, ersichtlich, wenn ich erst eine Datei öffnen muss, als wenn ich aus einem laufenden Prozess Daten hole.
Das mit deinem Binärbaum erscheint mir nicht passend für unser Projekt. Die korrekte Reihenfolge ist natürlich für die Performace richtig, aber wenn ich in MySql den Index anlege, dann sortiert er intern selber und ich muss mich nicht drum kümmern
Außerdem werden ein paar mehr Daten hinterlegt als bloß die Koordinaten. Das erscheint mir zu komplex, als es in einen Listenbaum einzutragen (zumal ich damit überhaupt noch keine Erfahrung habe
).
Gruß
zmaster
|
|
13.06.2004 11:07 |
|
|
CDW
eine Simulation
Dabei seit: 12.10.2002
Beiträge: 1.329
Herkunft: CreateRemoteThread
|
|
Zitat: |
Das mit deinem Binärbaum erscheint mir nicht passend für unser Projekt. Die korrekte Reihenfolge ist natürlich für die Performace richtig, aber wenn ich in MySql den Index anlege, dann sortiert er intern selber und ich muss mich nicht drum kümmern
Außerdem werden ein paar mehr Daten hinterlegt als bloß die Koordinaten. Das erscheint mir zu komplex, als es in einen Listenbaum einzutragen |
das ist einleuchtend... zudem war es ja nur ein Beispiel
Zitat: |
dass eine richtige Datenbank als Prozess laufe. Im Hintergrund werden natürlich auch Dateien zum Teil gespeichert, aber der Geschwindigkeitsunterschied ist doch, so glaube ich, ersichtlich, wenn ich erst eine Datei öffnen muss, als wenn ich aus einem laufenden Prozess Daten hole. |
Ich glaub wir reden doch ein bisschen an einander vorbei
ich habe die ganze Zeit unabhängig von der Programmiersprache,programmiertechnischen Mitteln und OS gesprochen. Aber ich glaube es ist einleuchtend dass die Daten in die Datenbank nicht durch ein Zauberwort reinkommen
- sie werden beim Start in den Speicher geladen und organisiert. Genauso werden die auch als Files gesichert. Niemand zwingt den Programmierer jedesmal eine Datei zu öffnen, auszulesen und zu schließen - obwohl es ja möglich ist. Man mappt die Datei in den Speicher und lässt sie da drin solange man damit arbeitet - das ganze gehört aber schon zur programmiertechnischen Umsetzung (wäre ja auch möglich aus den Dateien auszulesen und die wieder zu schließen
). Also wenn ein Programm welches Textdateien indizieren kann und später in Sekundenbruchteilen dem User sagt wo (in welcher Datei, welche Zeile usw) der gesuchte Begriff sich befindet keine Datenbank ist dann weiß ich auch nicht weiter
. Die Definition von Wikipedia entspricht eigentlich der die ich eingetrichtert bekommen habe
und in unzähligen Klausuren sowie in der Prüfung zu lösen hatte (schreiben sie ein Lexika blabla, schreiben sie für eine Praxis ein Patientenverwaltungsprogramm, dessen Datenbank solche Daten aufnehmen muss wie blablabla). Dateien sind für mich grob gesagt nur Speicherabbildungen der Datenbank die man zur Sicherung braucht (um nicht jedesmal die Daten neu eingeben zu müssen), und wie die DB eigentlich im Hintergrund funktioniert (ob sie ihre Daten in Bäumen oder Listen verwaltet, ob sie diese sofort als Dateien ablegt oder im Speicher behält) hat ja eigentlich nichts zu sagen (außer der Perfomance
)
Die Perfomancevorteile im eigenen Programm gegenüber einer DB kann man also nur durch geschicktere Organisation der Daten und deren Verwaltung rausschlagen.
|
|
13.06.2004 15:41 |
|
|
|
|
|
|