Hello Database

Ten wpis jest częścią mojego starego bloga, prowadzonego w latach 2005-2007 pod adresem dragonee.jogger.pl. Został on zachowany w celach archiwizacyjnych i niekoniecznie reprezentuje moje bieżące stanowisko na dany temat.

Informacje płyną w coraz szybszym tempie. Przypomina to nieco skutki globalnego ocieplenia – w pewnym momencie informacje zatopią większość ludzi. Mimo to, usilnie próbujemy powoli i nieustannie strukturalizować otaczające nas informacje. Bez szufladek, do których moglibyśmy wrzucać nowe dane, nie moglibyśmy przetrwać. Doprowadzanie danej informacji do stanu użyteczności zabierałoby tak wiele czasu, że musielibyśmy skrajnie obcinać docierające do nas sygnały.

Wiadomo, ze słów `chaos’ i `porządek’, cieplej zareagujemy na to drugie. Jest bardziej przewidywalne, a skoro tak, to nie ma się czego bać, bo i tak nie znajdziemy tam niczego nieznanego. Między innymi dlatego staramy się prócz strukturalizacji własnych systemów pojęciowych układać wszystko to, co się dookoła nas znajduje. Tu mała uwaga – tak zwany bałagan też jest swoistym porządkiem. Osoba, która tworzy bałagan za wygodniejsze uznaje zapamiętywanie, w którym miejscu odłożyła dany przedmiot, niż odkładanie go na jedno, to samo miejsce. Z tej strony uporządkowanie zaczyna być bardziej widoczne. 😉

Ta sama idea przyświeca komputerom – dane, jakie na nich przechowujemy są w jakiś sposób poukładane. Pliki leżą w katalogach, katalogi w innych katalogach, komputer na biurku, pani Basia na posadzce… W każdym razie idea plików jest wygodna, póki nagle nie każą nam zmienić zmienić numeru identyfikacji klienta (ang. Client Identification Number) na numer o jeden wyższy ze względu na pomyłkę działu sprzedaży (ang. Sales Management) w ostatnich dziewięćdziesięciu tysiącach plików (ang. Last 90 000 Files). Może pan Zbigniew z komputerowego by coś poradził, ale jest na chorobowym po czterech miesiącach zapalenia płuc. Oczywiście, praca musi być wykonana na wczoraj.

Dla uproszczenia zarządzania większymi ilościami powtarzalnych danych i zapobieżenia błędom podobnym do powyższego, skorzystać można z relacyjnej bazy danych. Przykładowo, wspomnianemu numerowi identyfikacji klienta można w bazie danych nadać atrybut autoinkrementacji, dzięki czemu maszyna sama zatroszczy się o dodawanie unikatowego numeru każdemu nowemu klientowi.

Dlaczego relacyjna?

Ponieważ pojęcie `bazy danych’ jest tak ogólne, jak ogólne są informacje. Wszędzie tam, gdzie segregujemy dane w jakiś sposób, możliwe będzie użycie terminu `baza danych’, począwszy na głowie, przechodząc przez różnego rodzaju kartoteki, kończąc wreszcie na dowolnym komputerowym systemie plików.

Ze względów historycznych, których opisanie zajęłoby dużo miejsca, pojęcie `bazy danych’ zostało ograniczone do wąskiej grupy oprogramowania zwanego relacyjnymi bazami danych. Są to dość rozbudowane systemy przechowywania danych, i aby obrazowo przedstawić zasadę ich działania, zaczniemy od środka, czyli od samych danych.

W naszej bazie dane składowane są w tablicowych strukturach – relacjach 1, w jednym lub wielu plikach, zależnie od implementacji . Pomiędzy strukturami mogą występować związki mówiące o tym, że pewien rodzaj danych z jednej tabeli odnosi się do danych z drugiej tabeli. Dla przykładu pierwszym rodzajem danych był klient, a drugim produkt. Produkt był kupowany przez klienta, a więc związek jest tu jak najbardziej wskazany.

Łatwo się domyślić, że sterowanie danymi zapisanymi w tabelach i dodatkowo powiązanymi różnymi związkami nie będzie zbyt proste. To prawda – całością procesu zajmują się systemy zarządzania relacyjną bazą danych, czyli RDBMS, które są rozbudowanymi programami zajmującymi się odczytem i zapisem danych na żądanie użytkowników. Dla obsługi tych żądań został wymyślony język strukturalny język zapytań, w skrócie SQL, dzięki któremu korzystanie z możliwości oferowanych przez bazę danych staje się w miarę proste.

Zazwyczaj RDBMS jest interfejsem dla różnego rodzaju aplikacji klienckich, które wykorzystują dane w sposób adekwatny do zastosowań (prezentacja danych użytkownikowi końcowemu, drukowanie partii towaru na danym produkcie, czy też przekazywanie danych w formie raportu gdzieś dalej). Dużą zaletą dla takiego systemu może być to, że RDBMS może znajdować się na jednym komputerze w sieci, a aplikacje klienckie na innych, w tym wypadku żądania i dane będą przekazywane poprzez sieć, a na dodatek mamy pewność, że dane nie będą rozbieżne na różnych stanowiskach (że nie sprzedamy dwa razy tego samego produktu).

Sytuacja, gdzie klient, serwer przetwarzający dane i składowanie danych są od siebie odrębne, została nazwana architektura trójwarstwową. Spotyka się ją w większości baz danych, np. MySQL, PostgreSQL, Oracle, czy Microsoft SQL Server.

Co można z tym zrobić?

Zastosowania relacyjnej bazy danych są różne. I różniste.

  • Najczęściej przychodzącym do głowy wykorzystaniem może być strona internetowa, forum, wiki, blog, czy portal. Języki skryptowe, takie jak PHP, Perl, czy Python mają łatwy do użycia zestaw funkcji odpowiadających za współpracę z RDBMS. W tym wypadku wykorzystanie bazy do przechowywania artykułów, postów, czy innego rodzaju danych samo nasuwa się na myśl.
  • Większym i bardziej ambitnym przedsięwzięciem jest stworzenie systemu bazodanowego dla dowolnej firmy. W bazie możemy składować informacje o klientach, transakcjach, wpływach i wydatkach i tak dalej. Dane te wykorzystamy dla pracowników firmy, którzy będą mogli kontrolować bieżące operacje czy opracowywać zestawienia kosztów. Nic nie stoi na przeszkodzie, aby RDBMS kontrolowało także dane odpowiadające za stronę, czy też sklep internetowy firmy.
  • Ryzyko rośnie, gdy w grę wchodzą coraz większe sumy. Ale i banki korzystają z baz danych – problem w tym, że jeśli ktoś się pomyli przy projektowaniu, to ktoś inny straci, być może miliony…
  • Teraz coś z zupełnie innej beczki: SQLite jest miniaturowym systemem zarządzania bazą danych. Nie nadaje się do zastosowań, gdzie wielu użytkowników w jednej chwili potrzebuje dostępu do bazy danych, ani nie jest przystosowany do komunikacji poprzez sieć. Za to całość kodu odpowiedzialnego za przetwarzanie danych znajduje się w bibliotece, która ma blisko 250kB, przez co SQLite znakomicie nadaje się do samodzielnych aplikacji, takich jak komunikatory internetowe, czy odtwarzacze mp3. Dane przechowywane są w jednym pliku, który można łatwo wysłać mailem, czy przekopiować w inne miejsce.

Gdzie w takim razie stosować bazę danych? Wszędzie tam, gdzie użycie innych rodzajów katalogowania staje się powolne i uciążliwe.

  1. Często wspomniana tablicowość ma niewiele wspólnego z rzeczywistym zapisem na dysku, gdyż oprogramowanie sterujące wykorzystuje różne sztuczki, aby zmaksymalizować szybkość przeszukiwania. ^
12 komentarzy
  1. 15 marca, 2007
  2. 15 marca, 2007
  3. 15 marca, 2007
  4. 15 marca, 2007
  5. 15 marca, 2007
  6. 15 marca, 2007
  7. 15 marca, 2007
  8. 15 marca, 2007
  9. 29 marca, 2007
  10. 29 marca, 2007
  11. 5 maja, 2007
  12. 15 maja, 2009
  13. 28 lipca, 2016

Leave a Reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *