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

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ęte

Plik 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" > tasks

To 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 tasks

To przynosi wszystkie kolumny z bazy. W bazie opartej na plikach, ekwiwalent jest prosty:

cat tasks

Wybierz kolumny z cut

Możesz zawęzić wybór do konkretnych kolumn. W SQL wygląda to tak:

SELECT task FROM tasks

Używając cut, osiągniesz niemal to samo:

cut -d':' -f1
tasks

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 WHERE

status=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$' tasks

Ten 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:[^:]*$' tasks

Jednak 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-21

Tu 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 }' tasks

Awk łą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 tasks

Moż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 -2

Sortowanie 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 tasks

Wynik? 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 people

Opcje -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 people

Efekt? 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}' tasks
join -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 1

Potokowa 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 -1

Twoja 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.

Indeks
  1. Jaką bazę danych stworzyć w Linuxie?
    1. Proste składniki, potężne wyniki
    2. Standardowy zestaw poleceń
    3. Czas na działanie!
    4. Tworzenie tabel jako pliki płaskie
    5. Pobierz całą tabelę
    6. Wybierz kolumny z cut
    7. Wybierz wiersze z grep lub awk
    8. Paginacja wyników z użyciem tail i head
    9. Sortowanie wierszy z użyciem sort
    10. Łączenie tabel z użyciem join
    11. Podsumowanie
    12. Twoja kolej, aby przejąć kontrolę

Możesz być zainteresowany

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Go up