Wprowadzenie

W dzisiejszych czasach nie ma już chyba sektora gospodarki, który nie miałby wsparcia w postaci mniej lub bardziej dedykowanego oprogramowania. Zdecydowana większość tego oprogramowania ma w taki, czy inny sposób, kontakt z bazami danych. Są to czasami pliki tekstowe, czasami pliki XML, czasami bazy MS Access, jednak w większości przypadków są to systemy DBMS, które gwarantują odpowiednią dostępność, system uprawnień, itp. Przodującymi produktami są tutaj Oracle Database, IBM DB2 i Microsoft SQL Server.

Planując karierę programisty, poza nielicznymi przypadkami (np. gry, grafika, niektóre narzędzia programistyczne), jesteśmy niejako skazani na radzenie sobie z obsługą baz danych. Ponieważ termin „aplikacje bazodanowe” jest bardzo szeroki, warto poznać różne aspekty tego zagadnienia — pozwoli to dobrać właściwe technologie przy projektowaniu rozwiązania. Przy tworzeniu oprogramowania kluczowe są dwa aspekty:

  • Oprogramowanie trzeba tworzyć szybko. Dlatego pomocne są tutaj różne narzędzia, jak np. Eclipse czy ActiveRecord.
  • Przy tworzeniu oprogramowania trzeba przewidzieć (na ile się da) kierunki dalszego rozwoju oprogramowania i uwzględnić przy projektowaniu. Nie sztuka napisać aplikacje, sztuka napisać ją tak, żeby dało się ją przyszłości łatwo rozwijać i konserwować.

Krótki przegląd architektur aplikacji

Możemy wyróżnić podział architektur na następujące.
  1. Jednowarstowa
    • Charakteryzują się składowaniem bazy danych lokalnie.
    • Są stosunkowo łatwe do napisania i zwykle małe.
    • Nie są skalowalne i nie obsługuje wielodostępu.
    • Przykładowe rozwiązania: MS Access, Paradox.
  2. Dwuwarstwowa
    • Są też nazywane aplikacjami typu klient–serwer.
    • Jest to bardzo często wykorzystywany model.
    • W tym modelu klienci mogą pracowac równolegle.
    • W niektórych rozwiązaniach pojawia sie problem „rozbudowanych klientów”, czyli sytuacja, w której większość przetwarzania danych odbywa się na aplikacjach klienckich. Trudność często jest serwisowaniem i uaktualnianiem takich aplikacji.
    • Aplikacje są w tym modelu stosunkowo łatwe do napisania i wzdrożenia.
    • Aplikacja korzysta zwykle z jednej bazy danych.
    • W tym modelu łatwiej niż w modelu jednowarstwowych uzyskać skalowalność aplikacji, ale jednak nadal bywa to trudne.
  3. Wielowarstwowa (rozproszona)
    • Pozwala podzielić aplikację na „warstwy”.
    • Umożliwia „odchudzenie” klienta, znacznie ułatwia skalowanie aplikacji.
    • Wymaga zwykle dużo więcej czasu i zasobów w porównaniu z pozostałymi architekturami.
    • Przykładowy zestaw warstw:
      • Warstwa interfejsu użytkownika, np. aplikacja SWING lub przegladarka WWW.
      • Warstwa generowania zawartości, np. tworzenie strony WWW do przekazania użytkownikowi.
      • Warstwa zarządzania treścią, np. CMS.
      • Warstwa usług WWW, np. WebServices za zadanie będzie miała dostarczanie danych innym aplikacjom.
      • Warstwa logiki biznesowej.
      • Warstwa uwierzytelnienia, np. SSO czy OpenID.
      • Warstwa pamięci masowej, czyli baza danych.