hampft!

SQLite macht ihrem Namen alle Ehre. Kleiner und leichter geht's kaum. SQLite kommt als Library und Datenbank-Frontend daher. Ein Server ist nicht nötig, Zugriffe über das Netzwerk sind nicht vorgesehen. Alle Daten einer Datenbank werden in einem einzelnen File gehalten. Der Zugriff wird über die normalen Schreib- und Leserechte auf dieses File geregelt.

Inzwischen hat jede Distribution ihre eigenen Packgages für sqlite2 und sqlite3 - es sollte also kein Problem sein, SQLite zu installieren.

Datenbank ohne Abfrage bringt nix, dazu braucht man auch irgendwelche Bindings. SQLite kommt mit einer beeindruckenden Liste daher; Perl, PHP und Python sind dabei. Integration in C++ oder C Programme ist genauso einfach.

Mit dem Kommandozeilentool sqlite kann man nun ein Datenbankfile einrichten:

Man erzeige das File

CREATE TABLE test(
    t_id   INTEGER PRIMARY KEY,
    t_data VARCHAR(200)
);
INSERT INTO test VALUES (1, 'bla');
INSERT INTO test VALUES (2, 'blubber);

das dann mit sqlite test.db ".read create.sql" in das Datenbankfile test.db einliest.

Vorausgesetzt, das File ist für den Apache-User (www-data:www-data) lesbar, kann man jetzt z.B. per PHP Pear die Datenbank so auslesen:

<html>
<body>
<?php
    require_once "MDB.php";
    $db=MDB::connect('sqlite:///'.getcwd().'/test.db', array('debug'=>2));
    $db->setFetchMode(DB_FETCHMODE_ASSOC);
 
    print "<pre>\n";
    $res=$db->query("SELECT * FROM test");
    while ($row=$res->fetchRow()) {
        print_r($row);
    }
    print "</pre>\n";
?>
</body>
</html>

SQLite ist rasend schnell und kann erstaunlich viel: Die bei mysql fehlenden Subselects beherrscht SQLite genauso sicher wie Transaktionen. Nur die Familie der "ALTER dingenskirchens" Befehle sind nicht implementiert, das ist aber leicht zu Verschmerzen, denn eine Folge von ".dump tabelle", "drop tabelle", Dumpfile editieren und ".read dumpfile" tut das selbe.