Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Datenbankabfrage - Result verteilen?

Hallo,

momentan bin ich dabei ein kleineres CMS (PHP, MySql) für private Zwecke zu entwickeln.
Das ganze soll im großen und ganzen so funtkionieren:

Die Hauptseite mit einer LinkListe wird aus einer Datenbank generiert. Alle Informationen stehen in einer Tabelle (13 Spalten).
Von den 13 Spalten werden 10 für die Linkliste benötigt.
Die restlichen 3 Spalten enthalten die Informationen, die benötigt werden, wenn auf einen Link in der Liste geklickt wird.
( URL des anzuzeigenden Contents,HTML Titel des Framesets und Adwords)

Wenn auf einen der Links geklickt wird, soll anhand der ID des Links ein dynamisches Frameset geladen werden. Nun würde ich für das Frameset ansich, aber auch für alle 3 Seiten die das Frameset darstellt Informationen benötigen, die in der Datenbank stehen.

Daher meine Frage:

- Wenn ich für den Aufbau einer Seite 4 mal die Datenbank aufmachen muss um 4 mal dieselben Informationen zu erhalten, werde ich bei mehreren User sehr schnell Performanceprobleme bekommen, oder macht der lesende Zugriff nicht so viel aus?

- Gibt es eine Möglichkeit, das ganze mit weniger Datenbank abfragen zu realisieren (ohne POST/GET)?

Hoffe, ich konnte mein Anliegen verständlich machen.
Bin dankbar für jede Hilfestellung.

Hier gehts zum Orginal Eintrag "Datenbankabfrage - Result verteilen?" im Forum

Antworten

wieso willst du denn ein frameset benutzen? frames machen meines erachtens nur probleme und bringen nichts.
Zitat:
Von den 13 Spalten werden 10 für die Linkliste benötigt.
dein datenbanklayout ist kaputt. was du suchst ist eine 1xN oder NxM verknüpfung (--> googlen). alles in eine tabelle zu quetschen wird dir später nur probleme machen.
Zitat:
- Wenn ich für den Aufbau einer Seite 4 mal die Datenbank aufmachen muss um 4 mal dieselben Informationen zu erhalten, werde ich bei mehreren User sehr schnell Performanceprobleme bekommen, oder macht der lesende Zugriff nicht so viel aus?
ohne messungen und tests lassen sich keine aussagen über die performance machen. allerdings wage ich zu bezweifeln, ob das bei nur 4 abfragen irgendwie relevant ist. aber grundsätzlich machst du was falsch, wenn du 4 mal dieselbe frage (an die datenbank) stellst :-)


2.

datenbank-abfrage reicht einmal auf der seite welche das frameset generiert.
die daten werden dann an die 4 frames weitergegeben indem die erforderlichen variablen mittels query-string an die urls der frames angehängt werden. anders wird es nicht gehen.
sicherheit ist zu beachten, die daten dann nicht ungeprüft in den frames weiterverarbeiten.

auf der andern seite gibts in mysql ja auch noch den query cache. kostet zwar auch leistung aber besser als garnix...


3.

oder gleich ganz auf frames verzichten. sonst muss man jedesmal das ganze frameset neuladen und damit ist auch der allerletzte vorteil von frames futsch.


4.

Vielen Dank für die ganzen Antworten!

Zitat:
wieso willst du denn ein frameset benutzen? frames machen meines erachtens nur probleme und bringen nichts.
Das Frameset will ich dazu benutzen, den angezeigten Content davor zu schützen, von Anderen direkt oder in deren Frameset anziegen zu lassen. Zusätzlich hab ich vor die Werbung im Frameset anzuzeigen.

Zitat:
dein datenbanklayout ist kaputt. was du suchst ist eine 1xN oder NxM verknüpfung (--> googlen). alles in eine tabelle zu quetschen wird dir später nur probleme machen.
Das mit der Normalisierung hatte ich mir auch überlegt, aber es gibt keine sinnvolle Möglichkeit. Das einzige was ich dadurch erreichen würde, wären eine höhere Komplexität und mehrere Tables die ich dann wieder joinen müsste. Ist normalerweise gut, in meinem Fall aber nicht nötig.

Zitat:
die daten werden dann an die 4 frames weitergegeben indem die erforderlichen variablen mittels query-string an die urls der frames angehängt werden.
Das Problem bei der Übergabe per QueryString ist, dass ich eine ganez Menge an Daten an die einzelnen Seiten weiterreichen müsste. Die Daten bestehen aus einem Textfeld und (möglicherweise bis zu 10) URLs. Da bekomme ich dann ganz ordentliche Probleme mit der Überprüfung.

Also ist es wohl doch am einfachsten, wenn ich von jedem Frame die Abfrage starte...

Aber da hab ich noch ein paar Fragen.

1. Sollte/Kann man das db_close sofort nach erhalt des Results ausführen und nicht erst am Ende des Skripts, um die Datenbankverbindung schnellstmöglich zu schliessen und mehr Performance zu erhalten?

2. Könnte es da Konflikte geben, bei gleichzeitiger identischer Anfrage an die Datenbank oder schliesst db_close zuverlässig die richtige Verbindung?

Vielen Dank für eure Mühe!

Grüße, M-Nasty


5.

Zitat:
Das Frameset will ich dazu benutzen, den angezeigten Content davor zu schützen, von Anderen direkt oder in deren Frameset anziegen zu lassen. Zusätzlich hab ich vor die Werbung im Frameset anzuzeigen.
wenn du wirklich glaubst, dass du deinen quelltext so schützen kannst, ist dir wirklich nicht mehr zu helfen.
Zitat:
Ist normalerweise gut, in meinem Fall aber nicht nötig.
wie kommst du darauf, dass dein vorhaben etwas besonderes ist und dass "dein fall" auch ohne eine "normalerweise gute" lösung auskommt?

aber du scheinst ja ziemlich beratungsresistent zu sein. gegen jede vernunft möchtest du aus irgendwelchen gründen unbedingt mit frames und schlechten datenbanklayouts arbeiten. ein glück, dass dein cms nur für private zwecke und nicht für die öffentlichkeit bestimmt ist.


6.

Danke...aber beratungsresistent bin ich keineswegs

Zitat:
wenn du wirklich glaubst, dass du deinen quelltext so (mit Frames) schützen kannst, ist dir wirklich nicht mehr zu helfen.
Hier ist ein komplett falscher Eindruck entstanden! Das komplette CMS wird komplett über CSS definiert.
Das Frameset ist einzig und allein dafür da, wenn externe Pages angezeigt werden (in einer neuen Seite), einen einzigen schmalen Frame am oberen Bildrand mit Rückverlinkung, Voting, Commentsbutton zu realisieren.
Und hier weiß ich von keiner anderen Möglichkeit.
Wenn jemand eine für mich hat...ich bin ganz Ohr.

Zitat:
wie kommst du darauf, dass dein vorhaben etwas besonderes ist und dass "dein fall" auch ohne eine "normalerweise gute" lösung auskommt
Ich halte einzig und alleine ein relationales Datenbankdesign für unnötig komplizierend in diesem speziellen Fall. Wenn ich mit JDBC arbeite, sieht das auch anders aus.
Aber hier geht es um möglichst wenig SQL 'Traffic'.
Heißt einfach nur...ich gewinne damit hier keine Geschwindigkeit...

Ich bin trotzdem dankbar für die Tips.
Hab das Gefühl, das hat hier schon wieder jemand falsch verstanden... :-(


Hier gehts zum Orginal Eintrag "Datenbankabfrage - Result verteilen?" im Forum
 
phpforum.de | Impressum