Wbudowane narzędzia Linuksa są tak potężne, że możesz zbudować z ich pomocą bazę danych. Oto jak

Baza danych w Linuxie to proste narzędzie do zarządzania danymi, które można tworzyć i obsługiwać przy użyciu plików tekstowych oraz podstawowych komend terminalowych.
Baza danych to nieodzowny element aplikacji, od skomplikowanych serwisów po elementarne narzędzia, takie jak śledzenie wydatków czy listy zakupów. Choć relacyjne bazy danych oparte na SQL mają swoich zwolenników, Linux prezentuje prostszą, bardziej przejrzystą alternatywę.
Jaką bazę danych stworzyć w Linuxie?
Proste składniki, potężne wyniki
W środowisku Linux plik tekstowy pełni rolę króla. Dzięki solidnym narzędziom i ekosystemowi, który sprzyja ich obróbce, możesz zdziałać wiele, używając jedynie prostych plików tekstowych.
Tak sprawnie zorganizujesz swoje dane, że staną się użytecznym narzędziem. Używając plików tekstowych oraz kliku komend w terminalu, szybko stworzysz prototypy, sprawdzisz dane i zarządzisz ich wersjami z taką łatwością, jakbyś pisał kod.
Standardowy zestaw poleceń
Linux oferuje szereg użytecznych komend do pracy z tekstem. To filtry, które przetwarzają dane w czasie rzeczywistym.
- grep przeszukuje tekst i wybiera linie pasujące do określonych wzorców.
- cut wyodrębnia fragmenty linii i generuje wynik w standardowym wyjściu.
- awk to bardziej zaawansowany język do skanowania i przetwarzania wzorców.
- sort może sortować dane według określonych kolumn, sprawnie radząc sobie z sortowaniem numerycznym i alfabetycznym.
- head i tail wyciągają fragmenty z wyjściowego tekstu.
- join łączy powiązane dane z różnych plików.
Czas na działanie!
Stwórzmy prostą bazę danych do aplikacji todo. Z wbudowanych narzędzi Linuxa możesz zbudować wszystkie kluczowe funkcje. I gdy poczujesz się komfortowo, możesz rozwijać aplikację, korzystając z języków skryptowych lub zmieniając ją w relacyjną bazę danych.
Tworzenie tabel jako pliki płaskie
Jednym z najprostszych formatów tekstowych jest DSV, czyli wartości rozdzielane separatorami. To spokrewniony format z CSV—rozdzielanym przecinkami. W Linuxie zazwyczaj używa się spacji lub znaku dwukropka (:) do oddzielania pól. Klasycznym przykładem jest plik /etc/passwd:
Twoja lista rzeczy do zrobienia może wyglądać tak:
Kup mleko:2024-10-21:2:otwarte Zadzwoń do banku:2024-10-20:1:zamkniętePlik tekstowy możesz edytować w dowolnym edytorze. Możesz nawet dodawać elementy z terminala, kierując wyjście z polecenia echo do pliku:
echo "Wynieś śmieci:$(date -I):3:otwarte" > tasksTo równoważne z SQL:
INSERT INTO tasks VALUES('Wynieś śmieci', CURDATE(), '3', 'otwarte')Polecenie wykorzystuje podzapytanie do uzyskania bieżącej daty. To może być niewygodne ręcznie, ale w skrypcie jest o wiele prostsze.
Pobierz całą tabelę
Selekcja danych to jedno z najczęściej wykonywanych zadań. Aby wybrać wszystko z tabeli:
SELECT * FROM tasksTo przynosi wszystkie kolumny z bazy. W bazie opartej na plikach, ekwiwalent jest prosty:
cat tasksWybierz kolumny z cut
Możesz zawęzić wybór do konkretnych kolumn. W SQL wygląda to tak:
SELECT task FROM tasksUżywając cut, osiągniesz niemal to samo:
cut -d':' -f1tasks
Opcja d definiuje separator, a opcja f pozwala wybrać konkretne pola. Dzięki temu dostaniesz zwięzłą listę wszystkich zadań w bazie danych:
Wybierz wiersze z grep lub awk
Zamiast chaotycznie ściągać każdy wiersz z bazy, często będziesz chciał zawęzić wyniki. Filtrowanie według wartości pól? Naturalny krok:
SELECT * FROM tasks WHEREstatus=open
W tym przypadku grep sprawdza się doskonale. Użyj go do dopasowania za pomocą regex, ignorując zduplikowane zadania z statusami „otwartymi”:
grep 'open$' tasksTen wzór opiera się na tym, że status jest ostatnim elementem; $ oznacza koniec linii. Gdybyś miał pola pośrodku, regex mógłby skomplikować sprawę. Na przykład, aby wrzucić wiersze z priorytetem 2:
grep ':2:[^:]*$' tasksJednak grep obsługuje jedynie dopasowania tekstowe, nie poradzi sobie z bardziej złożonymi zadaniami, jak to:
SELECT status, task FROM tasks WHERE date<2024-10-21Tu mamy porównanie logiczne, aby uzyskać zadania sprzed konkretnej daty. Stworzenie bardziej złożonego regexu? Niełatwe zadanie dla grepa.
Potrzebujesz mocy awk:
awk -F':' '$2<"2024-10-21" {print $1 ":" $2 }' tasksAwk łączy funkcje grepa i cuta. W tym użyciu, warunek:
$2<"2024-10-21"Oznacza, że tylko wiersze z wcześniejszą datą będą dopasowane. Komenda wypisuje pierwsze dwie kolumny.
Paginacja wyników z użyciem tail i head
SQL-owa klauzula LIMIT wyciągnie określoną ilość wyników. Aby złapać pierwsze dwa wiersze:
head -2 tasksMożesz skorzystać z tail, by uzyskać ostatnie n wierszy. W połączeniu z head pozwala to naśladować LIMIT z przesunięciem. Na przykład, aby złapać wiersze 2-3:
head -3 tasks | tail -2Sortowanie wierszy z użyciem sort
Klauzula "ORDER BY" w SQL? Kluczowa w wielu zapytaniach. Linux oferuje prosty odpowiednik: sort. Podobnie jak cut i awk, możesz ustalić separator i pole, choć używają różnych liter. Tym razem, t to separator, a k to numer pola:
sort -t':' -k2 tasksWynik? Wszystkie rekordy posortowane według daty:
Łączenie tabel z użyciem join
Bazy relacyjne opierają się na relacjach między tabelami, a Linux ma coś, co odpowiada SQL-owej klauzuli JOIN – to join.
Zacznijmy od wzbogacenia danych o zadania dla różnych osób. Dodaj nową kolumnę z imionami do pliku z zadaniami:
Stwórz plik z ludźmi, aby przechować szczegóły o każdej osobie, dla której przechowujesz zadania:
Teraz spróbuj użyć komendy join z separatorem określonym przez opcję t:
join -t':' -1 5 -2 1 tasks peopleOpcje -1 i -2 wskazują, które pole z każdego pliku łączysz. Tutaj to 5. i 1. pole. Domyślnie join korzysta z pierwszego, więc uprość to do:
join -t':' -1 5 tasks peopleEfekt? Wydobycie obiegowych danych. Aby posprzątać wynik, wrzuć do cut, omijając pole z imieniem:
join -t':' -1 5 tasks people | cut -d':' -f2-A jadnak możesz połączyć dwa imiona w jedno z użyciem awk:
awk -F':' '{print $1 " " $2}' tasksjoin -t':' -1 5 tasks people | awk -F':' '{print $2":"$3":"$4":"$5":"$6" "$7}'Podsumowanie
Rozważ bardziej zaawansowane wyrażenie SQL. Łączy obie tabele, wyciąga imiona, selekcjonuje kolumny i filtruje wiersze o odpowiednim priorytecie. Sortuje według daty, a następnie zwraca jeden, najlepiej pasujący:
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 1Potokowa komenda? Może być trudniejsza do ogarnięcia, ale nie jest bardziej skomplikowana, gdy już znasz podstawowe narzędzia:
join -t':' -1 5 -2 1 tasks people \ | awk -F':' '{print $2":"$3":"$4":"$5":"$6" "$7}' \ | grep ':2:' \ | sort -t ':' -k2 \ | head -1Twoja kolej, aby przejąć kontrolę
Zgłębianie Linuksa przypomina gotowanie. Umiejętności z jednego projektu mogą przydać się w innym. Możesz stworzyć coś zupełnie nowego. Dlatego tak istotne jest poznawanie potężnych funkcji tego systemu. Nie musisz wiedzieć wszystkiego, ale warto ciągle się rozwijać.
Jeśli ciekawią Cię artykuły podobne do Wbudowane narzędzia Linuksa są tak potężne, że możesz zbudować z ich pomocą bazę danych. Oto jak, zajrzyj do kategorii Linux i odkryj jeszcze więcej interesujących treści.
-
Jaką bazę danych stworzyć w Linuxie?
- Proste składniki, potężne wyniki
- Standardowy zestaw poleceń
- Czas na działanie!
- Tworzenie tabel jako pliki płaskie
- Pobierz całą tabelę
- Wybierz kolumny z cut
- Wybierz wiersze z grep lub awk
- Paginacja wyników z użyciem tail i head
- Sortowanie wierszy z użyciem sort
- Łączenie tabel z użyciem join
- Podsumowanie
- Twoja kolej, aby przejąć kontrolę
Dodaj komentarz

Możesz być zainteresowany