kostenloser Webspace werbefrei: lima-city


sqlite

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    e********n

    hi, habe gehört das SQLite sich langsam zu einer guten Alternative zu MySql entwickeln soll, kenn mich aber gar nicht damit aus. Soweit ich weiß läuft es auf jedem Server der PHP unterstützt (wahrscheinlich ab 5) aber könnte ich Beispielsweise auch einem Script das MySQL benötigt SQLite Daten übergeben??
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hi,

    hmm, es ist so, dass MySQL andere Funktionen benutzt. Deshalb müsstest du die ganzen MySQL-Funktionen und -Befehle abändern, die bei SQLite anders sind (--> http://php.net/sqlite; und du musst natürlich die Erweiterung SQLite installieren, falls du sie noch nicht besitzts). Meiner meinung nach ist es egal, ob man MySQL oder SQLite benutz, ich finde jedoch, dass MySQL praktischer für die Anwendung ist. Verwende am besten weiterhin MySQL.

    mfg,
    hr

    Beitrag geaendert: 28.1.2007 6:53:17 von heavyraptor
  4. @heavyraptor
    SQLite ist bei PHP 5 schon dabei, d.h. man braucht es nicht zu installieren.

    @SQLite
    SQLite hat nur einen Nachteil. Wärend die Datei für ein query geöffnet wird, müssen andere user warten, was bei viele Zugriffen schlecht ist. Trotzdem zeigen Benchmarks, dass bei viele Zugriffen und einer gut durchdachten Aufteilung und Einteilung der Datenbanken SQLite schneller ist. Man braucht für SQLite keinen extra Server, da es schon bei PHP dabei ist. Man kann es auch auf CD verwenden. Ein weiteres kleines Problem, was aber bald behoben sein dürfte ist, dass man keine Tabellen löschen kann. Ich würde jedoch eh fast jede Tabelle in eine einzelne Dateien packen.
  5. Autor dieses Themas

    e********n

    hmm.. schade das es dann doch komplizierter ist, denn an sich ist die Idee schon cool. Aber das mit den Zugriffen ist natürlich ein Argument. Vielleicht sollte ich noch ein wenig warten... Danke für die Hilfe
    mfg

  6. hi, habe gehört das SQLite sich langsam zu einer guten Alternative zu MySql entwickeln soll, kenn mich aber gar nicht damit aus. Soweit ich weiß läuft es auf jedem Server der PHP unterstützt (wahrscheinlich ab 5) aber könnte ich Beispielsweise auch einem Script das MySQL benötigt SQLite Daten übergeben??


    http://www.sqlite.org/docs.html
    Wenn du da ein wenig suchst, wirst du auch das von SQLite verstandene SQL finden (also das, was in den lustigen Query-Strings drinstehen muss):
    http://www.sqlite.org/lang.html
    ... und das was SQLite nicht versteht:
    http://www.sqlite.org/omitted.html

    Ob die Umstellung von MySQL auf SQLite kompliziert (bis unmöglich) ist, hängt davon ab, wie das ursprüngliche PHP-Script aussieht. Wenn es von Anfang an so geschrieben wurde, dass auf MySQL-spezifischen Blödsinn verzichtet wurde, ist es keine große Hürde.

    Ein wichtiger Unterschied ist der, dass in SQLite der Zugriff auf die Datenbank direkt über sqlite_open() erfolgt. In MySQL macht man das entweder mit einem SQL-Query wie "USE datenbank" oder der entsprechenden PHP-Funktion.

    Leider ist das in PHP integrierte SQLite noch immer auf dem Stand der Version 2.8. Somit fällt auch "alter table" flach. Das benötigt man allerdings für ein Produktiv-System sowieso nicht, sondern nur zum Einrichten einer Datenbank. Und für diesen Zweck gibt es eine PHP-Wrapper-Klasse, die mehr ALTER-TABLE-Syntax kann, als sich die meisten PHP-Homepage-Schrauber vorstellen können:
    http://code.jenseng.com/db/

    Einige MySQL-Befehle wie "show tables", "show columns from tabelle", usw. kann man den passenden Pragma-Befehlen von SQLite nachbilden. Das Gleiche gilt für das bedingte Erstellen/Löschen von Tabellen "create table if not exists" und "drop table if exists". Damit dürfte auch die Frage geklärt sein, ob Tabellen gelöscht werden können. :wink:

    Dass sich die PHP-Funktionen zum Zugriff auf das SQLite-API unterscheiden, ist klar. Das ist ja bei allen PHP-Datenbankfunktionen so. Es gibt aber seit ca. PHP 5.1 PDO:
    http://de.php.net/manual/de/ref.pdo.php
    Das ist eine Art Abstraktions-Klasse für verschiedene von PHP unterstützte Datenbanken. Wie das aber genau funktioniert, hab ich mir noch nicht angeschaut.

    Wahlweise (für PHP4 oder PHP5 ohne PDO) wären da noch die in reinem PHP geschriebenen Abstraction Layers adoDB und PEAR_DB:
    http://phplens.com/lens/adodb/docs-adodb.htm
    http://pear.php.net/package/DB

    Noch'n Wort zur Geschwindigkeit: Wirklich Probleme kann bei SQLite nur der Versuch gleichzeitigen Schreibens bereiten. Bei Webapplikationen dürfte der Fall eher selten auftreten. SQLite sperrt in dem Fall die komplette Datenbank, bis der Schreibvorgang beendet ist. Lesezugriffe können gleichzeitig erfolgen. Wer den gleichzeitigen Zugriff auch beim Schreiben braucht, sollte auf die Unsitte verzichten, nicht zusammengehörige Tabellen in der gleichen Datenbank unterzubringen. Da SQLite problemlos mehrere Datenbanken gleichzeitig verwalten kann (und mir kein Hoster bekannt ist, der sowas einschränken könnte/würde), sollte man auch unterschiedliche Daten in unterschiedlichen Datenbanken verwalten. MySQL ist in dem Fall übrigens nur deshalb "schneller", weil es intern jede Tabelle als Einzeldatei verwaltet.

    Beitrag geaendert: 28.1.2007 21:28:08 von alopex
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!