/BazyDanychZasady

Z Brain-wiki

TI:WTBD/BazyDanychZasady

Każdy w miarę nietrywialny program operuje na jakichś danych, zazwyczaj też posługuje się jakąś formą ich trwałego zapisu. Co więc stanowi wyróżnik oprogramowania bazodanowego?

abstrakcja i niezależność danych

Przez abstrakcję danych rozumie się fakt, że oprogramowanie bazodanowe stanowi warstwę pośredniczącą uwalniającą programistę aplikacji od zajmowania się ,,fizycznymi" szczegółami formatu zapisu danych (ich serializacji), w tym również od bezpośredniej obsługi operacji wejścia/wyjścia. Zamiast tego, dane są udostępniane w postaci pewnej struktury logicznej, z predefiniowanymi operacjami implementowanymi na poziomie systemu -- nie ma potrzeby parsowania strumienia bajtów, aby zinterpretować go jako zapis danych, system to robi za nas. Niezależność danych oznacza odprzęgnięcie definicji ich struktury logicznej od konkretnej aplikacji, która z tych danych korzysta. Daje to elastyczność: na tych samych danych można oprzeć wiele aplikacji.

współdzielenie danych

Współdzielenie oznacza korzystanie z tych samych danych przez więcej niż jedną aplikację równolegle.

Nie jest to wielkim problemem, jeżeli wszystkie one, poza ewent. jedną, wykonują równolegle jedynie operacje odczytu. Chociaż i taka sytuacja wymaga nieco dbałości (by nie zostały odczytane ,,niekompletne" wyniki operacji zapisu czy modyfikacji).

Natomiast problem wielodostępu do danych z wieloma procesami zapisującymi czy modyfikującymi dane nie został w sposób zadowalający rozwiązany na poziomie systemów operacyjnych, ponieważ jest to problem trudny. Przeplatanie się operacji zapisu/modyfikacji, zwłaszcza sparametryzowanych wcześniejszymi stanami danych, musi prędzej czy później prowadzić do katastrofy (naruszenia integralności danych), jeżeli się nie zadba o specjalną obsługę takiej sytuacji.

Najczęstszym rozwiązaniem spotykanym w praktyce są transakcyjne systemy klient-serwer, gdzie dostęp do danych jest scentralizowany i znajduje się pod kontrolą pojedynczego procesu -- serwera, a aplikacje -- klienci zlecają serwerowi operacje na danych, dodatkowo blokując je w transakcje. Taka centralizacja ma wiele dodatkowych zalet z punktu widzenia aplikacji administracyjnych czy biznesowych.

integracja

Centralne składowanie wszystkich danych dotyczących danego obszaru działalności umożliwia uniknięcie zbędnych powtórzeń tych samych informacji — ułatwiając utrzymanie spójności, oraz usprawnia uzyskiwanie odpowiedzi na pytania złożone — wymagające czerpania informacji z różnych logicznie zbiorów danych

integralność

Warstwa oprogramowania bazodanowego — serwer, biblioteka, czy tp., obarczona jest również dbaniem o zachowanie poprawności formalnej danych, zdefiniowanej za pomocą precyzyjnych reguł. System nie powinien akceptować zleceń operacji prowadzących do naruszenia reguł integralności.

Zachowaniu integralności (w sensie odporności na błędy programistyczne) sprzyja również skupienie zadań serializacji danych i operacji we/wy w wyodrębnionym, dobrze sprawdzonym i zdebugowanym oprogramowaniu.

bezpieczeństwo i kontrola dostępu

SZBD, zwłaszcza te zbudowane na modelu klient-serwer, zazwyczaj implementują swoje własne modele kontroli dostępu do danych, niezależne od mechanizmów systemu operacyjnego i bardziej od nich szczegółowe/elastyczne.

Zastosowanie modelu klient-serwer pozwala również na izolację maszyny-serwera od bezpośredniego dostępu użytkowników programów klienckich, zapewniając im jedynie ściśle limitowany i kontrolowany dostęp za pośrednictwem wyspecjalizowanego protokołu.