Projekt Dashboard mit SQL, PHP, JS, HTML?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Generrell leider immer eine Anwendungsfall frage. Hole ich mir alle Datensätze und berechne sie dann mit der Programmiersprache ... geht bei wenig datenmengen sehr gut . Bei meinen 680 000 Datenstäzen hab ich da ein Problem :) das wird auch nicht besser den die übertragung , wenn ich das z.b. auch noch vom JavaScript Frontend im Browser abarbeiten will dauert es , mach ich es auf dem server , verbraucht das platz , bei vielen besuchern nicht unbedingt gewünscht. Es gibt caching systeme die selbige ergebnisse vorhalten , es gibt natürlich auch Views in SQL die wenn nix neues dazu kommt die Lösung quasi schon bereithalten als View Tabelle , dann ist es nur eine Abfrage . Auch die Art wie Du dein SQL Query aufbaust , eine Liste von ID's mit einer For Schleife zu iterrieren und jeweils ein SQL Query pro ID zu erzeugen ist wohl meist nicht sinnvoll weil man das gleiche mit übergabe der ID liste und WHERE IN Liste gleich alle Datensätze bekommt (achtung aufpassen ab welcher Listen größe bei der Server conifg da endet (bzw geändert werden muss).

Kann man also so pauschal nicht sagen . Praktisch ist es aber wenn du auf dem Server das Script mit vielen Querys machst jetzt nicht unbedingt ein Problem , solange sie halt nciht weiter zu optmieren sind. Brauche ich halt 15 abfragen weil sie aus vielen unterschiedlichen und bedingten abfreagen nun einmal resultieren , dann ist das so :) kann man sich wünschen das es anders wäre aber ein Einzeiler ist halt nicht immer zu machen .

bensf 
Fragesteller
 22.12.2020, 10:49

Hallo,

okay. Es gibt verschiedene Ansichten und je nach Event auf der HTML Seite könnte man die Daten quasi neuladen. Dabei geht es um Abfragen die jeweils maximal 1000 Zeilen oder vielleicht auch etwas mehr zurückgeben. Dabei ist eine Spalte der eigentliche Wert mit dem ich Berechnungen machen muss und bei den anderen geht es nur um Zuordnungen wo dieser Wert hingehört. Würde es in diesem Fall Sinn machen die Daten in ein Array zu schreiben?

Wie genau würde das mit den Views in SQL funktionieren? Ich habe schon eine View erstellt dabei habe ich aber nur 3 Tabellen miteinander verknüpft und mir nur die Spalten die ich haben möchte anzeigen lassen.

0
TechPech1984  22.12.2020, 10:57
@bensf

Wie gesagt, probiere es aus , ich hab mal react genommen für ein Ticketsystem und fand es aussreichend wenn die Woche an Daten in den Browser geladen wird und ich dort filterung und Berechnungen vom Frontend ausführen lasse. Mit sockets habe ich es dann auf allen clients snycronisiert . Bei meiner GamerDatenbank , wo sich mit jedem Eintrag eigentlich alles kompeltt ändern könnte funktioniert das nicht, da muss ich halt wirkllich alle Datensätze haben um zu entscheiden ob jemand dort nun z.b. in der Liste vorkommt . Da ist es einfacher ich lass das SQL machen.

VIEWS sind Querys die schon Ihre arbeit tun und quasi ein cache aufbauen . Um beim Gameing zu bleiben , ich mach pro Rangliste einen eigenen View und rufe nur den ab , dann ist schon mal vorgewurstelt was da überhaupt möglich ist . Wenn ein neuer Datensatz hinzukommt wird allerdings der View neu organsiert und das kann leider bei großen Datenmengen unangenehm dauern . Lösung war bei mir eine Warte schleife " Neue Datensätze werden berechnet , bitte warten ...." .

Also probiere es aus , lerne es einzuschätzen und dann optimieren . Programmieren besteht sowieso zu 90% aus optimierung , tut man das nicht hat man sowas wie Cyberpunk 2077 was trotz Kauf halt schwer bis schlecht funktioniert . (Aber das ist halt die Mode geworden ... die Kunden heut zu tage, kaufen es ja dennoch ... )

1

Wenn du die Datenbank komplett abfragst, brauchst du ja wieder eine Datenbank um die Daten zu verwalten. Wenn du das alles in Arrays etc. speicherst wirst das alles brutal langsam.

Der beste Weg ist normalerweise die Datenbankabfrage zu optimieren, damit du nur die Daten bekommst, die du auch bearbeiten willst. Habe bei ähnlichen Projekten schon gesehen, dass einfach ein "select * from xy" verwendet wird und dann wird in der eigenen Anwendung angefangen die Daten zu sortieren etc. Dabei ist es einfacher und schneller wenn ich die Daten bereits entsprechend abfrage. Daher würde ich auch dir empfehlen, überlege welche Sachen bereits auf SQL-Query Ebene durchgeführt werden können, das bringt am meisten.

Alternativ bietet zum Beispiel Microsoft mit PowerBI eine entsprechende Lösung, die genau das bietet was du hier brauchst. Ist keine billige Lösung, aber die funktioniert ausgesprochen gut.

Woher ich das weiß:Berufserfahrung – drei Jahre Berufserfahrung mit Wordpress

Ich würde in deinem Fall vielleicht mal über Vue.js samt Nuxt Framework nachdenken. Darüber kann man schon ziemlich "nicen schice" anstellen und sowohl Client- als auch Serverseitig verdammt viel möglich ist.

Es bleibt dann ganz dir überlassen, welchen Daten direkt an den Client übergeben werden und/oder was auf deinem Server vor-gerendert wird. Die Lernkurve ist bei Vue auch um ein vielfaches schneller, als es bei Angular oder React der Fall ist.

Die Daten selbst könnte man in eine JSON schreiben, beliebig abfragen und nach eigenem Gusto im Frontend ausgeben. Alle mal schneller als mit PHP und sich die Einarbeitung in diese Frameworks meiner Meinung nach definitiv lohnt.

Woher ich das weiß:Berufserfahrung – UI/UX Designer, Full-Stack Developer
bensf 
Fragesteller
 22.12.2020, 11:13

Das hört sich doch ganz gut an. Hast du Empfehlungen wie ich mich dort am besten einarbeite? Kennst du gute Dokumentationen oder Videos?

0
medmonk  22.12.2020, 11:29
@bensf

Vue und Nuxt werden auf der jeweiligen Website einfach und gut dokumentiert erklärt. Auf YouTube findest du zusätzlich einige Kurse, die einen Schritt-für-Schritt durch die einzelnen Features führen. Wenn bereits JavaScript Wissen vorhanden ist, wirst du dich eigentlich relativ schnell zurechtfinden.

Neben Traversy Media kann ich dir auch die YouTube Kanäle von Academind, DesignCourse und FreeCodeCamp.org empfehlen, sofern du mit englischsprachigem Content keine Probleme hast.

0