1.Co to jest SZBD, składowe
System Zarządzania Bazą Danych, SZBD (ang. Data Base Management System, DBMS) nazywany też serwerem baz danych lub systemem baz danych, SBD to oprogramowanie bądź system informatyczny służący do zarządzania komputerowymi bazami danych. Systemy baz danych mogą być sieciowymi serwerami baz danych lub udostępniać bazę danych lokalnie.
Niezbędne mechanizmy
* środki do gromadzenia, utrzymywania i administrowania trwałymi i masowymi zbiorami danych,
* środki zapewniające spójność i bezpieczeństwo danych,
* sprawny dostęp do danych (zwykle poprzez język zapytań, np. SQL),
* środki programistyczne służące do aktualizacji/przetwarzania danych (API dla popularnych języków programowania),
* jednoczesny dostęp do danych dla wielu użytkowników (z reguły realizowany poprzez transakcje),
* środki pozwalające na regulację dostępu do danych (autoryzację),
* środki pozwalające na odtworzenie zawartości bazy danych po awarii,
* środki do zarządzania katalogami, schematami i innymi metadanymi,
* środki optymalizujące zajętość pamięci oraz czas dostępu (np. indeksy),
* środki do pracy lub współdziałania w środowiskach rozproszonych.
Dodatkowe mechanizmy
* zarządzanie wersjami i danymi nietrwałymi,
* przechowywanie i udostępnianie danych multimedialnych,
* wygodne (wizyjne) środowiska do tworzenia aplikacji,
* pomosty do współpracy z innymi systemami,
* wspomaganie dla perspektyw, składowanych procedur i aktywnych reguł,
* pakiety statystyczne, pakiety dla przeprowadzania analiz (eksploracji danych),
* pakiety do tworzenia hurtowni danych,
* środki udostępniające bazę danych w sieci Internet, itd.
2.Indeksy: cel, sposób tworzenia
jest to kopia danego pola, gdzie wszystkie wartości są już posortowane, tak więc przyspiesza się wyszukiwanie, czy sortowanie, natomiast spowalnia dodawanie rekordów (z racji tego, że trzeba jeszcze zmodyfikować indeks), a także zwiększa się objętość bazy. Indeksów nie można zakładać, jak popadnie - nie da się też tego dobrze opisać. Dlatego proponuję pooglądać, gdzie są one założone w bazacch danych różnych znanych skryptów, np. phpBB, czy InvisionBoard. Indeks tworzymy w sposób przedstawiony na przykładzie:
<?php
$db = sqlite_open('./sklep.sqlite');
sqlite_query($db, 'CREATE INDEX i ON products_to_clients (client_id, product_id);');
if(!sqlite_last_error($db)){
echo 'Indeks dodany!';
}else{
echo 'Błąd SQLite: '.sqlite_error_string(sqlite_last_error());
}
sqlite_close($db);
?>
Jedyne, co musimy określić w zapytaniu CREATE INDEX to nazwa indeksu, tabela, na jaką chcemy go założyć, oraz pola, jakich ma on dotyczyć.
Przykład ten ilustruje dodatkowo, jak należy sprawdzać błędy w naszych zapytaniach. Jest to bardzo ważne, ponieważ często nieutworzenie uchwytu do wyników przez funkcję sqlite_query() spowodowane jest właśnie błędem w naszym zapytaniu!
3. Zadania administratora bazy danych
*Końcowy odbiór zaimplementowanych aplikacji bazy danych
*Regularne wykonywanie kopii zapasowych
*Zapewnienie dostępności mechanizmów i procedur odzyskiwania danych
*Zapewnienie kompletności dokumentacji, w tym materiałów wytworzonych własnymi siłami
*Bieżące śledzenie rozwoju sprzętu i oprogramowania oraz ich cen
*Instalacja koniecznych aktualizacji
*zarządzanie przywilejami / kontami uzytkownikow
*"to" ma dzialac
4.Jakie różne uprawnienia może otrzymać użytkownik SZBD
odczyt, zapis, tworzenie tabel, dodawanie uzytkownikow, ?
* GRANT to allow specified users to perform specified tasks.
* DENY to disallow specified users from performing specified tasks.
* REVOKE to cancel previously granted or denied permissions.
* UPDATE to allow a user to update records
* READ disallows a user to edit the database, can only view the data
* DELETE allows a user to delete records in a database
5.Sposoby przeciwdziałania skutkom awarii SZBD
Backup raid
rozproszony system danych
lustrzane serwery
6.Jakie czynniki warunkują prznośność danych
im dany silnik bazy danych jest bardziej zblizony do standardu tym lepiej. Pozwala to na wieksza przenosznosc daby danych.
Waznym czynnikiem jest tez to, jakie polecenia sa wykorzystywane w starym/nowym silniku. Silniki nie musza byc zgodne ze standardem a przenosnosc bedzie wystepowac. np. triger'ow nie ma w standardzie ale niektore silniki je wykorzystuja.
7.W jaki sposób można realizować kopie zapasowe danych SZBD
do realizacji kopii wykorzytuke sie polecenie dump (w roznych systemach roznie wyglada). Przy uzyciu polecenia dump mozemy okreslic kiedy ma byc przeprrowadzony backup (1 niedziela miesiaca, gdzina itp.) oraz czy ma byc baza udostepniona podczas backup'u.
Do backup'u wykorzystuje sie: tasmy, plyty, inne dyski
8.Zakleszczenie (ang. deadlock) - co to jest, przeciwdziałanie
Zakleszczenie (ang. deadlock) jest pojęciem z teorii gier opisującym sytuację, w której co najmniej dwie różne akcje czekają na siebie nawzajem, więc żadna nie może się zakończyć. Gracze zdobyli pewne unikatowe warunki niezbędne do wykonania kolejnego ruchu, ale żaden nie ma wszystkich i gra nie może być kontynuowana.
*Powstawanie
Problem zakleszczenia występuje w wielozadaniowych systemach operacyjnych, gdzie wiele zadań w tym samym czasie konkuruje o wyłączny dostęp do zasobów. Zjawisko jest również ważne w systemach zarządzania bazami danych. W pierwszym przypadku zasobami są struktury danych (często powiązane z fizycznymi urządzeniami takimi jak na przykład karta dźwiękowa lub magistrala), w drugim przypadku zasobami są obiekty bazy danych, na przykład relacje (tabele) lub poszczególne krotki. Zakleszczeniu mogą ulec zadania takie jak na przykład procesy lub wątki a w bazach danych poszczególne transakcje.
Najprostsze zakleszczenie powstaje dla dwóch procesów. Każdy z nich utrzymuje w swojej wyłącznej dyspozycji pewnien zasób i jednocześnie czeka na zwolnienie innego zasobu zajętego przez drugi z procesów.
W ogólności do zakleszczenia na pewno doprowadzi pięć kroków:
1. wzajemne wykluczenie,
2. trzymanie zasobu i oczekiwanie,
3. cykliczne oczekiwanie,
4. brak wywłaszczania z zasobu,
5. brak mechanizmu ratunkowego.
Wzajemne wykluczenie to uzyskanie dostępu do zasobu w taki sposób, że w danym czasie więcej procesów nie ma już dostępu do tego zasobu. Następnie zasób jest trzymany przez pewien czas przez proces, który zaczyna oczekiwać na dostępność kolejnego ale zajętego zasobu. Zasób jest trzymany przez proces, który również oczekuje na jakiś zasób. Jeśli pojawi się oczekiwanie cykliczne z udziałem co najmniej dwóch procesów, wszystkie procesy będą w stanie oczekiwania i żaden nie będzie oddawał zasobu. Wiele systemów operacyjnych umożliwia wywłaszczenie procesu z zasobu, jednak to rozwiązanie może powodować kolejne problemy (np. wprowadzenie procesu w stan nieprzewidziany przez jego projektanta). System kontrolujący procesy i zasoby może mieć zaimplementowaną politykę ochrony przed takimi sytuacjami.
*Unikanie
Identyczna kolejność alokowania zasobów pozwala uniknąć zakleszczenia
Istnieją sposoby zapobiegania zakleszczeniom. Opierają się one na specjalnych politykach dostępu do zasobów w skład których wchodzą algorytmy takie jak protokół pułapu priorytetu.
Jednak przede wszystkim, aby uniknąć zakleszczenia, programy muszą mieć właściwą konstrukcję. Właściwa konstrukcja oznacza w tym przypadku poprawną synchronizację w dostępie do zasobów, co w szczególności dotyczy problemu oczekiwania cyklicznego wymienionego na powyższej liście. Aby nie pojawiło się oczekiwanie cykliczne, dla wszystkich zadań musi być ustalona taka sama kolejność zajmowania zasobów.
Z zakleszczeniem, które już zaistniało może radzić sobie watchdog realizowany przez system operacyjny lub sprzęt kontrolujący działanie procesów. Może on po prostu zrestartować cały system lub, w bardziej skomplikowanych rozwiązaniach - arbitralnie zakończyć jeden lub więcej z zakleszczonych procesów, lub arbitralnie wymusić wywłaszczenie zadania lub zadań z zasobu.
9.Transakcja - idea, realizacja w języku SQL Definicja transakcji
Transakcja jest jednostką wykonywania, w której wszystkie polecenia są wykonane poprawnie lub w przeciwnym przypadku nie jest wykonywane żadne z poleceń. Jest to sekwencja operacji wykonywanych jako jedna logiczna jednostka pracy.
Każda z transakcji tworzona jest z zachowaniem pewnych standardowych własności:
Własności transakcji
Atomic - transakcja jest najmniejszą jednostką logiczną. Znaczy to, że jest wykonywana w całości albo w całości jest odwołana
Consistent - transakcja nie zmienia spójności bazy. To znaczy, że jeśli baza była spójna przed wykonaniem transakcji, będzie też spójna po jej ukończeniu.
Isolated - transakcja musi być izolowana, czyli nie może wchodzić w konflikty z innymi transakcjami wykonywanymi na tym samym zbiorze danych
Durable - transakcja jest trwała, jeżeli gwarantowane jest, że wykonane działania pozostaną kompletne bez względu na to, co się stanie z bazą po poprawnym zakończeniu transakcji. Jeżeli wystąpi awaria zasilania i serwer bazy danych ulegnie awarii, istnieje gwarancja, że transakcja będzie kompletna po ponownym uruchomieniu serwera.
Aby zagwarantować spójność bazy i mieć pewność, że wykonywane operacje zakończą się sukcesem lub porażką, stosowany jest mechanizm blokowania. Blokady są gwarancją tego, że podczas operowania na danych przez jedną transakcję dane nie zostaną zmienione bądź usunięte.
Transakcje na BD:
-Zmiana stanu BD
-Logiczna jednostka pracy w BD
-W trakcie trwania transakcji - BD nie jest spójna
-Właściwości transakcji (niepod., spójność, izol. i trwałość )
-Blokowanie - podstawa realizacji transakcji w środowisku współbieżnym
10.Blokada - idea, realizacja w języku SQL
Blokada (ang. lock) w informatyce to mechanizm służący do zapobiegania konfliktom w dostępie do zasobów w środowiskach wielozadaniowych.
Zadanie przed uzyskaniem dostępu do zasobu musi uzyskać dla siebie blokadę tego zasobu. Po zakończeniu wykorzystywania zasobu, zadanie musi blokadę zwolnić, żeby nie ograniczać dostępu innym.
Podział blokad odzwierciedla podział zasobów na prywatne, wyłączne i dzielone:
* W przypadku zasobów prywatnych nie jest konieczny mechanizm blokad, gdyż zasób jest trwale powiązany z zadaniem.
* Uzyskanie blokady wyłącznej uniemożliwia innym zadaniom dostęp do niej na czas jej posiadania.
* Blokady dzielone mogą być w jednej chwili uzyskane przez więcej niż jedno zadanie. Ilość zadań, które mogą uzyskać dostęp do blokady dzielonej, zależy od kodu programu i zwykle jest zależna od struktury danych lub urządzenia z którym ta blokada jest związana.
Zależnie od systemu blokady mogą być albo ściśle egzekwowane (mandatory locks) albo służą jedynie do informowania procesu o tym, że dostęp jest bezpieczny, i nie są wymuszane (advisory locks). Te pierwsze są powszechne w systemach baz danych, te drugie w systemach plików.
Kluczowym mankamentem algorytmów większości blokad jest konieczność uzyskiwania i zwalniania ich przez program realizujący zadanie, a więc zależy od programisty i jego kodu. Przy błędnym kodzie pojawiają się problemy takie jak zakleszczenie.
11.Jak założyć/jak usunąć operatora SZBD
Nadawanie praw dostępu:
Nadanie praw wykonywania określonych operacji na danych w bazie:
GRANT przywilej (kolumny_tabeli)
ON baza_danych.tabela
TO użytkownik@host IDENTIFIED BY 'hasło';
Odbieranie praw dostępu:
REVOKE przywilej (kolumny_tabeli)
ON baza_danych.tabela
FROM użytkownik@host;
Rodzaje przywilejów
ALL - prawo do wykonywania wszystkich operacji
ALTER - zmiana def. tabeli (ALTER TABLE)
CREATE - tworzenie tabel (CREATE TABLE)
DELETE - kasowanie danych z tabeli (DELETE)
DROP - usuwanie tabel (DROP TABLE)
FILE - ładowanie danych z/do plików
INDEX - tworzenie i usuwanie indeksów
INSERT - wstawianie danych (INSERT)
SELECT - pobieranie danych (SELECT)
UPDATE - uaktualnianie danych (UPDATE)
USAGE - bez żadnych praw
Poziom przywilejów:
Przywileje dostępu do danych (ON) mogą dotyczyć:
• wszystkich baz danych na serwerze (poziom globalny):
GRANT ... ON *.*
• wszystkich tabel w określonej bazie:
GRANT ... ON baza_danych.*
• określonej tabeli:
GRANT ... ON baza_danych.tabela
• pojedynczych kolumn w określonej tabeli
Domyślnie utworzony użytkownik nie posiada hasła, o ile nie użyta zostanie opcja IDENTIFIED BY.
Ustalenie hasła przy nadawaniu praw:
GRANT ALL ON *.* TO user IDENTIFIED BY 'hasło';
Inna instrukcja do nadania hasła:
SET PASSWORD FOR user = PASSWORD('hasło');
Dodawanie użytkowników:
Dodanie użytkownika z jednoczesnym nadaniem praw dostępu do danych:
GRANT ALL ON baza.* TO user IDENTIFIED BY 'haslo1';
Dodanie użytkownika bez nadania praw:
GRANT USAGE ON baza.* TO user
IDENTIFIED BY 'haslo2';
Dodanie na końcu opcji WITH GRANT OPTION pozwala użytkownikowi na przekazywanie praw innym użytkownikom.
12.Aspekt bezpieczeństwa połączenia z bazą danych
Metody uwierzytelniania stosowane w ochronie danych
Identyfikator to niepowtarzalna nazwa lub numer nadany obiektowi. Uwierzytelnianie to sprawdzenie, czy osoba lub obiekt jest tym, za kogo się podaje; procedura upoważniania bada, czy osoba ta lub obiekt ma prawo do chronionego zasobu. Wszystko to jest brane pod uwagę w celu podjęcia decyzji o udzieleniu dostępu. Identyfikator podaje tylko niepotwierdzoną tożsamość. Numery identyfikacyjne powinne w miarę możliwości używać cyfr kontrolnych lub stosować inne metody samokontroli, by zminimalizować szansę błędnej identyfikacji. Identyfikatory są niezbędne dla rozliczeń i upoważniania, ale nie mogą być używane bez dodatkowego uwierzytelniania, jeśli jest potrzebny w systemie stopień bezpieczeństwa. Uwierzytelnienie zwykle jest dokonywane jednorazowo, ale w instalacjach o dużym stopniu bezpieczeństwa może być wymagana okresowa lub stała weryfikacja. Dla uwierzytelniania tożsamości użytkowników komputery używają haseł lub innych metod dialogowych. Z punktu widzenia użytkownika znacznie ważniejsze są czynniki takie jak: liczba znaków do wprowadzenia, wysiłek umysłowy i sposób postępowania w wypadku popełnienia błędu przy wpisywaniu.
Hasło to ciąg znaków wprowadzonych przez użytkownika i sprawdzanych przez komputer. Hasła mogą być wykorzystywane niezależnie od użytkownika dla ochrony zbiorów, rekordów, pól w rekordach itp.
wyróżniamy metody uwierzytelniania:
1. podanie hasła:
- metoda prostych haseł - użytkownik wprowadza hasło, które może sam sobie wybrać, przy czym nie może to być hasło zbyt oczywiste
- wybrane znaki - komputer może żądać od użytkownika podania pewnych znaków. Numery znaków mogą być wyliczane na podstawie transformacji zegara wewnętrznego lub generatora
- hasła jednorazowe - użytkownik ma listę N haseł, tę samą listę pamięta komputer. Po użyciu danego hasła użytkownik skreśla je z listy. Wada jest taka, że użytkownik musi pamiętać lub mieć przy sobie całą listę i znać aktualne hasło oraz w przypadku błędów w transmisji użytkownik nie wie które hasło ma podać
2. metoda pytań i odpowiedzi - system ma zbiór odpowiedzi i zbiór pytań dostarczonych przez użytkownika. System zadaje pytania, użytkownik odpowiada:
wariant I: zadawanie losowo wybranych pytań
wariant II: jest zbiór pytań systemu, ale oprócz tego są zbiory pytań każdego użytkownika
wariant III: prawo użytkownika do zmiany pytań w swoim zbiorze
Metoda ta zajmuje dużo pamięci, ale jest komunikatywna
3. uwierzytelnienie tożsamości komputera - po uwierzytelnieniu użytkownik komputera ma podać swoje hasło, które wcześniej wprowadził użytkownik
4. procedura przywitania - wykonanie przez użytkownika poprawnie jakiegoś algorytmu. Metoda ta ma wyższy stopień bezpieczeństwa, brak jej jawności ale jest czasochłonna i żmudna dla użytkownika
5. procedury użytkownika - dostarczenie przez użytkownika procedur, które są wykonywane przed wejściem do systemu. Po zakończeniu danej procedury system wywołuje własną kontrolę bezpieczeństwa
6. Fizyczne metody uwierzytelniania - inne metody uwierzytelniania niż programowe sprawdzają czy użytkownik posiada jakiś przedmiot lub czy charakteryzuje się jakąś cechą fizyczną np. odciski palców, karty magnetyczne, zamki z kluczami itp.
Działania w wyniku odmowy udzielenia dostępu - dziennik systemu i zwłoka czasowa przy źle wprowadzonej odpowiedzi, oraz ilość prób wejścia do systemu.
Ogólne ostrzeżenia dotyczące haseł i ich używania:
1. Hasła nie powinny nigdy być przechowywane w jawnej postaci;
2. Hasła nie powinny być drukowane na drukarkach;
3. Powinny być często zmieniane;
4. Użytkownikowi nie wolno podawać nowego hasła po zakończeniu sesji;
5. Hasło na kartach sterujących zadania wsadowego - stosować programy kolejkowe szyfrujące;