Datenbank Abstraktion

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datenbank Abstraktion

    Hi,
    Wollte mal eine Frage in die Runde stellen.

    Ich muß ein größeres Projekt auf Datenbankabstraktion umstellen, und bin nun ein wenig ratlos welchen Abstraktionslayer ich denn nun dafür verwenden sollte. Denn die Einarbeitungsaufwand in die verschiedenen Klassen ist doch recht aufwendig und der Zeitaufwand für eine Umstellung auch nicht so ohne.Und in Zukunft sollte dann natürlich diese Klasse auch für andere Projekte verwendet werden. Und ich möchte dann nicht auf's falsche 'Pferd' gesetzt haben und in einigen Monaten wieder alles umstellen. Allein das Lesen der verschiedenen Dokus kostet schon unglaublich viel Zeit. Irgendwie habe ich im Netz auch noch keine objektiven und aktuellen Artikel gefunden, die sich mit der Thematik auseinander setzen. Ein Vergleich auf einer Entwicklerseite hilft naturgemäß recht wenig weiter, denn diese gehen natürlich immer zugunsten der eigenen Klasse aus.

    Die DBAbstraktion muß im wesentlichen MySQL, Postgres, MsSQL und Oracle unterstützen und hiermit auch wirkliche Datenbankunabhängige Programmierung ermöglichen. Nach einen ersten Research bin ich zu folgenden Ergebnissen gekommen:

    * PEAR:B
    + Guter Funktionsumfang, anscheinend auch sehr stabil, wird in vielen PEAR Paketen verwendet

    - schlechtere Performance als andere Pakete

    * PEAR::MDB
    + Unterstützt glaube ich eine bessere Datenbankunabhängigkeit als PEAR:B, bessere Performance, API ähnlich PEAR:B

    - Wird nicht von so vielen PEAR-Paketen unterstützt, jetzt gibt es aber auch noch MDB2 das allerdings noch Beta ist, und zudem ist möglich das, das die API geändert wird. Nachträglich nochmal Code anzupassen, wäre nicht sehr toll

    * AdoDB
    + Sehr viele Funktionen, anscheinend sehr stabil, wird auch in vielen großen Projekten verwendet, bessere Performance als die PEAR Pakete, Das API ändert sich nicht und ist wie in Stein gemeißelt, womit der Code auch für längere Zeit gleich bleiben kann.

    - Sieht es wahrscheinlich schlecht aus wenn ich PEAR Pakete mit Datenbank verwenden möchte,

    * PDO
    + Oder gleich auf PHP5 setzen und die PDO Extension verwenden, die natürlich am schnellsten ist, da nicht in PHP geschrieben. Das was ich gesehen habe sieht zwar schon recht vernüftig aus, aber das ist alles doch recht neu und ob das ausreicht und stabil ist, kann man wahrscheinlich noch nicht sagen.


    Derzeitig würde ich zu PEAR::MDB tendieren, allerdings will mir nicht so recht gefallen, das ein MDB2 entwickelt wird das mit der derzeitigen API bricht

    Hat wer aktuelle Erfahrungen und kann einen Tipp für eine hoffentlich richtige Entscheidung geben ?

    Vielen Dank im voraus

    Alfi

  • #2
    Mhn, bin auch gerad mit diesem Thema beschäftigt, und werde wahrscheinlich (wie immer) das ganze selbst Programmieren. vB liefert schon sehr gute Anstätze wie man soetwas realisieren könnte.

    1. Bau ich nur die Funktionen ein, die ich auch wirklich brauche
    2. Ist PEAR DB (Test ich im Moment) sehr unübersichtlich und schwer durchschaubar (meine Meinung)..


    Floriam
    PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

    Kommentar


    • #3
      Klar, habe ich auch überlegt das selbst zu programmieren, für MySQL habe ich ja sowieso meine eigene Klasse, die genau das kann, was ich brauche. Und ist auch klar das man mit seiner eigenen Klasse am besten zurecht kommt. Nur wenn das dann für andere DB's erweitert ist der Aufwand recht beachtlich und genau genommen eine Zeitverschwendung wenn es schon Lösungen gibt. Die gewonnene Zeit sollte besser ins Projekt gesteckt werden. Anderseits stelle ich fest das der Research und das testen der verschiedenen Lösungen auch ganz schön aufwendig ist....

      naja mal sehen...
      Alfi

      Kommentar


      • #4
        Wie für andere DB's erweitert?

        Wieso machst du nicht einfach eine Klasse für MySQL, eine für Postgres, usw?

        Okay, ich muss zugeben, dass ich nicht sehr groß verrausschaue, allerdings soll meine Lösung auch nicht sonderlich viel Funktionen enthalten. Mir reichen einfach nur die Grundbefehle (fetch_row, fetch_assoc, query, usw) aus..
        PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

        Kommentar


        • #5
          Wen du mit PHP5 arbeiten willst, würde ich Creole empfehlen (http://creole.phpdb.org). Von der API finde ich es als die momentan gelungenste Lösung. Desweiteren soll die Performance gut richtig gut sein.

          Kommentar


          • #6
            2. Ist PEAR DB (Test ich im Moment) sehr unübersichtlich und schwer durchschaubar (meine Meinung)..
            du sollst dir den quellcode ja nauch nicht anschauen die umstellung auf pear-db fand ich eigentlich nicht so schrecklich ...
            allerdings soll meine Lösung auch nicht sonderlich viel Funktionen enthalten.
            gerade die getXxX-functions von pear-db machens doch interessant ...

            im endeffekt dients aber auch nur dazu, anregungen zu holen und das in eigenen klassen umzusetzen.

            OffTopic:
            hmm, eigentlich sollte ich den gesamten post in [ ot] setzen *g
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              @webstar85 - Danke für den Tipp, damit wird die Qual der Wahl noch schwieriger. Ich habe das API mal auf die schnelle überflogen. Sieht wirklich sehr vielversprechend und logisch aus. Damit sollte man eigentlich ganz gut Anwendungen schreiben können, bei denen man die Datenbank ganz einfach switchen kann - ohne sich ob die jeweiligen Besonderheiten der DB zu kümmern. (zb. die verschiedenen get Metoden). Nachteil man ist auf jedenfall auf PHP5 festgenagelt und ein Script ist bei einem StandardHosting Provider nicht zum Laufen zu bringen. Aber ich seh schon, es wird Zeit sich mit PHP5 auseinander zusetzen, auch wenn ich glaube das es sicher noch bis zum Winterbeginn brauchen wird, das man PHP5 auch stabil Produktiv einsetzen kann.[ aber das wäre wieder eine anderes Thema]

              Kommentar

              Lädt...
              X