Rozproszone bazy danych ...

Standardowy dostęp do różnych baz danych (ODBC).

Istnieje standardowy sposób dostępu do danych w bazach danych różnych typów ... jest to interfejs ODBC

ODBC = Open DataBase Connectivity

ODBC pozwala na jednolity dostęp do "danych tabelarycznych" znajdujących się w:

Interfejs ODBC składa się z "managera sterowników" oraz ze "sterowników" dla każdego DBMS-u..

W ODBC definiuje się tzw źródła danych...

Jak się definiuje źródło danych ODBC ?

 

 

Dostęp do bazy danych Access z internetu.

Jest możliwy dostęp do bazy danych Access-u poprzez przeglądarkę WWW ...

Potrzebny jest serwer WWW z wbudowaną obsługą jednej z technologii:

Wszystkie wymienione "technologie" działają następująco:

  1. tworzymy strony WWW w języku HTML
  2. wstawiamy do stron "wstawki" w pewnym języku programowania; takie strony zazwyczaj mają rozszerzenie *.jsp, *.php lub *.asp ("zwykłe" strony WWW mają rozszerzenie *.htm lub *.html)
  3. wstawki te są interpretowane przez serwer WWW i zazwyczaj generują fragmenty strony w języku HTML
  4. wstawka w stronie może się łączyć z bazą danych, odczytywać stamtąd dane i na tej podstawie generować HTML
  5. gdy klient uruchomi przeglądarkę i "wejdzie" na odpowiednią stronę WWW to dostanie w odpowiedzi stronę dynamicznie wygenerowaną na podstawie zawartości pewnej bazy danych

Rysunek przedstawiający architekturę 3-rzędową aplikacji wykorzystującą serwer WWW z obsługą stron JSP:

JSP (= Java Server Page)

W technologii JSP wstawki do stron WWW piszemy w języku Java ...

Java to bardzo rozbudowany język i środowisko programistyczne;
obecnie używa się "Java 2" i środowiska programistycznego JDK 1.4.1;
JDK=Java Development Kit;
JDK jest dostępne za darmo (patrz: http://www.sun.com);
programy w języku Java są przenośne, tj mogą bez żadnych zmian być uruchamiane na różnych platformach sprzętowych i różnych systemach operacyjnych.

W języku Java jest możliwy dostęp do baz danych przy pomocy JDBC;
(JDBC to składnik środowiska Javy bardzo podobny do ODBC)
w szczególności jest możliwy dostęp do wszystkich baz danych
dla których zdefiniowano źródło danych ODBC.


 

Przykład 1 prostej strony JSP;
w przykładzie tym widać jak ostateczna postać strony zależy od kodu w języku Java;

<html>
<head>
<title>eksperymenty z JSP ...</title>
</head>
<body>

To jest eksperyment z JSP ... <BR>
To jest eksperyment z JSP ... <BR>
To jest eksperyment z JSP ... <BR>
To jest eksperyment z JSP ... <BR>

<% // to jest wstawka JSP
   int i; // deklarujemy zmienna "i" typu integer
   i = sprawdzamyPewienWarunek(); // funkcja zwracająca 0 lub 1
%>

<% if ( i==1 ) {%>
Ten tekst się pojawi jeśli "i" jest równe 1 <BR>
<% } else { %>
Ten tekst się pojawi jeśli "i" jest różne od 1 <BR>
<% } %>

</body>
</html>

Przykład 2 strony JSP odwołującej się do bazy danych: "sql01.jsp_";
w przykładzie tym:

  1. podłączamy się do bazy danych dostępnej poprzez źródło danych ODBC o nazwie "db1"
  2. wykonujemy kwerendę "select * from tabela1;" czyli odczytujemy wszystkie rekordy z tabeli o nazwie "tabela1"
  3. jest tworzona tabela HTML w której pierwszym wierszu znajdują się nazwy pól tabeli, a w pozostałych są rekordy tabeli (zauważ że nazwy pól też odczytujemy z bazy danych !)

Zadanie 33


Wykonamy eksperyment w którym baza danych Access-u staje się dostępna poprzez stronę WWW; dokładniej, jest możliwe oglądanie zawartości tabeli o nazwie "tabela1"; modyfikowanie tabeli przez stronę to trudniejsza sprawa ...

[serwer] jakie oprogramowanie musimy zainstalować ?

[serwer] co musimy zrobić ?

[klient] jakie oprogramowanie musimy zainstalować ?  

[klient] co musimy zrobić ?


 

Wielodostęp do bazy danych Access-u.

Można umieścić plik *.mdb w dzielonym katalogu w lokalnej sieci komputerowej i wtedy kilku użytkowników może go otworzyć i pracować równocześnie w tej same bazie ...

Jeśli użytkownik otworzył tabelę i rozpoczął modyfikowanie pewnego rekordu to rekord ten może zostać zablokowany (jeśli sobie tego zażyczymy). Oznacza to że inni użytkownicy nie będą mogli modyfikować tego rekordu (ale mogą modyfikować inne rekordy tej samej tabeli !).

Dygresja: w poprzednich wersjach Access-u tabela była podzielona na tzw. strony (o rozmiarze 2KB) i na jedną stronę mogło przypadać kilka rekordów, po rozpoczęciu modyfikacji danego rekordu była blokowana cała jego strona i wszystkie znajdujące się na niej rekordy.

Uwaga: aby można było modyfikować rekordy tabel użytkownicy muszą mieć prawo modyfikowania udostępnionego pliku *.mdb; (w Windows XP: prawy guzik myszy na folderze | Udostępnianie | Udostępnianie i zabezpieczenia w sieci | Udostępnij ten folder + Zezwalaj użytkownikom sieciowym na zmianę moich plików [w WinXP warto utworzyć nowy katalog np na pulpicie i w nim umieścić dzielone pliki ...]).

Blokowanie rekordów przy wielodostępie.

Zadanie 34


Niech wszyscy użytkownicy otworzą bazę "np04.mdb" udostępnioną w sieci, i niech rozpoczną modyfikowanie rekordów tabeli Towary - zaobserwujemy efekt blokowania rekordów ...
Jeśli tabelę modyfikuje się poprzez formularz to można precyzyjnie ustawić sposób blokowania rekordów. We właściwościach formularza (zakładka Dane) można ustawić właściwość "Blokowanie rekordów" na następujące sposoby:

Wypróbuj te możliwości przy pomocy bazy "np04.mdb" udostępnionej w sieci;
Uwaga: najlepiej użyj formularza typu arkusz danych (który wizualnie nie różni się od "czystej" tabeli) !.
 

Tabele przyłączone Accessu.

Zadanie 35


Aby zredukować ruch w sieci warto udostępnić w sieci plik mdb zawierający wyłącznie tabele. Użytkownicy dysponują swoimi własnymi (lokalnymi) plikami mdb w których przyłączono tabele z sieciowego mdb.
Wypróbuj tę możliwość ...
Wskazówki: przyłączanie tabeli z obcych plików mdb:

menu Plik | Pobierz dane zewnętrzne | Połącz tabele

i wybrać obcy (czyli "sieciowy") plik mdb.
 

Zadanie 35a


W Access-ie istnieje możliwość automatycznego wyodrębnienia z pliku mdb nowego pliku mdb który będzie zawierał tylko tabelki:

menu Narzędzia | Narzędzia bazy danych | Rozdzielacz bazy danych

jeśli rozdzielamy bazę "np04.mdb" to powstanie dodatkowa baza "np04_wb.mdb" zawierająca tylko tabelki, natomiast w "np04.mdb" tabele zostaną zastąpione tabelami przyłączonymi pochodzącymi z "np04_wb.mdb". Tak więc plik "np04.mdb" należy skopiować na komputery wszystkich użytkowników natomiast "np04_wb.mdb" należy udostępnić w sieci.
Wypróbuj tę możliwość ...

Uwaga: jeśli zmieni się lokalizacja pliku "np04_wb.mdb" przez co tabele przyłączone przestaną działać to można tę lokalizację naprawić przy pomocy:

menu Narzędzia | Narzędzia bazy danych | Manager tabel połączonych

trzeba tam zaznaczyć wszystkie przyłączone tabele i następnie wybrać nową lokalizację pliku "np04_wb.mdb".

Zadanie 35b


(Blokowanie rekordów w tabelach przyłączonych Accessu)
Sprawdźmy czy działa blokowanie rekordów przy wielodostępie, gdy używamy tabel przyłączonych.
Użyjmy formularzy z ustawionym Blokowanie rekordów= Edytowany rekord.
 

Jakie wady ma wielodostęp do bazy danych poprzez udostępniony w sieci plik mdb ???
... zastanówmy się



 

Dostęp do serwera SQL z poziomu Access-u.

Serwer SQL (zwany także serwerem baz danych) to DBMS z którym ...

Access potrafi komunikować się z bazami danych dostępnymi poprzez interfejs ODBC,
w szczególności z serwerami SQL dostępnymi przez ten interfejs ...

Tabele przyłączone serwera SQL.

Można przyłączyć do Access-u tabelę znajdującą się na serwerze baz danych dostępnym przez ODBC w następujący sposób:

menu Plik | Pobierz dane zewnętrzne | Połącz tabele | Plik typu "ODBC Databases()"

i wybrać odpowiednie źródło danych ...

Zadanie 36


Spróbuj przyłączyć do Access-a tabele z bazy "Emploee" znajdującej się na serwerze InterBase.
Serwer "InterBase 7" jest już zainstalowany ...
Na komputerze "klienta" musi być zainstalowany:

  1. klient InterBase (głównie biblioteka "gds32.dll")
  2. sterownik ODBC dla InterBase (o nazwie "Easysoft IB 7 ODBC")
  3. musi być zdefiniowane "źródło danych" związane z bazą "Emploee" na serwerze InterBase

Wskazówka: jak się definiuje źródło danych ODBC ?

 
 
 

Zadanie 37


Zbadaj jak działa blokowanie rekordów w tabelach przyłączonych pochodzących z serwera SQL. Do modyfikowania przyłączonych tabel użyj formularza typu arkusz danych z Blokowanie rekordów= Edytowany rekord.

Uwaga: okazuje się że w przypadku przyłączonych tabel z serwera SQL blokowanie rekordu nie działa !.
Jeśli zaczęliśmy modyfikować dany rekord i chcemy zapisać zmiany, a w międzyczasie ktoś inny zmodyfikował nasz rekord, to Access proponuje nam 2 możliwości:

  1. porzucenie naszych zmian rekordu
  2. zapamiętanie naszych zmian w schowku; potem można zobaczyć jakie zmiany wprowadził inny użytkownik i ewentualnie zadecydować że nasze zmiany są "ważniejsze" i wstawić je do rekordu ze schowka (trzeba zaznaczyć cały rekord i wstawić dane ze schowka)
     

Kwerendy przekazujące.

Można używać serwera SQL w inny sposób niż "tabele przyłączone" ...

Można przekazywać polecenia SQL bezpośrednio do serwera SQL przy pomocy tzw kwerend przekazujących.

"MS Access Jet" nie będzie wtedy dokonywał żadnych tłumaczeń czy interpretacji poleceń SQL;
trzeba używać dialektu SQL-a stosowanego przez serwer !.
 
Opisy języka SQL serwerów InterBase i Postgres ...
Opisy serwera Postgres i inne źródła ...
Uwaga: są różnice między językiem SQL Jet-a (Access-u), a językiem SQL serwerów Postgress i InterBase ...


Zadanie 37


Utwórz własną tabelę w bazie danych "Employee" na serwerze IB.
Zrób to przy pomocy odpowiedniej "kwerendy przekazującej SQL".
Uwaga: definiując kwerendę przekazującą trzeba określić następujące właściwości kwerendy::

Wskazówki do zadania 37:

  1. utwórz pustą kwerendę (Widok projektu), bez tabel
  2. zmień typ kwerendy na "kwerendę przekazującą"
        (prawy guzik myszy na nagłówku okna projektowego | Wyłącznie SQL | Przekazująca)
    taka zmiana typu kwerendy jest nieodwracalna;
    Uwaga: mimo że chcemy tworzyć tabelę wybierz typ kwerendy "przekazująca" a nie "definicja danych" (dlaczego?)
  3. we właściwościach kwerendy określ ciąg połączenia ODBC
        (przy pomocy kreatora; wybiera się źródło danych ODBC i ciąg jest tworzony automatycznie)
  4. wprowadź polecenie SQL "CREATE TABLE ..."; patrz poniższy przykład + opis języka SQL serwera IB

można wprowadzić takie polecenie:

create table tab01 (
	t1 char(10),
	t2 char(10),
	t3 char(10),
	t4 char(10),
	n1 numeric,
	n2 numeric,
	n3 numeric,
	n4 numeric,
	id integer not null,
	ole_ob blob,
	primary key (id)
)

Uwaga: każda osoba powinna podać inny nr w nazwie tabeli !!!

Zadanie 37a


Dodaj kilka rekordów do tej tabeli przy pomocy polecenia SQL "INSERT ..." (patrz opis języka SQL)

Zadanie 37b


Zobacz zawartość tabeli "Tab01" na dwa sposoby:

  1. przy pomocy tabeli przyłączonej
  2. przy pomocy kwerendy przekazującej używając polecenia SQL "SELECT ..." (patrz opis języka SQL)

Zadanie 37c


Zdefiniuj kwerendę przekazującą modyfikującą dane w Tab01 (w dowolny sposób, np mnożąc liczbę przez 2 lub dopisując "!" na koniec pola tekstowego) przy pomocy polecenia SQL "UPDATE ..." (patrz opis języka SQL).

Uwaga: zwróć uwagę na różnicę w językach SQL Jet-a i IB ...
przykładowo do konkatenowania czyli łączenia stringów służy w IB symbol "||":

select FIRST_NAME || " - " || LAST_NAME as IMIE_NAZWISKO 
	from EMPLOYEE 
	order by LAST_NAME;

w języku SQL Jet-a to polecenie wyglądało by tak:

select FIRST_NAME & ' - ' & LAST_NAME as IMIE_NAZWISKO 
	from EMPLOYEE 
	order by LAST_NAME;

 

Dostęp do serwera Postgres.

Postgres (lub PostgreSQL) jest serwerem pracującym pod systemem operacyjnym Linux.

Zanim będzie go można używać trzeba:

  1. utworzyć bazę danych
  2. odpowiednio skonfigurować serwer (pliki *.conf)
  3. uruchomić serwer

Aby Postgres mógł być używany z sieci trzeba:

Z punktu widzenia klienta używanie Postgresu jest łatwiejsze niż IB, wystarczy zainstalować:

Zadanie 38


Przyłącz do Accesu tabele z bazy danych na serwerze Postgres i przeprowadź kilka podobnych eksperymentów jak te przeprowadzane z serwerem IB.

 

Dostęp do serwera SQL z poziomu VBA.

.............................................
.............................................
.............................................
 
 

JSP - inne zadania.

Zadanie ?? (*)


Wypróbuj działanie strony JSP z serwerem SQL który znajduje się na innej maszynie niż serwer WWW serwer WWW używał pliku mdb i Jet-a znajdujących się na tej samej maszynie).
Wskazówka: Zmodyfikuj odpowiednio stronę jsp z zadania 44.

Zadanie ?? (**, niedokończone ...)


Zaprogramuj stronę JSP + bazę danych pozwalającą przeprowadzać internetowe aukcje.