Porównanie systemów zarządzania relacyjnymi bazami danych
Transkrypt
Porównanie systemów zarządzania relacyjnymi bazami danych
Jarosław Gołębiowski 12615 08-07-2013 Porównanie systemów zarządzania relacyjnymi bazami danych Podstawowa terminologia związana z tematem systemów zarządzania bazami danych Baza danych jest to zbiór danych opisujący pewien wybrany fragment rzeczywistości według określonych zasad. System zarządzania bazami danych (SZBD) jest to oprogramowanie lub system informatyczny służący do zarządzania bazami danych. Funkcjonalności SZBD • wsparcie dla języka bazy danych • wsparcie dla struktur danych – efektywne składowanie i przetwarzanie danych (optymalizacja dostępu do danych) • ochrona przed nieautoryzowanym dostępem do danych • współbieżny dostęp do danych - na tych samych danych pracują różne aplikacje nie kolidując ze sobą • zagwarantowanie bezpieczeństwa danych w przypadku awarii • wielość interfejsów dostępu do bazy danych – możliwość przedstawienia tych samych danych w różnych formatach np. formularz, raporty Interakcja z bazą danych Programy użytkowe kontaktują się z bazą danych za pomocą języka SQL. SQL jest to strukturalny język stosowany do formułowania zapytań w odniesieniu do baz danych. Za jego pomocą możliwe jest tworzenie, modyfikacja baz danych oraz operowanie na danych w niej zawartych. SQL to język deklaratywny, wymaga jedynie określenia, co chcemy otrzymać w wyniku wykonania zapytania. Za to, w jaki sposób zadanie zostanie zrealizowane odpowiada SZBD. Opracowany w latach 70 przez IBM, SQL jest uniwersalnym interfejsem do większości SZBD. Innym wartym wymienienia, aczkolwiek rzadziej stosowanym sposobem komunikacji z bazami danych jest rodzina języków bazodanowych xBase. Podział SZBD ze względu na wykorzystywany model danych relacyjne – dane reprezentowane są w postaci dwuwymiarowych tabel o określonej liczbie kolumn i dowolnej liczbie wierszy. Tabele (zwane relacjami) powinny zawierać jednorodne informacje obiektów określonego typu obiektów obiektowe - dane przechowywane są w strukturach obiektowych w postaci klas wraz z przywiązanymi do nich metodami (procedurami). Możliwe jest dokonywanie operacji na obiektach tak jak na zmiennych programu. 1 obiektowo-relacyjne –dane przechowywyane są tak jak w modelu relacyjnym w postaci tabel, jednak możliwe jest dokonywanie operacji na nich tak jak na obiektach semistrukturalne - struktura danych jest określana za pomocą grafu węzłów i krawędzi. Służą jako model dokumentów w notacji takiej jak XML. hierarchiczne - dane są przechowywane na zasadzie rekordów nadrzędnychpodrzędnych, przypominających strukturę drzewa. Przykładem może być struktura katalogów na dysku czy drzewo genealogiczne. W odróżnieniu od semistrukturalnych rekord może mieć tylko jednego rodzica. sieciowe - rozwinięcie bazy hierarchicznej przez dodanie możliwości zapisu relacji wieledo-wielu. Występują dodatkowe połączenia, umożliwiające uzyskanie dostępu do danego rekordu bez potrzeby każdorazowego przechodzenia przez strukturę drzewa. Relacyjne bazy danych są najpowszechniej stosowane. Dlatego bazy wykorzystujące ten model danych zostaną porównane. Popularne Systemy zarządzania relacyjnymi bazami danych (RDBMS) RDBMS możemy podzielić na dwie zasadnicze grupy - systemy komercyjne oraz systemy niekomercyjne. Systemy komercyjne, które wymagają nabycia płatnych licencji oferują nam różne dodatkowe funkcjonalności oraz wsparcie techniczne. W razie problemów otrzymamy pomoc od suportu. Niekomercyjne RDBMS są wolnym oprogramowaniem, zwolnionym z opłat przynajmniej dla celów niekomercyjnych. Często są rozwijane przez wolontariuszy i nie możemy liczyć na wsparcie. Komercyjne: Oracle Database DB2 Informix Microsoft SQL Server Niekomercyjne: MySQL Firebird PostgreSQL Wsparcie dla systemów operacyjnych SZBD Oracle DB2 Informix MS SQL Server MySQL Firebird PostgreSQL Wspierane systemy operacyjne Windows, OS X, Linux, UNIX Windows, OS X, Linux, UNIX Windows, OS X, Linux, UNIX, BSD Windows Windows, OS X, Linux, UNIX, BSD, Symbian Windows, OS X, Linux, UNIX, BSD, Android Windows, OS X, Linux, UNIX, BSD 2 Kontrola dostępu i zabezpieczenia RDBMS Audyt Tak Ochrona przed atakami Brute-force Tak Szyfrowanie sieci wewnętrznych Tak Zasady złożoności hasła Tak Certyfikat bezpieczeństwa Tak Oracle DB2 Tak Nie Tak Tak Tak Informix Tak Nie Tak Nie Nie MS SQL Server Tak Nie Tak Tak Tak MySQL Nie Nie Tak Nie Nie Firebird Nie Tak Nie Nie Nie PostgreSQL Tak Tak Tak Tak Tak *Audyt – monitorowanie działań użytkowników i działań na obiektach Oracle i PostgreSQL udostępniają największą gammę rozwiązań podnoszących bezpieczeństwo bazy danych. Indeksowanie Jest to struktura powiązana z tabelą umożliwiająca szybsze wykonywanie zapytań SQL. Rodzaje indeksów: bitmapowe - informacje przechowywane są w postaci mapy bitów (macierz bitów danych) dla każdej wartości występującej w danej kolumnie unikalne – ograniczenie zapewniające, że w relacji nie będzie dwóch rekordów z tą samą wartością atrybutu indeksowego pełnotekstowe – przeszukiwanie kolumn tekstowych bazujące na analizie poszczególnych słów hash – jest to funkcja(zwana mieszającą), która przyporządkowuje dowolnie dużej liczbie krótką pozornie losową wartość drzewa R-/R+ – dane indeksowane są w postaci obiektów geometrycznych (wielokąty, linie i punkty). Grupowane są przy użyciu algorytmu minimalnej obwiedni prostokątnej (MBR). Obiekty są dodawane do indeksu wskazującego na najmniejszy przyrost wielkości dodawanych obiektów odwrócone – wartość w indeksie jest przechowywana w odwrotny sposób niż wartość przechowywana w atrybutach, np. ‘BAZA’ będzie przechowywana jako ‘AZAB’ GiST – umożliwia złożone wyszukiwanie za pomocą operatorów takich jak np. <<, &<, &>, >>, <<|, &<|, |&>, |>>, @>, <@, ~=, && GIN – indeksy potrafiące obsłużyć wartości, które posiadają więcej niż jeden klucz, jak np. tablice filtrowane – selekcja wyników wyszukiwania według zadanych kryteriów 3 Stosowane mechanizmy w poszczególnych DBMS: Oracle Database: indeksy bitmapowe, unikalne, pełnotekstowe, Hash, drzewa R-/R+, odwrócone, filtrowane DB2: indeksy bitmapowe, unikalne, pełnotekstowe, odwrócone Informix: indeksy bitmapowe, unikalne, GIN, GiST, pełnotekstowe, Hash, drzewa R/R+, odwrócone, filtrowane Microsoft SQL Server indeksy unikalne, pełnotekstowe, filtrowane, przestrzenne MySQL: indeksy pełnotekstowe, Hash, drzewa R-/R+ Firebird: indeksy unikalne, odwrócone PostgreSQL: indeksy bitmapowe, unikalne, pełnotekstowe, Hash, drzewa R-/R+, odwrócone, GIN, GiST, filtrowane Oracle, Informix oraz PostgreSQL oferują największą ilość indeksów. Zaletą jest przyśpieszenie wyszukiwania danych oraz wzrost stopnia współbieżności wykonywanych operacji. Wadą natomiast możliwe spowolnienie modyfikacji danych. Ograniczenia rozmiaru danych *BLOB/CLOB -typ danych umożliwiający przechowywanie dużych ilości danych jako pojedynczy obiekt. BLOB – dane binarne (np. pliki graficzne, muzyczne) CLOB – dane znakowe (np. długie łańcuchy znaków, pliki tekstowe) Jaki system zarządzania bazą danych wybrać? Wybierając najlepszy dla siebie SZBD należy odpowiedzieć sobie na kilka podstawowych pytań: 1. Jak ważna jest cena? Jest to często jeden z najważniejszych czynników, jakie programiści biorą pod uwagę wybierając SZBD. Z wiadomych powodów wolne oprogramowanie nie dorównuje systemom komercyjnym. Systemy najbardziej popularne, a mianowicie Oracle oraz MS SQL Server oferują najwyższą niezawodność i jakość działania. Jednak wysoka cena (180$ licencja na jednego użytkownika Oracle, MS Server podobne stawki w zależności od dystrybucji oraz liczby licencji) często zmuszają do wyboru mniej popularnych rozwiązań, aczkolwiek nie koniecznie odbiegających jakością od wyżej wymienionych. 2. Jak ważna jest kompatybilność z różnymi systemami operacyjnymi? 4 W zasadzie wszystkie porównywane SZBD oferują wsparcie dla większości systemów operacyjnych. Wyjątkiem jest MS SQL Server, który pomimo kompatybilności jedynie z platformą Windows ma bardzo duży udział w rynku. 3. Jakie dodatkowe funkcjonalności są nam potrzebne? Podsumowanie Do prostych, mało wymagających projektów wystarczające są darmowe systemy takie jak MySQL, Firebird. Oracle, DB2, Informix, MS SQL Server są odpowiednie do dużych projektów, z dużym budżetem. Stoją za nimi duże korporacje oferujące wsparcie techniczne. Są gwarancją niezawodności i płynności działania. PostgreSQL dzięki dużym możliwościom proceduralnego języka PL/pgSQL jest dobrą alternatywą dla systemów komercyjnych. 5