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