Baba: SQLite3 vs. PDOSqlite

Wie der Name schon sagt, sollte ich SQLite3 oder die PDO-Klasse verwenden, wenn ich SQLite3 Datenbanken verwalte. Ich benutze letzteres, weiß aber nicht mehr warum :> Gab es da irgendeinen Vorteil? Oder sogar einen Nachteil?

Cheers,
Baba

  1. Tach!

    Wie der Name schon sagt, sollte ich SQLite3 oder die PDO-Klasse verwenden, wenn ich SQLite3 Datenbanken verwalte. Gab es da irgendeinen Vorteil? Oder sogar einen Nachteil?

    Du kannst das nur nach deinem Bauchgefühl entscheiden. Ob Eigenschaften Vorteile oder Nachteile sind, muss situationsbedingt entschieden werden.

    Eigenschaften nativer Librarys

    • kann sich voll auf die Gegebenheiten des Systems konzentrieren
    • unterschiedliche Systeme = unterschiedliche Eigenschaften = unterschiedliche Bedienung
      Eigenschaften von Abstraktionen
    • versuchen verschiedene Systeme unter einen Hut zu bringen
    • dazu müssen zwangsläufig Kompromisse bei den Leistungsmerkmalen gemacht werden, nicht alles kann und vor allem nicht völlig gleichartig unterstützt werden
    • einheitliche Oberfläche angestrebt
    • beim Wechsel des DBMS sind keine neuen Funktionen kennenzulernen

    Die obige Liste ist sicher unvollständig und subjektiv. Ist es dir wichtig, eine einheitlich verwendbare API zu haben oder möchtest du die Eingenschaften des DBMS bestmöglich nutzen können? Das Argument, das DBMS unter der Abstraktionsschicht tauschen zu können, ist in der Praxis meist weniger relevant als es bei solchen Vergleichen immer hervorgehoben wird.

    dedlfix.

    1. Danke für die gute Antwort!

      Eigenschaften nativer Librarys

      • unterschiedliche Systeme = unterschiedliche Eigenschaften = unterschiedliche Bedienung

      Meinst Du mit "unterschiedliche Systeme" unterschiedliche DB-Typen (wie SQLite <> MySQL) oder unterschiedliche Server- oder php-Konfigurationen?

      Eigenschaften von Abstraktionen

      • beim Wechsel des DBMS sind keine neuen Funktionen kennenzulernen

      Also, die Vorstellung, das ich unter der Bedienung einfach mal von SQLite zu MySQL wechsele, klingt einfach ein bisschen zu traumhaft... Abgesehen davon plane ich fest bei SQLite zu bleiben. Nur die großen Sachen kommen vielleicht später in MySQL-DB's.

      Die obige Liste ist sicher unvollständig und subjektiv. Ist es dir wichtig, eine einheitlich verwendbare API zu haben oder möchtest du die Eingenschaften des DBMS bestmöglich nutzen können?

      Wichtig ist mir, die Query's sicher zu bauen. Dafür schätze ich die Methode SQLite3::escapeString. Die gibt es aber bei PDO gar nicht. Nun verwende ich PDO und sqlite_escape_string();

      Ich hoffe das ist gleichbedeutend.

      Außerdem schätze ich ->prepare() und ->exec(), die gibt es aber bei beiden.

      Vielen Dank nochmal

      dedlfix.

      Grüße,
      Baba

      1. Wichtig ist mir, die Query's sicher zu bauen. Dafür schätze ich die Methode SQLite3::escapeString. Die gibt es aber bei PDO gar nicht. Nun verwende ich PDO und sqlite_escape_string();

        Ich hoffe das ist gleichbedeutend.

        Hm...PDO::quote?

      2. Tach!

        • unterschiedliche Systeme = unterschiedliche Eigenschaften = unterschiedliche Bedienung
          Meinst Du mit "unterschiedliche Systeme" unterschiedliche DB-Typen (wie SQLite <> MySQL) oder unterschiedliche Server- oder php-Konfigurationen?

        Unterschiedliche DBMS. Jedes hat seine eigene API, weil es seine individuellen Leistungsmerkmale unterstützen will. Üblicherweise hat man dann mehr oder weniger 1:1 PHP-Funktionen gegen dieses DBMS-API programmiert, um die Funktionalität nutzen zu können.

        Eigenschaften von Abstraktionen

        • beim Wechsel des DBMS sind keine neuen Funktionen kennenzulernen
          Also, die Vorstellung, das ich unter der Bedienung einfach mal von SQLite zu MySQL wechsele, klingt einfach ein bisschen zu traumhaft...

        Die Funktionen für 08/15-Datenbankhandling sind mit einer Abstraktion für jedes DBMS gleich. Aber damit bekommst du nicht alle Eigenheiten des DBMS wegnivelliert. Die Unterschiede der SQL-Dialekte bleiben vorhanden. Wenn du also Dinge verwendest, die nicht im Standard sind, kannst du eine Migration durch einfaches Austauschen des Connetion-Strings vergessen.

        Die obige Liste ist sicher unvollständig und subjektiv. Ist es dir wichtig, eine einheitlich verwendbare API zu haben oder möchtest du die Eingenschaften des DBMS bestmöglich nutzen können?
        Wichtig ist mir, die Query's sicher zu bauen. Dafür schätze ich die Methode SQLite3::escapeString. Die gibt es aber bei PDO gar nicht.

        Verwende Prepared Statements, da besteht keine Notwendigkeit des Escapens. Es darf auch nicht getan werden, wenn du deine Daten icht verfälschen willst. Oder du nimmst die dafür vorgesehene Funktion: PDO::quote(). Diese kümmert sich nicht nur um das Escapen, sondern auch um das Quoten, denn Quote-Zeichen können je nach DBMS auch unterschiedlich sein.

        Außerdem schätze ich ->prepare() und ->exec(), die gibt es aber bei beiden.

        Ah ja, warum willst du dann noch escapen/quoten?

        dedlfix.