Rio: Automatische Datenspeicherung? (Datenbanken)

Hallo,

wenn ich mit PHP programmiere verbringe die meiste Zeit mir zu überlegen, wie ich die Informationen, die beim neuladen gelöscht werden wiederherstellen kann und am flexiblesten Erweitern und Verknüften kann.

Deshalb suche ich eine Möglichkeit, meine Informationen so einfach wie möglich zu speichern so das ich mich auf die Anwendung selsbt konzentrieren kann. Hat jemand eine Idee wie ich das machen kann? Vielleicht eine Möglichkeit die automatisch ein Objekt als Vorbild für eine Tabelle eigentständig nutzt um die Informationen dann speichern zu können.

Oder besser eine Möglichkeit die Informationen durch eine extra Anwendung im RAM zu sichern (ohne zwischenspeicher) und dann auf Befehl eine Datenbank zur Sicherung zu verwenden.

mfg

Rio

  1. Ich hab' keinen Plan von was du redest - aber irgendwie liest es sich so, als wüsstest du nicht, was Sessions sind.

    1. @suit

      Ich weiß nicht was du damit bewirken willst, aber klar weiß ich was Sessions sind und nein ich will nicht Cachen. Es geht hierbei nicht ausschließlich um Webseiten die normalen Content nach jeden Aufruf neu lädt.

      Nochmal zur ersten Möglichkeit Datenbank Mapping hört sich nach dem an was ich suche, nur frag ich mich ob es auch in Zusammenhang mit PHP geht.

      Zur zweiten Möglichkeit:
      Normale Desktop Anwendungen speichern ihre Informationen im RAM und können ggf auf der Festplatte gesichert werden. Damit haben sie schon mal einen riesen Geschwindigkeitsvorteil. Ich suche als alternative zur obigen Möglichkeit, dies in PHP zu bewerkstelligen ggf mit wenig Aufwand mit Hilfe einer anderen Sprache. Wenn ich Cache oder die Session benutze mache ich aber genau dies nicht, denn dafür muss die Festplatte benutzt werden. Dazu sollte es aber auch möglich sein, die Informationen einfach in z.B. eine Datenbank speichern zu können.

      Das man so etwas wahrscheinlich selber Programmieren kann ist mir klar, aber warum soll ich das Rad neuerfinden für kleinere Programme, die schnell und flexibel laufen sollen. Damit kann ich mich dann auf das Programm und nicht ein Engine konzentrieren.

      Also ich such etwas, dass es mir ermöglicht, Informationen z.B. Objekte oder Arrays ohne vorheriges Konstruieren einer komplexen Datenbank wiederzuverwenden (Stichwort PHP).
      Dies kann entweder im RAM geschehen, wobei dann die Möglichkeit da sein sollte es trozdem auf die Festplatte zu sichern, oder in einer "selbstkonstruierenden" Datenbank.

      1. Hi!

        Datenbank Mapping hört sich nach dem an was ich suche, nur frag ich mich ob es auch in Zusammenhang mit PHP geht.

        Nahezu alles was man programmierne kann, kann man auch mit PHP programmieren. Database Mapper sind kein Problem. Es gibt davon auch schon fertige. Im Zend Framwork müsste beispielsweise einer drin sein.

        Normale Desktop Anwendungen speichern ihre Informationen im RAM und können ggf auf der Festplatte gesichert werden. Damit haben sie schon mal einen riesen Geschwindigkeitsvorteil. Ich suche als alternative zur obigen Möglichkeit, dies in PHP zu bewerkstelligen ggf mit wenig Aufwand mit Hilfe einer anderen Sprache. Wenn ich Cache oder die Session benutze mache ich aber genau dies nicht, denn dafür muss die Festplatte benutzt werden. Dazu sollte es aber auch möglich sein, die Informationen einfach in z.B. eine Datenbank speichern zu können.

        Betriebssysteme können Festplattenzugriffe cachen. Eine PHP-Script-Instanz ist jedenfalls ohne Zusatzsoftware nicht dafür ausgelegt, länger als einen Request lang am Leben zu bleiben. Der gängige Weg ist, wiederzuverwendende Daten in einer Session oder in Cache-Systemen (wie APC) oder Shared Memory abzulegen.

        Das man so etwas wahrscheinlich selber Programmieren kann ist mir klar, aber warum soll ich das Rad neuerfinden für kleinere Programme, die schnell und flexibel laufen sollen. Damit kann ich mich dann auf das Programm und nicht ein Engine konzentrieren.

        Vorher heißt es aber, die Engine kennenzulernen. Das verbraucht auch Zeit. Ärgerlich ist es, wenn man beim Arbeiten feststellt, dass sie entweder einen unzureichenden Funktionsumfang bietet, sich ein Anwendungsfall nur umständlich integrieren lässt, oder allgemein die Arbeits- und/oder Handhabungsweise nicht gefällt. Dann hat man in der Zeit zwar Erfahrung gesammelt, aber das eigene Projekt ist bei einem Neuanfang mit einem anderen Framework quasi auch wieder bei 0 angelangt. Hier muss man also abwägen, ob der Lernaufwand sich wenigstens bei Folgeprojekten positiv auswirkt, weil man dann mit denen schneller vorankommt.

        Also ich such etwas, dass es mir ermöglicht, Informationen z.B. Objekte oder Arrays ohne vorheriges Konstruieren einer komplexen Datenbank wiederzuverwenden (Stichwort PHP).

        Zend Framework hab ich schon genannt. Vermutlich hast du auch schon nach "PHP Framework" oder "PHP Database Mapper" gegoogelt. Passten die Suchergebnisse zu deinen Vorstellungen?

        Dies kann entweder im RAM geschehen, wobei dann die Möglichkeit da sein sollte es trozdem auf die Festplatte zu sichern, oder in einer "selbstkonstruierenden" Datenbank.

        Welche konkreten Bedenken oder Performance-Probleme hast du bereits? Bedenke auch, dass PHP mit seiner Arbeitsweise, Scripte jedes Mal neu zu interpretieren, aus Prinzip nicht schneller sein kann, als kompilierte Systeme. Allerdings liest man auch von größeren Projekten, für die PHP offenbar schnell genug ist.

        Lo!

        1. Welche konkreten Bedenken oder Performance-Probleme hast du bereits? Bedenke auch, dass PHP mit seiner Arbeitsweise, Scripte jedes Mal neu zu interpretieren, aus Prinzip nicht schneller sein kann, als kompilierte Systeme.

          In künftigen PHP-Versionen wird APC fester Bestandteil von PHP sein - damit ist man zumindest im Prinzip einen Schritt weiter als rein interpretierte Sprachen.

          Allerdings liest man auch von größeren Projekten, für die PHP offenbar schnell genug ist.

          Es kommt nur auf die Infrastuktur an - Akamai oder andere CDN-Anbieter stellen gegen das entsprechende Kleingeld einiges zur Verfügung. Caching, Loadbalancing, Replikation der Datenbanken. Der Flaschenhals bei komplexeren Webanwendungen ist selten die Scriptsprache selbst sondern oft die schiere Menge an Daten die verarbeitet werden muss. Ob da die Scriptsprache nun 10 % schneller ist oder nicht spielt da zwar auch eine Rolle, aber andererorts kann man wesentlich mehr gewinnen.

      2. Mahlzeit Rio,

        Nochmal zur ersten Möglichkeit Datenbank Mapping hört sich nach dem an was ich suche, nur frag ich mich ob es auch in Zusammenhang mit PHP geht.

        Ja, gibt es (erwähnten dedlfix und suit ja).

        Andererseits kann man natürlich auch PHP mit VisualStudio entwickeln (entsprechende Plug-Ins existieren) ... und das Entitiy Framework kann so weit ich weiß auch mit MySQL umgehen. Nicht dass ich jetzt Werbung für Microsoft und/oder deren Produkte machen möchte - ich wollte es nur erwähnen (der Vollständigkeit halber). :-)

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Hi!

          Andererseits kann man natürlich auch PHP mit VisualStudio entwickeln (entsprechende Plug-Ins existieren) ... und das Entitiy Framework kann so weit ich weiß auch mit MySQL umgehen.

          Beides für sich genommen ist richtig. Aber einen Zusammenhang zwischen beiden Fakten gibt es nicht. PHP ist (bis jetzt noch) nicht als .NET-Sprache entwickelt worden, kann also nicht auf das Entity Framwork zugreifen.

          Lo!

          1. Mahlzeit dedlfix,

            PHP ist (bis jetzt noch) nicht als .NET-Sprache entwickelt worden, kann also nicht auf das Entity Framwork zugreifen.

            Das wiederum wusste ich nicht. :-) Schade eigentlich - denn das wäre recht komfortabel ...

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. Mahlzeit Rio,

    wenn ich mit PHP programmiere verbringe die meiste Zeit mir zu überlegen, wie ich die Informationen, die beim neuladen gelöscht werden wiederherstellen kann und am flexiblesten Erweitern und Verknüften kann.

    Was verstehst Du in dem Zusammenhang unter "neuladen"?

    Deshalb suche ich eine Möglichkeit, meine Informationen so einfach wie möglich zu speichern so das ich mich auf die Anwendung selsbt konzentrieren kann. Hat jemand eine Idee wie ich das machen kann? Vielleicht eine Möglichkeit die automatisch ein Objekt als Vorbild für eine Tabelle eigentständig nutzt um die Informationen dann speichern zu können.

    So etwas kenne ich unter dem Begriff "Database Mapping": eine Zwischenschicht, die (automatisch) ausgehend von allen im rDBMS enthaltenen Tabellen, Views und Stored Procedures u.ä. entsprechende Objekte samt Eigenschaften und Methoden zur Verfügung stellt, die ich dann in meinem Programmcode einfach verwenden kann, ohne mir Gedanken um die Details machen zu müssen.

    In .NET 4 unter VisualStudio 2010 gibt's da z.B. das "Entity Framework".

    Oder besser eine Möglichkeit die Informationen durch eine extra Anwendung im RAM zu sichern (ohne zwischenspeicher) und dann auf Befehl eine Datenbank zur Sicherung zu verwenden.

    Oder suchst Du vielleicht eine Art Caching?

    Beschreibe bitte genauer, was Dein Problem ist.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|