Baza danych
Baza danych służy do tworzenia i zarządzania zapisanymi danymi w systemie komputerowym. Prosta baza obejmuje jedną lub kilka tabel, natomiast bardziej rozbudowane bazy posiadają dziesiątki jak nie setki tabel zawierających mnóstwo rekordów. Do identyfikacji rekordów baza wykorzystuje jeden lub kilka indeksów. Dane w bazie są przechowywane w postaci pól i rekordów. Pole w bazie odpowiada pojedynczemu elementowi np. pola ( Imię, nazwisko, adres). Komplet pól tworzy rekord. Możemy wyróżnić bazy lokalne oraz typu klient-server.
Lokalne bazy danych
Są to najprostsze bazy danych, które w całości znajdują się na jednym komputerze np. prosta baza zawierająca spis ludności w danym mieście. Baza ta będzie się zawierać tylko w jednej tabeli. Wszelkie zmiany użytkownik będzie bezpośrednio nanosił na ta tabele np. dodawanie, usuwanie lub aktualizację poszczególnych rekordów. Przykładem lokalnych baz danych mogą tu być: Access, Paradox, dBase.
Bazy typu klient-server
Główna baza tego typu jest przechowywana w zasobach serwera, który to na ogół jest wydzielony jako osobny komputer. Dostęp do niego jest realizowany za pośrednictwem innych komputerów – oczywiście przez sieć, zatem nie musza się znajdować blisko siebie by korzystać z takiej bazy. Użytkownicy korzystając z takiej bazy nie korzystają bezpośrednio z jej zasobów, ponieważ odbywa się to za poœrednictwem programów zwanych klientami.
Jeśli chodzi o serwery to najbardziej popularne na rynku obecnie są produkty firm: InterBase, Oracle, Sybase, Informix oraz Microsoft. Bardzo ważna cechą serwera jest możliwość korzystania wielu użytkowników, a wszystko to związane jest z licencją sprzedawaną przez producentów tego oprogramowania.
Architektura baz danych
- Jednowarstwowe bazy danych to takie, które wykonują natychmiast wszelkiego rodzaje zmiany, zaś program, który udostępnia użytkownikowi zawartość bazy ma z nim bezpośredni kontakt.
- Dwuwarstwowe bazy danych – klient porozumiewa się z serwerem za pomocą specjalnych sterowników. Jeśli chodzi o samo połączenie to jest ono zależne od samego serwera, natomiast kontrolowanie poprawności danych zależy od klienta. Rozwiązanie takie wiąże się ze sporym obciążeniem programu klientckiego.
Większość lokalnych baz danych opiera się na jednowarstwowym modelu natomiast bazy typu klient-serwer na dwu lub wielowarstwowym modelu architektury baz danych.
Podział i charakterystyka baz danych
Obecnie ludzie którzy zajmują się na co dzień bazami danych mogą łatwo stwierdzić, że różnią się pomiędzy sobą w wielu aspektach. Praktycznie każda baza tworzy swoją własną kategorię i trudno je zaszufladkować. Różnice te są bardzo widoczne w przypadku baz relacyjnych i baz obiektowych.
Jako cechy charakterystyczne dla danej grupy wyodrębniłem:
a). model danych (data model)
b). język zapytań (query language),
c). model obliczeniowy (computational model).
Relacyjne bazy danych (RDBMS)
Za autora technologii relacyjnych baz danych uważa się E. F. Codda. Ostatecznie standard RDBMS został opracowany przez ANSI X3H2. Zwykle produkt kwalifikuje się przy pomocy wersji specyfikacji języka SQL’96 ostatni to SQL’92.
Model danych
Dane przechowywane są w tabelach, z których każda ma stalą ilość kolumn i dowolna ilość wierszy. Wiersze odpowiadają niepodzielnym krotkom (tuple), a kolumny odpowiednim atrybutom (attribute). Kolumny zawierają dane określonego typu, po jednej wartości w wierszu. Typy są zdefiniowane na etapie projektowania bazy danych i jest ich określona ilość, maja stały rozmiar i zwykle są to ogólnie znane typy proste (liczba, data, godzina, ciąg znaków, znak, itp.). Każda tabela (relacja) ma zdefiniowany klucz (key) - wyróżniony atrybut lub kilka atrybutów, którego wartość jednoznacznie identyfikuje dany wiersz.
Język zapytań
Dane z bazy są wybierane na podstawie wartości z konkretnych pól w krotkach. Zapytania mogą mieć prosta postać i wymagać danych z wyłącznie jednej tabeli, jak również mogą być bardzo wyrafinowane wymagając od systemu operowania łączeniem (join), zagnieżdżaniem (nesting), różnica i suma teorii zbiorów (set union/difference) oraz innymi operacjami.
Model obliczeniowy
Wszelkie przetwarzanie danych oparte jest na wartościach pól w krotkach. Krotki nie posiadają uniwersalnego identyfikatora. Nie ma tez zabezpieczenia przed odnoszeniem się do innego wiersza tej samej tabeli. Przeglądanie wyników zapytań odbywa się przy pomocy \"kursora\" umożliwiającego przeglądanie wiersza po wierszu. Podobnie ma się sprawa uaktualniania danych. Manipulacja relacjami odbywa się w sposób globalny przy użyciu operatorów algebry relacji lub temu podobnych jeżyków - przetwarzanie wiersza po wierszu nie jest dozwolone.
Relacyjna baza danych dominuje w zastosowaniach komercyjnych: ok. 95% rynku baz danych.
Liczące się na rynku RDBMS
Oracle, Access [Microsoft], System 10/11 [Sybase], Dynamic Server [Informix], DB/2 [IBM], OpenIngres [Computer Associates].
Obiektowe bazy danych (ODBMS)
Obiektowe bazy nie są zdefiniowane żadnym oficjalnym standardem. Obowiązujący obecnie standard opracowany przez ODMG został opublikowany w 1993 roku. Jednym z podstawowych celów modelu obiektowego jest bezpośrednie odwzorowanie obiektów i powiązań miedzy nimi wchodzących w skład aplikacji na zbiór obiektów i powiązań w bazie danych. Dzięki mechanizmom obiektowym można tez zwiększyć niezależność danych od aplikacji poprzez przeniesienie procedur obsługi danych (w postaci metod) do systemu zarządzania baza.
Model danych
Model danych w obiektowych bazach danych posługuje się pojęciami takimi jak klasy, atrybuty, metody, udostępnia identyfikatory obiektów (OID), hermetyzacje danych oraz metod i wielokrotnego dziedziczenia.
Obiektowe bazy danych łącza własności obiektowości i obiektowych języków programowania z możliwościami systemów bazodanowych. Rozszerzają możliwości obiektowych jeżyków programowania (takich jak C++, Java czy Smalltalk) czyniąc z nich narzędzia do łatwego i efektywnego tworzenia systemów baz danych zmniejszając stopień złożoności i ilość kodu programów.
Język zapytań
Obiektowo zorientowany język staje się zarówno językiem programowania jak i językiem bazy danych, zapewniając bezpośrednia zależność miedzy obiektem w aplikacji a obiektem w bazie. Z takiej bezpośredniej zależności korzystają języki definicji danych, przetwarzania danych oraz zapytań. OBDMS zostały do tej pory zintegrowane z językami C++, C, Smalltalk, Java oraz LISP.
Standard ODMG-93 dostarcza dodatkowo język OQL. Język ten nie jest w pełni kompatybilny z SQL’86 i SQL92. Pomija zupełnie pojecie typu w znaczeniu postrzeganym przez model obiektowy. Wynik zapytania w języku OQL może natomiast być struktura, literałem, obiektem lub zbiorem obiektów. Większość baz obiektowych jest jednak wyposażona w SQL w celu zapewnienia zgodności ze standardem ODBC (Object Database Connectivity).
Model obliczeniowy
Mimo, ze podobnie jak w RDBMS, wciąż możliwe są zapytania deklaratywne, głównym sposobem tworzenia i modyfikacji obiektów jest korzystanie bezpośrednio z odpowiedniego dla bazy obiektowego języka programowania. Ponadto tworzone obiekty otrzymują unikalne identyfikatory niezmienne w czasie, które mogą być wykorzystywane przez inne obiekty w celu definiowania powiązań z tymi obiektami. Zwykle identyfikatory są konwertowane na wskaźnik do pamięci w chwili wczytywania konkretnego obiektu - uzyskujemy dzięki temu skrócenie dostępu do obiektu gdy jest on obecny np. w pamięci podręcznej.
Liczące się na rynku ODBMS
Jasmine [Computer Associates], Gemstone, O2, Object Store [Object Design], Objectivity/DB [Objectivity], Versant ODMBS [Versant].
Języki stosowane w bazach danych
Języki które stosuje się do zarządzania bazami danych można podzielić na cztery zasadnicze grupy:
- język definiowania danych (Data Definition Language - DDL), który umożliwia definiowanie struktury danych zawartych w bazie.
- Język manipulowania danych (Data Manipulation Language - DML),który umożliwia wypełnienie, modyfikowanie i usuwanie danych z bazy.
- Język sterowania danych (Data Control Language), który umożliwia sterowanie transakcjami tj. akceptacja lub wycofanie.
- Język zapytań (Query Language), który umożliwia pobieranie informacji z bazy za pośrednictwem określonych zapytań, warunków.
W praktyce te cztery języki są ze sobą zintegrowane. Takim zintegrowanym językiem jest m.in. SQL ( Structured Query Language).
Do listy języków można tu jeszcze dodać rozszerzenia proceduralne stosowane przez różne firmy produkujące SZBD: pl/pgsql w PostgreSQL, PL/SQL w Oracle i inne.