Skip to content

SQLite, noch einmal ...

Wie bereits angekündigt, wollte ich mal etwas zu SQLite schreiben.

Da ich das Werkzeug mal wieder im Büro gebraucht habe und fast zeitgleich eine Anfrage im ubuntuusers.de-Forum aufkam, hier also ein bisschen Text dazu:

SQLite ist eine Datenbank in einer Datei, das heisst, es muss kein Server-Dienst laufen. Das Client-Programm ist auch gleichzeitig das Datenbankverwaltungstool.

SQLite ist in allen aktuellen Mobiltelefonen (als Telefonbuch / Adressverwaltung) zu finden und wird aktiv von (beispielsweise) Adobe, Bloomberg, Mozilla und Symbian gefördert.

SQLite gibt es als Sourcecode und vorcompiliert für Linux, Mac OS X, und Windows, sowie auch als JDBC-Treiber oder Perl-Modul.

Natürlich kann SQLite nicht alles was ein Client-Server-Datenbanksystem kann, aber für 95% der Anwendungsfälle einer Privatperson reicht es aus.

Ein sehr grosser Anteil von SQL-Kommandos wird unterstützt.

Es gibt nur vier Speicherklassen Integer, Real, Text, Blob. "create table"-Statement anderer Datenbanksysteme wird in der Regel problemlos interpretiert (nur, dass im Hintergrund beispielsweise statt VARCHAR TEXT benutzt wird).

Die Aufgabe:
Zwei Dateien: Eine enthält Adressdaten in Folgender Form (telneu.txt, 1.8 GB, ~60 Millionen Zeilen): Vorname Nachname;Strasse;Ort;PLZ;Telnr; (Je Zeile ein Datensatz), die Zweite Datei enthält nur Postleitzahlen (plz.txt, ~1000 Zeilen).

Aus der ersten Datei werden alle Datensätze gesucht, deren Postleitzahlen in der zweiten Datei vorkommen.
sqlite> CREATE TABLE telneu (Vorname_Nachname text, Strasse text, Ort text, PLZ text, Telnr text);
sqlite> .separator ";"
sqlite> .import telneu.txt telneu
sqlite> CREATE INDEX idx_telneu_plz ON telneu (PLZ);
sqlite> CREATE TABLE plz (plz text);
sqlite> .import plz.txt plz
sqlite> SELECT * FROM telneu WHERE plz IN (SELECT plz FROM plz);


Vielleicht hilft es Euch auch.

Hier ein paar Links:
- Downloads - Paket "sqlite3" in Ubuntu
- Dokumentation
- Datentypen
- SQL-Syntax
- JDBC-Treiber
- Perl-Modul - Paket "libdbd-sqlite" in Ubuntu
- Firefox Extension SQLite Manager

Miro ...

ubuntu Gerade wollte ich mir die neue Version des viel gepriesenen Miro herunterladen und ausprobieren. Gerade Version 2.5 soll ja einige bahnbrechende Neuerungen bringen, da jetzt auch Audio-Podcasts möglich sind (und das verfolge ich wegen DeimHart aus besonderem Interesse).

Nach Einrichtung der Paketquelle kommt der erste Nerv-Faktor, warum schaffen die es eigentlich nicht, Ihre Paket zu signieren?

Installation klappt - wie bei Debian/Ubuntu gewohnt - sehr gut. Danach der zweite Nerv-Faktor, es wurde Version 2.0.5 installiert, aktuell ist aber laut Webseite Version 2.5. Zunächst habe ich gedacht, es läge daran, dass die 64bit-Architektur noch nicht bedient wird (was ich auch nicht verstehen könnte). Jetzt finde ich einen Blog-Artikel, dass die 2.5 für Ubuntu noch nicht verfügbar ist ... Warum wird das nicht auf der Webseite bekanntgegeben?

Ich bin bis jetzt mit Miro noch nicht warm geworden, gebe aber jeder Version eine Chance ... so etwas finde ich dann aber echt übel.

SQLite

Ein kleines "Erinner mich". Ich muss dringend einmal einen Artikel zu SQLite schreiben. Damit kann man wirklich schnell gute Dinge tun.

Diese "Datenbank in einer Datei" ist wirklich unglaublich. Die Beschäftigung damit lohnt sich in jedem Fall. Die Datenbank findet sich in jedem Handy und es gibt Portierungen für nahezu alle Betriebssysteme.

Freie PDF-Reader ...

Eine - wie ich finde - schöne Initiative der Free Software Foundation.

PDF ist ein standardisiertes Dateiformat. Um das auf möglichst vielen Systemen lesbar zu haben, ist es sinnvoll Programme zu verwenden, die diesen Standard unterstützen und nicht auf Erweiterungen setzen, die nicht im Standard enthalten und somit für alle lesbar sind. (Das ist im besonderen auch für Barrierefreiheit wichtig).

pdfreaders.org

via Onli

Xen - Das umfassende Handbuch ...

Da ist es endlich. Nach einigen Vorankündigungen ist es fertig und es ist richtig gut geworden.

Das Buch ist tatsächlich ein umfassendes Handbuch, in dem man viel über die Hintergründe von Virtualisierung und natürlich auch über Xen erfahren kann.

Marcus hat in seiner gewohnt verständlichen Schreibe das Thema Xen aufgearbeitet und so ein sehr gutes Kompendium geschaffen, mit dem man sich sein eigenes Xen-System zusammenbauen und verwalten kann.

VirtualBox 2.0 ...

ubuntu Gestern schreibe ich noch über die neuen Paketquellen von Virtualbox und heute ist Version 2.0.0 raus.

Also altes Virtualbox deinstallieren und die neue Version installieren.
sudo aptitude purge virtualbox
sudo aptitude install virtualbox-2.0

Die virtuellen Maschinen sind direkt unter der neuen Version lauffähig.

Der Ubuntu-Standard ist apt, wenn Ihr Euch nicht sicher seid oder nicht wisst, wo der Unterschied ist, nutzt bitte:
sudo apt-get purge virtualbox
sudo apt-get install virtualbox-2.0

Das Warten hat noch kein Ende ...

Wie hier angekündigt wolle ich mir Chandler näher ansehen.

Das Projekt ist sehr vielversrechend, steckt aber leider noch zu sehr in den Kinderschuhen, um ernst genommen zu werden. Das macht sich leider nicht nur in der Geschwindigkeit des Speicherns bemerkbar.

Gut gelungen finde ich die Integration verschiedener Terminquellen und die Anlage von übergreifenden Kategorien für Termine.

Schlecht finde ich die Anlage wiederkehrender Termine. Es ist mir nicht gelungen, einen Termin anzulegen, der immer am letzten Freitag im Monat stattfindet. Und das ist eher noch eine der leichteren Übungen.

In Summe denke ich, dass das Projekt sich noch ein wenig weiterentwickeln muss bevor es wirklich ernsthaft benutzbar wird.

Sollte das Warten ein Ende haben?

Bei Golem lese ich von Chandler.

Schon sehr lange suche ich nach einem vernünftigen Webkalender, der zumindest in die Nähe vom Google Kalender kommt. Chandler soll eine PIM (Personal Information Management) Anwendung sein, die sowohl per Web als auch per Client verwaltet werden kann.

Es gibt Clients für Windows, Mac OS X und Linux (sogar als deb-Paket zur Nutzung unter Debian/Ubuntu).

LaTeX ...

Mein letzter Kontakt zu dem Makropaket LaTeX (Ergänzung des Textsatzsystems TeX) ist mehr als 15 Jahre her und jetzt brauche ich das Wissen wieder für ein privates Projekt.

Jetzt, da ich mich wieder damit beschäftige, kann ich nicht mehr nachvollziehen, warum ich auf die WYSIWYG-Welle aufgesprungen bin. LaTeX ist um so vieles eleganter.

Einen guten Wiedereinstieg bilden die Tutorials von Jens Kubieziel und Sebastian Stein.

MySQL via SSH verwalten ...

Auf den meisten Webspaces ist zum Verwalten der MySQL-Datenbank phpMyAdmin vorhanden. Das ist ein phantastisches Tool, das mit dem Webbrowser nahezu alle Aufgaben rund um die eigene Datenbank erschlägt. Aufgrund der Tatsache, dass ein Browser benutzt wird, ist es manchmal etwas "hakelig" Verwaltungsaufgaben zu erledigen.

Wenn man auf seinem Webspace einen SSH-Zugang hat oder einen root-Server betreibt und MySQL nicht von aussen zugreifbar haben möchte (gute Idee!), kann man damit wahre Wunderdinge bewegen.

Zum einen sind die auf dem Server installierten Tools benutzbar, was wiederrum nicht jedermanns Sache ist.

Alternativ dazu kann man auch jeden lokal (!) installierten Client verwenden. Dazu baut man einen SSH-Tunnel auf. Das geht über
ssh -L 12345:localhost:3306 user@server
Das "-L" gibt an, von wo der Tunnel benutzt werden kann (so merke ich mir das), nämlich von Links, von der lokalen Maschine zur entfernten Maschine (Rechts). Der lokale Port 12345 wird via SSH-Tunnel an den entfernten Port 3306 weitergeleitet. Spendiert man der Zeile noch ein "-g", so kann der lokale Rechner als Proxy für andere Rechner verwendet werden.

Ab jetzt ist es möglich via Port 12345 auf der lokalen Maschine auf die entfernte Datenbank zuzugreifen.

Eine Klippe gilt es aber noch zu umschiffen. Die Tools von MySQL wollen Datenbanken, die auf localhost laufen immer via Socket verbinden. Das kann für die entfernte Datenbank natürlich nicht funktionieren.
mysql --protocol=tcp -P 12345 -u user -p
funktioniert aber bestens. Bei den grafischen Tools ist anstelle von "localhost" die IP-Adresse "127.0.0.1" einzutragen, dann wird auch dort TCP benutzt.

Ich mag die MySQL-Tools allerdings gar nicht so sehr. Daher nutze ich den SQuirreL SQL Client, den ich im neuen Job schätzen und lieben gelernt habe. Das ist eine Java-Anwendung, die die Syntax von verschiedenen SQL-Dialekten schon via Plugin dabei hat (darunter DB2, Oracle, MySQL, Sybase und einige andere mehr). Das, was noch zu tun ist, ist den jdbc-Treiber in das lib-Verzeichnis zu kopieren und schon können entsprechende Datenbanken verwendet werden.

In unserem Beispiel sorgt
jdbc:mysql://localhost:12345/datenbank
für die Verbindung zur Datenbank mit dem Namen Datenbank.

iriverter ...

iriverter ist ein kleines Tool, mit dem Videos in Formate für unterwegs-Player gewandelt werden können.

Unterstützt werden derzeit Creative Zen Vision:M, iAUDIO X5 Series und von iriver H300 Series, PMP Series und clix / U10.

Lauffähig ist das ganze unter Windows, Mac OS X und Linux.