hey habe da mal ne Frage
früher habe ich anwendungen häufig in php programmiert.
Dabei habe ich auf frameworks verzichtet, da mich das overhead-gedöns ziemlich nervt und mir die anwendung erheblich langsamer macht.
Jetzt möchte ich auf Rendering etc pp auf dem Server verzichten und nur noch einfache JSON-Daten oder "noch weniger"-Daten übertragen. Ka mir fällt gerade das Facebook-übertragungsprotokoll nicht ein (ein binäres protokoll).
Naja auch das habe ich schon in php realisiert gehabt. Ist ein relativ einfaches Unterfangen. Request kommt an, dieser wird dispatcht, vorher vllt. noch analyisiert, auf berechtigungen untersucht, limits gecheckt etc pp. -> dann service ausgeführt und JSON Daten wandern zurück an den User.
Warum jetzt Java?
Ist Java wirklich schneller als das jetzige PHP 7 / HHVM ? - vllt. weiß da jemand von euch was dazu.
Also was mir an Java definitiv gut gefällt ist die Thread-Umsetzung, und das habe ich bei PHP so nicht, zudem der PHP interne state nach jedem Request immer wieder zerstört wird und nicht für längere Ausführungszeiten gedacht ist. Bspw. wenn ich ein Work-Prozess delayen möchte etc pp.
Also habe ich mich mal etwas in der Java-Welt umgesehen und bin so auf sehr leichtgewichtige Rest-Implementierungen (bzw. damit Vergleichbare Dinge) gestossen.
Dropwizard
Light-Rest4-J
vertx
native Jersey Umsetzung?
was würdet ihr davon empfehlen?
was performt am besten/schnelllsten?
Kann es sogar sein dass das Bottleneck eher bei/in der Datenbank liegt?
und es so wurschd ist ob ich eine bestimmte Java-Umsetzung/PHP nehme?
welche Datenbank würdet ihr empfehlen. Habe früher immer mit MySql gearbeitet
Für bestimmte Zwecke habe ich auch die SQL-spezifischen Sperren/Features verwendet.
IS/X.......-Sperren. aber das ist wirklich nur die Ausnahme.
Wie schauts mit NoSql Datenbanken aus?, Habe damit keienrlei Erfahrungen?
Sind die schneller?
Was haltet ihr von der Idee eine SQL-Datenbank zu nehmen und in dieser bspw. für jeden User eine eigene Datenbank anzulegen.
Diese Idee hatte ich auch schon mal als ich noch ca. 14 Jahre oder so alt war(also vor langer Zeit). Mir wurde damals davon abgeraten, weil ich mir dadurch ja dann die Möglichkeit nehme Userübergreifende Queries abzufeuern. Ausserdem sind somit Joins mit Daten ausserhalb entsprechender Userdatenbank schwer möglich. Vllt. würde ich dann ein Art hybrides System verwenden, wo ich dennoch weiterhin, mindestens die join-relevanten Daten in einer einzigen UserTabelle redundant speichere wie z.B die (ID, display-Name, profil-bild-url)
Zum Thema DSGVO:
Einen User zu löschen, wäre somit ziemlich einfach. Datenbank weg. User weg^^
Na gut ich muss dann trotzdem auch noch in Fremd-Datenbanken aufräumen, sollte der User mit anderen Interagiert haben und die Daten in entsprechender anderer Datenbank gespeichert sein.
aber kA, vllt. habt ihr da ja ideen wie man das heutzutage gut umsetzt^^
So back to the framework-topic^^
wenn ich jetzt vertx nehmen würde -ein reactives System- :
Hätte ich dann überhaupt die Vorteile dieses reactiven Systems oder bremst mich eben dieses sogar noch weiter aus wie ein klassisches System?
Der Event-loop sollte ja keineswegs blockiert werden.
Somit müsste ich jeden Datenbankrequest outsourcen und wieder zurückfangen oder so?^^
Und da die Anwendung "eigentlich nur" aus datenbankrequests besteht, also wenige aufwendige Berechnungen..... könnte das doch sogar insgesamt ein Nachteil sein, oder?
(Wie gesagt, ich habe Null-erfahrungen im bezug auf reactive Systeme)
Bei vertx im Speziellen habe ich auch noch gelesen, dass schon locks/Monitore kritisch zu sehen sind.
Wie kann ich dann Thread-Safe mich mit der Aussenwelt synchronisieren?
Wie kann ich dann Datenbankrequests in eine Thread-Safe externe Queue einquenen?^^
Und zurückholen?
Bei https://www.techempower.com/benchmarks/#section=data-r16&hw=ph&test=query
steht vertx ganz oben. Aber auch im Zusammenhang mit postgreesql
Wie unterscheidet sich postgreesql von MySql?
Da vertx ziemlich weit oben steht , performt das doch auch im Zusammenhang von Datenbankrequests nicht all zu schlecht, oder?
Light-rest4j steht auch relativ weit oben.
(ist glaube ich auch reactive aufgebaut, aber das weiß ich gerade nicht so genau)
Dropwizard habe ich da jetzt gar nicht gesehen.
(wo ist das ungefähr einzuordnen)
Dropwizard ist ja irgendwie ein Zusammenschluss von mehreren libs, Frameworks
Es enthält doch bspw. die native Jersey-Umsetzung, sehe ich das richtig?
Welches Framework bzw. leichtgewichtigen Rest-Grund-Server würdet ihr mir empfehlen?
Wenn es mir hauptsächlich um service-orientiertes programmieren geht und ich eigentlich ausser Threads, Listen, einfachen Dingen keine Third-party-libs verwenden möchte
könnte ich das ganze doch auch in c++ programmieren?
Das dürfte noch schneller sein^^
Oder würdet ihr mir davon abraten?^^
Ein negatives Kriterium bei C++ ist, dass man sich schneller Sicherheitslecks in den Server holt^^
Soweit mal zu dem Thema
lg knotenpunkt
früher habe ich anwendungen häufig in php programmiert.
Dabei habe ich auf frameworks verzichtet, da mich das overhead-gedöns ziemlich nervt und mir die anwendung erheblich langsamer macht.
Jetzt möchte ich auf Rendering etc pp auf dem Server verzichten und nur noch einfache JSON-Daten oder "noch weniger"-Daten übertragen. Ka mir fällt gerade das Facebook-übertragungsprotokoll nicht ein (ein binäres protokoll).
Naja auch das habe ich schon in php realisiert gehabt. Ist ein relativ einfaches Unterfangen. Request kommt an, dieser wird dispatcht, vorher vllt. noch analyisiert, auf berechtigungen untersucht, limits gecheckt etc pp. -> dann service ausgeführt und JSON Daten wandern zurück an den User.
Warum jetzt Java?
Ist Java wirklich schneller als das jetzige PHP 7 / HHVM ? - vllt. weiß da jemand von euch was dazu.
Also was mir an Java definitiv gut gefällt ist die Thread-Umsetzung, und das habe ich bei PHP so nicht, zudem der PHP interne state nach jedem Request immer wieder zerstört wird und nicht für längere Ausführungszeiten gedacht ist. Bspw. wenn ich ein Work-Prozess delayen möchte etc pp.
Also habe ich mich mal etwas in der Java-Welt umgesehen und bin so auf sehr leichtgewichtige Rest-Implementierungen (bzw. damit Vergleichbare Dinge) gestossen.
Dropwizard
Light-Rest4-J
vertx
native Jersey Umsetzung?
was würdet ihr davon empfehlen?
was performt am besten/schnelllsten?
Kann es sogar sein dass das Bottleneck eher bei/in der Datenbank liegt?
und es so wurschd ist ob ich eine bestimmte Java-Umsetzung/PHP nehme?
welche Datenbank würdet ihr empfehlen. Habe früher immer mit MySql gearbeitet
Für bestimmte Zwecke habe ich auch die SQL-spezifischen Sperren/Features verwendet.
IS/X.......-Sperren. aber das ist wirklich nur die Ausnahme.
Wie schauts mit NoSql Datenbanken aus?, Habe damit keienrlei Erfahrungen?
Sind die schneller?
Was haltet ihr von der Idee eine SQL-Datenbank zu nehmen und in dieser bspw. für jeden User eine eigene Datenbank anzulegen.
Diese Idee hatte ich auch schon mal als ich noch ca. 14 Jahre oder so alt war(also vor langer Zeit). Mir wurde damals davon abgeraten, weil ich mir dadurch ja dann die Möglichkeit nehme Userübergreifende Queries abzufeuern. Ausserdem sind somit Joins mit Daten ausserhalb entsprechender Userdatenbank schwer möglich. Vllt. würde ich dann ein Art hybrides System verwenden, wo ich dennoch weiterhin, mindestens die join-relevanten Daten in einer einzigen UserTabelle redundant speichere wie z.B die (ID, display-Name, profil-bild-url)
Zum Thema DSGVO:
Einen User zu löschen, wäre somit ziemlich einfach. Datenbank weg. User weg^^
Na gut ich muss dann trotzdem auch noch in Fremd-Datenbanken aufräumen, sollte der User mit anderen Interagiert haben und die Daten in entsprechender anderer Datenbank gespeichert sein.
aber kA, vllt. habt ihr da ja ideen wie man das heutzutage gut umsetzt^^
So back to the framework-topic^^
wenn ich jetzt vertx nehmen würde -ein reactives System- :
Hätte ich dann überhaupt die Vorteile dieses reactiven Systems oder bremst mich eben dieses sogar noch weiter aus wie ein klassisches System?
Der Event-loop sollte ja keineswegs blockiert werden.
Somit müsste ich jeden Datenbankrequest outsourcen und wieder zurückfangen oder so?^^
Und da die Anwendung "eigentlich nur" aus datenbankrequests besteht, also wenige aufwendige Berechnungen..... könnte das doch sogar insgesamt ein Nachteil sein, oder?
(Wie gesagt, ich habe Null-erfahrungen im bezug auf reactive Systeme)
Bei vertx im Speziellen habe ich auch noch gelesen, dass schon locks/Monitore kritisch zu sehen sind.
Wie kann ich dann Thread-Safe mich mit der Aussenwelt synchronisieren?
Wie kann ich dann Datenbankrequests in eine Thread-Safe externe Queue einquenen?^^
Und zurückholen?
Bei https://www.techempower.com/benchmarks/#section=data-r16&hw=ph&test=query
steht vertx ganz oben. Aber auch im Zusammenhang mit postgreesql
Wie unterscheidet sich postgreesql von MySql?
Da vertx ziemlich weit oben steht , performt das doch auch im Zusammenhang von Datenbankrequests nicht all zu schlecht, oder?
Light-rest4j steht auch relativ weit oben.
(ist glaube ich auch reactive aufgebaut, aber das weiß ich gerade nicht so genau)
Dropwizard habe ich da jetzt gar nicht gesehen.
(wo ist das ungefähr einzuordnen)
Dropwizard ist ja irgendwie ein Zusammenschluss von mehreren libs, Frameworks
Es enthält doch bspw. die native Jersey-Umsetzung, sehe ich das richtig?
Welches Framework bzw. leichtgewichtigen Rest-Grund-Server würdet ihr mir empfehlen?
Wenn es mir hauptsächlich um service-orientiertes programmieren geht und ich eigentlich ausser Threads, Listen, einfachen Dingen keine Third-party-libs verwenden möchte
könnte ich das ganze doch auch in c++ programmieren?
Das dürfte noch schneller sein^^
Oder würdet ihr mir davon abraten?^^
Ein negatives Kriterium bei C++ ist, dass man sich schneller Sicherheitslecks in den Server holt^^
Soweit mal zu dem Thema
lg knotenpunkt