Die integrierten Tools von Linux sind so mächtig, dass Sie damit eine Datenbank erstellen können. So geht's

Indeks
  1. Was für eine Datenbank kann ich in Linux bauen?
    1. Einfache Zutaten, starke Ergebnisse
    2. Ein Standard-Set an Befehlen
    3. Legen Sie los!
    4. Tabellen als flache Dateien erstellen
    5. Eine ganze Tabelle abfragen
    6. Spalten mit cut auswählen
    7. Zeilen mit grep oder awk auswählen
    8. Paginate Ergebnisse mit tail und head
    9. Sortiere Zeilen mit sort
    10. Verbinde Tabellen mit join
    11. Alles zusammenfassen
    12. Es ist deine Wende

Entdecken Sie, wie Sie mit einfachen Linux-Tools eine effiziente Datenbank für eine ToDo-App erstellen können – strukturiert, flexibel und leicht erweiterbar.

Datenbanken sind das Rückgrat vieler Anwendungen, von komplexen Unternehmensportalen bis hin zu einfachen Tools wie Einkaufslisten. Relationale Datenbanken, gesteuert durch SQL, sind weit verbreitet, doch Linux bietet eine direktere, transparentere Lösung.

Was für eine Datenbank kann ich in Linux bauen?

Einfache Zutaten, starke Ergebnisse

Textdateien sind in Linux unschlagbar. Der große Vorteil? Sie können mit einer Vielzahl von starken Tools einfach kombiniert werden, um beeindruckende Ergebnisse zu erzielen.

So entsteht eine Datenbank – ein strukturiertes Datenpaket, vielseitig einsetzbar. Textdateien und Kommandozeilen-Tools ermöglichen blitzschnelles Prototyping, direkte Dateneinsichten und müheloses Versionieren, genau wie bei Code.

Ein Standard-Set an Befehlen

Viele Linux-Befehle sind darauf ausgelegt, mit Text zu arbeiten. Meist fungieren sie als Filter: Sie verarbeiten Eingaben, führen Operationen durch und liefern Ausgaben.

  • grep filtert Zeilen basierend auf Mustern.
  • cut schneidet spezifische Teile aus jeder Zeile und gibt sie aus.
  • awk bietet eine mächtige Sprache für die Musterverarbeitung.
  • sort ordnet Daten zuverlässig, auch nach bestimmten Spalten und sortiert Zahlen und Buchstaben korrekt.
  • head und tail extrahieren herausragende Zeilen aus Ausgaben.
  • join verknüpft verwandte Daten aus mehreren Dateien.

Legen Sie los!

Sie bauen eine einfache Datenbank für eine ToDo-App. Mit gängigen Linux-Tools erstellen Sie grundlegende Funktionen. Später erweitern Sie diese mit einer Skriptsprache oder migrieren zu einer relationalen Datenbank.

Tabellen als flache Dateien erstellen

Das einfachste strukturierte Textformat ist DSV (durch Trennzeichen getrennte Werte), eine Abwandlung des CSV-Formats. In Linux kommen oft Leerzeichen oder Doppelpunkte (:) als Trennzeichen zum Einsatz. Ein klassisches Beispiel hierfür ist die Datei /etc/passwd.

So speichern Sie eine ToDo-Liste:

Kaufe Milch:2024-10-21:2:offen Bank anrufen:2024-10-20:1:geschlossen

Ein Texteditor ermöglicht einfache Updates Ihrer Datenbank – ein klarer Vorteil des Plain-Text-Formats. Sie können sogar direkt über die Kommandozeile hinzufügen, indem Sie den Befehl echo nutzen:

echo "Müll rausbringen:$(date -I):3:offen" > aufgaben

Das entspricht folgendem SQL-Befehl:

INSERT INTO aufgaben VALUES('Müll rausbringen', CURDATE(), '3', 'offen')

Der Befehl nutzt einen Unterbefehl für das aktuelle Datum. Ein wenig umständlich beim Eintippen, doch in einem Skript äußerst praktisch.

Eine ganze Tabelle abfragen

Abfragen ist eine der häufigsten Aufgaben im Datenbankbereich. Um alle Daten abzurufen, lautet der einfachste SQL-Befehl:

SELECT * FROM aufgaben

Das holt sämtliche Spalten aus jeder Datenzeile. Bei einer dateibasierten Datenbank geschieht das jedoch ebenso leicht:

cat aufgaben

Spalten mit cut auswählen

Wenn Sie spezifischer werden, filtern Sie Ihre Auswahl auf bestimmte Spalten. In SQL sieht das so aus:

SELECT task FROM aufgaben

Das cut-Tool erfüllt eine ähnliche Funktion:

cut -d':' -f1 aufgaben

Die Option d definiert das Trennzeichen, das die Felder trennt. Mit f wählen Sie spezifische Felder aus. Das ergibt eine einfache Liste aller Aufgaben:

Zeilen mit grep oder awk auswählen

Oft möchten Sie nicht alles abrufen, sondern die Ergebnisse filtern. Hier eine einfache Filterabfrage:

SELECT * FROM aufgaben WHERE

status=open

Grep ist hier ideal. Damit suchen Sie nach einem Regex-Muster, um beispielsweise jede Aufgabe mit dem Status "offen" zu finden:

grep 'open$' tasks

Hier nutzen wir, dass der Status das letzte Feld ist; $ bedeutet das Ende eines Strings. Für Felder in der Mitte wird Regex komplizierter. Um etwa alle Zeilen mit Priorität 2 zu erhalten:

grep ':2:[^:]*$' tasks

Grep kann jedoch nur Textmuster erkennen, keine komplexen Ausdrücke wie diesen:

SELECT status, task FROM tasks WHERE date<2024-10-21

Diese SQL-Anweisung nutzt einen logischen Vergleich für Aufgaben vor einem bestimmten Datum. Ein komplexeres Regex ist mit grep nicht möglich.

Dafür brauchen Sie ein leistungsfähigeres Werkzeug wie awk:

awk -F':' '$2<"2024-10-21" {print $1 ":" $2 }' tasks

Awk kombiniert die Funktionen von grep und cut. Hier wird evaluiert:

$2<"2024-10-21"

Das bedeutet, es werden nur Zeilen mit früheren Daten ausgegeben. Der Befehl gibt dann die ersten beiden Spalten jeder Zeile aus.

Paginate Ergebnisse mit tail und head

Die LIMIT-Klausel in SQL begrenzt die Anzahl der Ergebnisse. Um die ersten zwei Zeilen zu erhalten:

head -2 tasks

Mit tail bekommen Sie die letzten n Zeilen. In Kombination mit head simuliert das die LIMIT-Klausel und ermöglicht Offsets. Um zum Beispiel die Zeilen 2-3 zu holen:

head -3 tasks | tail -2

Sortiere Zeilen mit sort

Die "ORDER BY"-Klausel ist zentral in vielen SQL-Abfragen. Linux bietet das äquivalente Tool sort. Wie bei cut und awk geben Sie ein Trennzeichen und eine Feldnummer an:

sort -t':' -k2 tasks

Das sortiert alle Datensätze nach Datum:

Verbinde Tabellen mit join

Relationale Datenbanken thematisieren die Beziehungen zwischen Tabellen, wobei ein Feld in einer Tabelle auf ein anderes verweist. Linux hat eine Entsprechung zur SQL-JOIN-Klausel: den Befehl join.

Erweitern Sie die Aufgaben-Daten um mehrere Personen. Fügen Sie eine Namensspalte zur Aufgaben-Datei hinzu, sodass sie so aussieht:

Erstellen Sie eine Datei, people, um Details über jede Person zu speichern, für die Aufgaben erfasst werden:

Jetzt können Sie den join-Befehl mit dem über t festgelegten Trennzeichen verwenden:

join -t':

-1 5 -2 1 tasks people

Die Optionen -1 und -2 geben an, auf welche Felder in den Dateien verwiesen wird: das 5. und das 1. Feld. Join nutzt standardmäßig das erste Feld. Dies vereinfacht sich zu:

join -t':' -1 5 tasks people

Das Resultat:

Um die Ausgabe zu optimieren, leiten Sie die verbundenen Tabellen an cut weiter und lassen das Namensfeld weg:

join -t':' -1 5 tasks people | cut -d':' -f2-

Die beiden Namen lassen sich mit awk zu einem vereinen:

join -t':' -1 5 tasks people | awk -F':' '{print $2":"$3":"$4":"$5":"$6" "$7}'

Alles zusammenfassen

Ein komplexerer SQL-Ausdruck verbindet beide Tabellen, wählt spezifische Spalten aus und holt Zeilen mit einer bestimmten Priorität. Das Ergebnis sortiert nach Datum und gibt nur die erste übereinstimmende Zeile zurück:

SELECT task,date,priority,status,first_name,last_name FROM tasks t LEFT JOIN people p ON t.name=p.name WHERE priority=2 ORDER BY date LIMIT 1

Die entsprechende Befehls-Pipeline ist anspruchsvoller, aber nicht kompliziert, wenn Sie mit den grundlegenden Werkzeugen vertraut sind:

join -t':' -1 5 -2 1 tasks people \ | awk -F':' '{print $2":"$3":"$4":"$5":"$6" "$7}' \ | grep ':2:' \ | sort -t ':' -k2 \ | head -1

Es ist deine Wende

Linux zu lernen erinnert an Kochen. Die Fähigkeiten aus einem Projekt übertragen sich auf andere. Möglicherweise entwickelst du sogar etwas Neues. Daher ist es entscheidend, die Funktionalität von Linux zu beherrschen. Du musst nicht alles wissen, aber ständiges Lernen zahlt sich aus.

Bist du neugierig auf weitere Artikel wie Die integrierten Tools von Linux sind so mächtig, dass Sie damit eine Datenbank erstellen können. So geht's? Entdecke spannende Inhalte in der Kategorie Linux.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Go up