2009.02_Relacyjna baza danych HSQLDB_[Bazy Danych].pdf
(
896 KB
)
Pobierz
332763373 UNPDF
Dla początkujących
Relacyjna baza danych HSQLDB
danych HSQLDB
Grzegorz Madajczak
Świadomie i nieświadomie z bazami danych każdy z nas styka się każdego dnia – robiąc zakupy,
szukając książki w bibliotece, czy też czytając newsy na stronie internetowej. Warto więc wiedzieć
cokolwiek więcej na temat jednego z najbardziej powszechnych sposobów użytkowania komputera.
Warto zainteresować się bazami danych, gdyż z pewnością każdy znajdzie dziedzinę, w której warto
zastosować uporządkowane zarządzanie danymi w postaci bazy danych.
nux panuje przekonanie, że zawsze trze-
ba mieć najlepsze, najnowsze, najbardziej
rozbudowane programy. Działają zgodnie
z zasadą – jeśli mam to za darmo, to czemu nie mam mieć
najlepszego. Nie jest ważne, że później używają jedynie 10%
możliwości oprogramowania oraz gubią się w gąszczu opcji
i możliwości.
Podobnie jest z dostępnymi silnikami bazodanowy-
mi. Użytkownik, czy też bardziej deweloper innej aplikacji
używa rozbudowanego serwera, np. MySQL, aby stworzyć
program do katalogowania płyt z domowej audioteki. Nie
rozumie, że nie zawsze trzeba stosować rozbudowane roz-
wiązania – serwery bazodanowe, takie jak MySQL, Post-
greSQL, czy Oracle do najprostszych, a nawet tych bardziej
skomplikowanych potrzeb. Nie rozumie, że zamiast nich
może posłużyć się dobrymi i prostymi – nie tak rozbudowa-
nymi programami. Proste nie oznacza bowiem, że są pozba-
wione jakiejś funkcjonalności. Dobrym przykładem na pro-
ste narzędzie do gromadzenia i zarządzania danymi jest re-
lacyjna baza danych HSQLDB. Czym są relacyjne bazy da-
nych przedstawia Ramka
Relacyjne bazy danych
.
Ogólne informacje
HSQLDB jest relacyjną bazą danych powstałą w oparciu
o języki JAVA oraz XML. Połączenie tych dwóch technik
sprawia, że otrzymujemy proste w obsłudze i w miarę wy-
dajne narzędzie do zarządzania danymi. Zwolennicy Wol-
nego Oprogramowania, nie koniecznie użytkownicy sys-
temu Linux, z dużym prawdopodobieństwem mieli oka-
zję nieświadomie zetknąć się z HSQLDB, jako silnikiem
bazodanowym w pakiecie
OpenOfice.org
– zwłaszcza w
programie OOo Base. Choćby to zastosowanie jest wspa-
niałą rekomendacją dla opisywanego projektu...
Baza danych HSQLDB rozpowszechniana jest na
podstawie licencji BSD (Berkeley Software Distribu-
tion). Nie wdając się w szczegóły różniące licencje GPL
i BSD, przypominam, że licencja typu BSD skupia się
na prawach autorskich. Jest bardzo liberalna, zezwala nie
tylko na modyikacje kodu i jego rozprowadzanie w ta-
kiej postaci, ale także na rozprowadzanie produktu bez
postaci źródłowej czy wręcz włączenia do zamknięte-
go oprogramowania pod warunkiem załączenia do pro-
duktu informacji o autorach oryginalnego kodu i treści
licencji.
12
luty 2009
Relacyjna baza
W
śród wielu użytkowników systemu Li-
Dla początkujących
Relacyjna baza danych HSQLDB
Pakiet dystrybucyjny
Baza danych HSQLDB dystrybuowana jest w
jednej wersji – niezależnej od platformy syste-
mowej – w postaci zzipowanego pakietu, który
zawiera następujące foldery:
proces aplikacji (
In-Process Mode
). Tryb ser-
wera oferuje maksimum wydajności i możli-
wości. Silnik bazodanowy pracuje w przestrze-
ni wirtualnej maszyny JAVA (JVM –
JAVA Vir-
tual Machine
), nasłuchując połączeń wywoły-
wanych przez programy uruchomione na tym
samym komputerze lub na innych kompute-
rach w sieci. Różne programy mogą jednocze-
śnie połączyć się z bazą danych w celu uzyska-
nia lub przesłania informacji (danych), łącząc
się z bazą danych za pomocą sterownika JDBC
HSQLDB. W trybie tym serwer baz danych
może obsługiwać jednocześnie do 10 baz da-
nych.Więcej na temat drugiego trybu (
In-Pro-
cess
) będzie można dowiedzieć się z rozdziału
tego artykułu, który został poświęcony zastoso-
waniu HSQLDB w programach JAVA.
Dostępne są trzy różne formy serwera baz
danych, oferujące różne protokoły komunika-
cji pomiędzy klientem, a serwerem. Pierw-
sza z form to tradycyjna baza danych, któ-
ra zapewnia jednocześnie największą wydaj-
ność. Najprostszą formą jej uruchomienia bę-
dzie wykonanie w terminalu następującego
polecenia:
•
bin
, który zawiera skrypty dla systemu
Linux oraz plik wykonywalny MSDOS
– służące do uruchomienia narzędzi
HSQLDB;
•
build
, który zawiera plik build.xml dla me-
chanizmu ANT, a także plik wykonywalny
MSDOS – obydwa służące do samodziel-
nego zbudowania ze źródeł HSQLDB
(więcej informacji na ten temat znajduje
się w pliku
readmebuild.txt
);
•
classes
, zawierający pliki
*.class
wygene-
rowane za pomocą ANT;
•
demo
, który zawiera przykładowe skryp-
ty dla systemu Linux oraz pliki wykony-
walne systemu MSDOS, służące do uru-
chamiania narzędzi HSQLDB oraz samej
bazy danych HSQLDB. Znajduje się tam
również kilka przykładów dokumentów
HTML, w których HSQLDB osadzone
jest w postaci apletu;
•
doc
, zawierającego zestaw dokumentów
HTML, PDF oraz dokumentów teksto-
wych ( w formacie
*.txt
) opisujących w
miarę szczegółowo różne aspekty korzy-
stania z HSQLDB oraz różne narzędzia tej
bazy;
•
lib
, w którym zwarte są pakiety binar-
ne
hsqldb.jar
oraz
severlet.jar
służące od-
powiednio do uruchomienia bazy danych
oraz serwera sieciowego HSQLDB;
•
src
, w którym zgromadzone są pliki źró-
dłowe
*.java
służące do samodzielne-
go zbudowania pakietów binarnych
HSQLDB.
$ java -cp ścieżka_dostępu/hsqldb.jar
org.hsqldb.Server -database.0 ile:
ścieżka_dostępu/moja_baza -dbname.0
moja_baza
Listing 1.
Kod przykładowego pliku server.properties
# Przykładowy plik serwera HSQDB
server.database.0 ile:ścieżka_dostępu;ifexists=
true
server.dbname.0 nazwa_bazy_danych
server.port 9001
Listing 2.
Pojedyncza sekcja pliku koniguracyjnego narzędzia SQLTool – sqltool.rc
urlid test_hsqldbase
url jdbc:hsqldb:hsql://localhost/ścieżka_dostępu
username nazwa_użytkownika
password
hasło_użytkownika
Listing 3.
Uwierzytelnianie metodą inlineRC podczas łączenia się z serwerem
$ java -jar $HSQLDB_HOME/lib/hsqldb.jar
--inlineRC
URL=jdbc:hsqldb:hsql://localhost/ścieżka_dostępu,
USER
=nazwa_użytkownika,
PASSWORD
=hasło_użytkownika
Listing 4.
Ogólna składnia deinicji kolumny tabeli
nazwa_kolumny typ_danych [
(
wielkość kolumny
)
]
[{
DEFAULT
<wartość_domyślna> |
GENERATED BY
DEFAULT
AS
IDENTITY
(
START
WITH
<n>[, INCREMENT BY <m>]
)
}] |
[[
NOT
]
NULL
] [IDENTITY] [
PRIMARY
KEY
]
Pobrany z internetu pakiet dystrybucyjny (do-
stępny pod adresem
http://www.hsqldb.org
),
wystarczy rozpakować na dysku. Tak przy-
gotowany pakiet jest gotowy do użycia – nie
wymaga jakichkolwiek innych czynności in-
stalacyjnych. Bazą danych HSQLDB mo-
żemy posługiwać się również w przestrze-
ni użytkownika – bez konieczności posiada-
nia uprawnień administratora systemu. Wy-
starczy rozpakować pakiet i już można go
użytkować.
Listing 5.
Przykładowe polecenie utworzenia tabeli
sql>
create
text
table
kontrahenci
(
id int generated by
default
as
identity
(
start
with
0
)
not
null
primary
key
,
imie varchar
(
50
)
not
null
,
nazwisko varchar
(
100
)
not
null
,
irma varchar
(
200
)
not
null
)
;
Listing 6.
Ogólna składnia deinicji ograniczeń
[
CONSTRAINT
<nazwa>]
UNIQUE
(
<kolumna> [,<kolumna>...]
)
|
PRIMARY
KEY
(
<kolumna> [,<kolumna>...]
)
|
FOREIGN
KEY
(
<kolumna> [,<kolumna>...]
)
REFERENCES
<tabela
referencji>
(
<kolumna> [,<kolumna>...]
)
[
ON
{DELETE |
UPDATE
}
{CASCADE |
SET
DEFAULT
|
SET
NULL
}] |
CHECK
(
<warunki wyszukiwania>
)
Uruchomienie
serwera baz danych
Baza danych HSQLDB może być uruchomiona
na kilka różnych sposobów. Generalnie rzecz
ujmując, sposoby te można podzielić dwoja-
ko: tryb serwera (
Server Mode
) oraz praca jako
www.lpmagazine.org
13
Dla początkujących
Relacyjna baza danych HSQLDB
Powyższe polecenie tworzy i uruchamia bazę
danych o nazwie
moja_baza
. Należy zwrócić
uwagą na dwa argumenty tego polecenia. War-
tość pierwszego z nich –
database.0
to ścież-
ka dostępu do pliku tworzonej bazy danych.
Drugi argument –
dbname.0
określa alias (na-
zwę) bazy danych. Nazwą tą będziemy posłu-
giwali się późnej wielokrotnie łącząc się z ba-
zą danych.
Zaglądając do folderu, w którym umieści-
liśmy nowoutworzoną bazę danych, zobaczy-
my, że pojawiły się tam dwa nowe pliki:
mo-
ja_baza.properties
oraz
moja_baza.log
. Są to
pliki utworzonej bazy danych. Pierwszy z nich
– z rozszerzeniem
*.properties
zawiera infor-
macje o ogólnych ustawieniach bazy danych.
Natomiast plik z rozszerzeniem
*.log
zawie-
ra informacje o zmianach wprowadzanych do
bazy danych.
Zaprezentowane powyżej rozwiązanie wy-
korzystuje bazę danych zapisaną w kilku pli-
kach zapisanych na dysku – według wskazanej
ścieżki dostępu. Istnieje jednak możliwość uru-
chomienia serwera bazy danych, który będzie
działał tylko w pamięci operacyjnej kompute-
ra – tymczasowo. Oznacza to, że po zamknię-
ciu serwera dane zgromadzone w takiej bazie
zostaną bezpowrotnie utracone. W celu urucho-
mienia takiego serwera HSQLDB wykonujemy
w konsoli następujące polecenie:
Inną formą bazy danych jest serwer sie-
ciowy, który do komunikacji z klientem wy-
korzystuje protokół HTTP. Przykładem wy-
korzystania tego rozwiązania są sytuacje na-
rzucane przez ograniczenia zapory sieciowej,
która nie przepuszcza innej komunikacji, jak
przez port 80. Należy jednak pamiętać, iż ser-
wer sieciowy nie oferuje tej samej wydajno-
ści, co zwykły serwer. Uruchomienie serwera
sieciowego HSQLDB nie różni się zbytnio od
opisanych wcześniej metod.
temie zmienną
JAVA_HOME
. Najlepiej dokonać
tego wydając w konsoli następujące polecenie:
$ env | grep JAVA_HOME
Przy braku odpowiedzi, należy sprawdzić,
gdzie w naszym systemie znajdują się pliki ma-
szyny wirtualnej JAVA. Wydajemy w tym ce-
lu polecenie, które odnajdzie nam wykonywal-
ny plik java:
$ whereis java
$ java -cp ścieżka_dostępu/hsqldb.jar
org.hsqldb.WebServer -database.0
ile:ścieżka_dostępu/moja_baza_web -
dbname.0 moja_baza_web
Istnieje duże prawdopodobieństwo, że pomo-
że to ustalić lokalizację JVM. Posiadając taką
wiedzę należy zdeiniować zmienną
JAVA_HO-
ME
, stosując polecenie
export
:
Podobnie, jak i w poprzednich przykładach
możliwe jest uruchomienie serwera sieciowego
HSQLDB działającego tylko w pamięci opera-
cyjnej komputera:
$ export JAVA_HOME; JAVA_HOME=/usr/
java/j2sdk1.6.0
$ java -cp ścieżka_dostępu/hsqldb.jar
org.hsqldb.WebServer -database.0 mem:
moja_baza_web -dbname.0 moja_baza_web
Następnie należy odpowiednio zmodyiko-
wać zmienną
CLASSPATH
, tak aby wskazywa-
ła ścieżkę dostępu do folderu zawierającego
plik
hsqldb.jar
:
Instalacja serwera
baz danych HSQLDB
Opisane powyżej przykłady pokazują, w ja-
ki sposób szybko uruchomić serwer HSQLDB.
Ich wadą jest to, że przy każdym starcie syste-
mu trzeba powtarzać te same czynności. Moż-
na jednak tak przygotować nasz system, aby ba-
za danych HSQLDB startowała automatycznie
jako proces działający w tle. W tym celu uprzed-
nio pobrany zzipowany pakiet, zawierający bi-
narne pliki serwera baz danych, należy rozpako-
wać do dowolnego folderu. Kolejnym krokiem
jest sprawdzenie czy mamy zdeiniowaną w sys-
$ export CLASSPATH; CLASSPATH=ścieżka_
dostępu_do_hsqldb.jar
Ostatnim zadaniem będzie utworzenie pli-
ku właściwości bazy danych HSQLDB –
se-
rver.properties
, który musi znaleźć się w ka-
talogu domowym użytkownika bazy danych.
Przykładowy plik
*.properties
znajduje się
w pakiecie dystrybucyjnym HSQLDB wśród
innych plików źródłowych (ścieżka dostępu:
src/org/hsqldb/sample/sample-server.proper-
ties
). Nic nie stoi jednak na przeszkodzie, aby
plik ten utworzyć samodzielnie. Przykładowy
plik
server.properties
przedstawiony został na
Listingu 1, a opis właściwości pliku koni-
guracyjnego, wraz z wartościami domyślny-
mi przedstawia Tabela 1. Pierwsze dwa wier-
sze Listingu zawierające opcje koniguracyjne
serwera HSQLDB nie wymagają komentarza
– mają taką samą funkcję, jak argumenty po-
dawane w linii poleceń podczas ręcznego uru-
chamiania serwera. Jedyną różnicą jest argu-
ment
ifexist=true
w pierwszej linii opcji.
Argument ten oznacza, że baza danych ma
być uruchomiona niezależnie od tego, czy plik
podany w ścieżce dostępu istnieje, czy też nie.
W przypadku braku pliku zostanie utworzona
nowy serwer, w nowych plikach, o podanej
ścieżce dostępu. Wartość
true
jest wartością
domyślą. Jej przeciwieństwo (
ifexist=fal-
se
) oznacza, że przy braku wskazanego pliku
serwer nie zostanie uruchomiony. Natomiast
ostatni wiersz określa port na którym serwer
$ java -cp ścieżka_dostępu/hsqldb.jar
org.hsqldb.Server -database.0 mem:
in_memdb -dbname.0 in_memdb
W stosunku do uprzednio przedstawionego
rozwiązania, różnica polega na zastosowaniu
przedrostka
mem:
zamiast
ile
jako wartości ar-
gumentu
-database.0
.
Listing 7.
Tworzenie tabeli z wielokolumnowym kluczem głównym oraz tabeli z kluczem obcym
sql>
create table
klient
(
imie varchar
(
50
)
not
null
,
nazwisko varchar
(
100
)
not
null
,
adres varchar
(
150
)
,
pesel varchar
(
11
)
,
unique
(
pesel
)
,
primary
key
(
imie, nazwisko
))
;
sql>
create table
irmy
(
id int generated by
default
as
identity
(
start
with
0
)
,
wlasciciel_imie varchar,
wlasciciel_nazwisko varchar,
adres_irmy varchar,
nip varchar
(
10
)
,
konto varchar
(
26
)
,
foreign
key
(
wlasciciel_imie, wlasciciel_nazwisko
)
references
klient
(
imie, nazwisko
))
;
14
luty 2009
Dla początkujących
Relacyjna baza danych HSQLDB
będzie nasłuchiwał – domyślnie jest to 9001
lub 554 dla połączenia szyfrowanego TLS.
Ostatnią czynnością będzie uruchomie-
nie procesu serwera bazy danych HSQLDB,
za pomocą polecenia
nohup
, które sprawi, że
rozpoczęty w ten sposób wątek będzie dzia-
łał w tle.
ka SQL – SQLTool. Jest to narzędzie uru-
chamiane i działające z linii poleceń, przez
co może być używany na przykład zdalnie
– poprzez połączenie SSH. Dodatkową za-
letą SQLTool jest możliwość używania nie
tylko w odniesieniu do HSQLDB, lecz do
każdej innej bazy danych, która posiada ste-
rownik JDBC.
Narzędzie SQLTool wymaga do dzia-
łania JVM irmy Sun w wersji 1.4 lub póź-
niejszej. Autorzy projektu sumiennie zazna-
czają, iż program ten nie był testowany na in-
nych wersjach JVM, niż oryginalny produkt
irmy Sun, więc możliwe jest, że w przy-
padku innych odmian JVM, jak na przykład
Blackdown Java, czy IBM Java mogą wystą-
pić trudne do przewidzenia nieprawidłowości
działania programu.
Przed rozpoczęciem pracy z SQLTool w
katalogu domowym użytkownika musi zna-
leźć się plik koniguracyjny
sqltool.rc
. Przykła-
dową wersję tego pliku można znaleźć w pa-
kiecie dystrybucyjnym HSQLDB w folderze
src/org/hsqldb/sample
. W pliku tym znajdują
się przykładowe koniguracje zarówno do ob-
sługi serwera HSQLDB, jak i innych serwerów
bazodanowych.
Plik ten składa się z sekcji, które opisują
koniguracje dla poszczególnych serwerów, z
których można korzystać za pośrednictwem
narzędzia SQLTool. Przykładowa sekcja pli-
ku
sqltool.rc
została przedstawiona na Listin-
gu 2. Identyikator koniguracji określony
jest jako wartość argumentu
urlid
. W kolej-
nym wierszu znajduje się wartość argumen-
tu
url
określająca oczywiście adres serwera
baz danych. Dla niezaznajomionych z inter-
fejsem JDBC, wyjaśniam, że adres ten skła-
da się z wywołania warstwy pośredniczącej
JDBC, następnie po dwukropku identyikato-
ra sterownika JDBC oraz na końcu, także po
dwukropku, właściwego URL. W przypadku
sterownika
hsqldb
należy jeszcze określić,
czy mamy do czynienia z bazą danych w pli-
ku (
ile:
), czy też zlokalizowaną w pamię-
ci (
mem:
). Następne dwa wiersze sekcji okre-
ślają kolejno nazwę użytkownika oraz hasło
dostępu do serwera. Inne opcje, które mogą
znaleźć się w sekcji koniguracyjnej to:
$ nohup java org.hsqldb.Server &
Aby przekonać się, że serwer działa w tle można
wydać polecenie
ps
, listujące aktywne procesy.
•
charset
– określająca stronę kodową zna-
ków, stosowaną przez narzędzie SQLTool;
•
driver
– określająca klasę sterownika
JDBC dla konigurowanego serwera;
•
truststore
– określająca ścieżkę dostępu
do pliku zawierającego klucz stosowany w
szyfrowanym połączeniu z serwerem TLS.
$ ps -A | grep hsqldb.jar
Niemalże identycznie należy postępować
w przypadku uruchamiania serwera siecio-
wego HSQLDB. Różnica polega na tym, że
plik koniguracyjny serwera sieciowego to
oczywiście
webserver.properties
z właści-
wościami o przedrostku
server
, z dwoma
dodatkowymi właściwościami:
server.de-
fault_page
– deiniującą domyślną stronę
dla serwera oraz
server.root
– określającą
lokalizację plików serwera. W tym wypadku
uruchamiany jest program org.hsqldb.We-
bServer.
W pakiecie dystrybucyjnym bazy da-
nych HSQLDB znajduje się również przy-
kładowy skrypt systemu
init
– hsqldb, któ-
ry po skopiowaniu do folderu
/etc/init.d lub
/etc/rc.d/init.d
(różnie w zależności od dys-
trybucji, wymagane są uprawnienia admini-
stratora systemu), pozwala na automatyczny
start serwera HSQLDB podczas uruchamia-
nia systemu. Skrypt ten znajduje się w fol-
derze
bin
pakietu instalacyjnego. Ponadto w
folderze
src/org/hsqldb/sample/
znajduje się
opatrzony bogatymi i czytelnymi komenta-
rzami plik
sample-hsqldb.cfg
, w którym za-
warta jest podstawowa koniguracja syste-
mowa serwera HSQLDB. Obejmuje ona ta-
kie informacje, jak lokalizacja JAVA, czy pa-
kietu HSQLDB. Plik ten należy samodzielnie
zmodyikować, a następnie umieścić w tym
samym miejscu, co skrypt systemu init. W
folderze domowym root-a powinny znaleźć
się dwa pliki – plik
server.properties
, będą-
cy kompilacją potencjalnych plików
*.pro-
perties
konkretnych baz danych (zawiera te
same dane kolejno dla każdego z serwerów)
oraz plik
sqltool.rc
, który zostanie omówiony
w następnym rozdziale artykułu.
Jak łatwo zauważyć stosowanie pliku konigu-
racyjnego
sqltool.rc
ma jedną zasadniczą wa-
dę. Na dysku komputera zostają zapisane nie
chronione w jakikolwiek sposób poufne dane
– adresy, loginy i hasła do serwerów baz da-
nych. Jeśli korzystamy z SQLTool dla potrzeb
lokalnej bazy danych na domowym kompute-
rze, to rozwiązanie takie może nawet ujść. Jest
ono jednak nie do zaakceptowania w środowi-
skach produkcyjnych – stwarza zbyt wysoki
ryzyko przejęcia kontroli nad zasobami, któ-
re powinny być chronione.
Z powyższych względów SQLTool
umożliwia łączenie się z serwerem i uwie-
rzytelnianie stosując metodę
inlineRC
. Me-
toda ta polega na podaniu w linii poleceń
wszystkich informacji,niezbędnych do uzy-
skania połączeni z serwerem, już na etapie
uruchamiania polecenia
sqltool
. Stosuje-
my w tym celu przełącznik
--inlineRC
. Po-
Tabela 1.
Właściwości serwera HSQLDB
Właściwość Wartość domyślna Opis cechy
Właściwości serwera i serwera sieciowego
server.database ile:ścieżka_do-
stępu
Ścieżka dostępu do plików serwera
mem:baza_danych
Plik serwera zlokalizowany w pamięci komputera
server.dbname
Nazwa (alias) bazy danych
server.port
9001
Port, na którym serwer nasłuchuje połączeń od klienta
554 (TLS)
80 (WebServer)
server.silent
true
Cichy tryb serwera (minimalna ilość komunikatów)
Właściwości tylko serwera
server.no_sys-
tem_exit
Dostęp do bazy
danych – SQLTool
Silnik bazodanowy HSQLDB dostarcza
własne narzędzie służące do zarządzania
serwerem i danymi bazy za pomocą języ-
true
Nie wywołuje metody
System.exit()
przy zamknię-
ciu serwera
Właściwości tylko serwera sieciowego
server.default_page index.html
Domyślny dokument serwera
server.root
./
Domyślna lokalizacja plików serwera
www.lpmagazine.org
15
Dla początkujących
Relacyjna baza danych HSQLDB
łączenie tą metodą z serwerem opisanym w
treści pliku
sqltool.rc
z Listingu 2, przedsta-
wiono na Listingu 3. Oprócz zaprezentowa-
nych na listingu trzech podstawowych wła-
ściwości, dodatkowo, po przecinkach, moż-
na również określić stronę kodową znaków
(
CHARSET
) oraz plik zawierający klucz TLS
(
TRUST
).
Metoda uwierzytelniania inlineRC charak-
teryzuje się również interaktywnością. Ozna-
cza, to, że gdy podamy jedynie URL, program
podczas logowania zapyta się nas o niezbędne
brakujące informacje – nazwę użytkownika i
przypisane mu hasło.
Powyższe polecenie uruchamia narzędzie
napisane w AWT. Jeśli chcemy urucho-
mić program napisany z użyciem bibliote-
ki Swing, polecenie będzie wyglądało na-
stępująco:
ATE USER
, którego ogólna składnia wyglą-
da następująco:
CREATE USER <nazwa_użytkownika>
PASSWORD <hasło> [ADMIN];
$ java -cp lib/hsqldb.jar org.hsqldb.
util.DatabaseManagerSwing
W miejscach
<nazwa_użytkownika>
oraz
<hasło>
wprowadzamy odpowiednie infor-
macje. Słowo kluczowe
ADMIN
na końcu po-
lecenia oznacza, że nowotworzonemu użyt-
kownikowi nadajemy prawa administrato-
ra bazy danych. Tak więc przykładowe pole-
cenie tworzące użytkownika
gmad
z hasłem
123456abc
, który posiada uprawnienia admi-
nistratora wygląda następująco:
Program DatabaseManager (Rysunek 1) jest ła-
twym w użyciu, intuicyjnym narzędziem, dzię-
ki któremu możemy łączyć się z różnymi ba-
zami danych, z możliwością zapisywania usta-
wień dla każdej bazy danych.
Graiczne
narzędzie do zarządzania bazą
W pakiecie dystrybucyjnym HSQLDB oprócz
omawianego powyżej narzędzia
SQLtool
znajduje się również program napisany w JA-
VA służący do zarządzania bazą danych. De-
weloperzy dostarczają dwie wersje tego same-
go narzędzi – jedną napisaną z użyciem biblio-
tek AWT, druga zaś wersja wykorzystuje bi-
blioteki Swing.
Obie wersje nie różnią się niczym w swej
funkcjonalności. Różnica polega jedynie na
wyglądzie interfejsu – odmiennym ze względu
na rodzaj użytej biblioteki.
Uruchomienie obu wersji programu jest
podobne:
Zarządzanie
użytkownikami bazy danych
Nowoutworzona baza danych zawiera do-
myślnego użytkownika
sa
z prawami admi-
nistratora, który nie ma jednak przypisanego
hasła. Dlatego też zaraz po zalogowaniu się
do serwera, dobrze jest nadać użytkowniko-
wi
sa
hasło, stosując powyższe polecenie w
języku SQL:
sql> CREATE USER gmad PASSWORD
123456abc ADMIN;
Raz nadane hasło może być zmienione za po-
mocą polecenia
ALTER USER
o następującej bu-
dowie:
ALTER USER <nazwa_użytkownika> SET
PASSWORD <nowe_hasło>;
sql> set password ”nowe_hasło”;
Należy pamiętać, aby po wprowadzeniu tej
zmiany zmodyikować odpowiednio plik
sqltool.rc
. Jednak posługiwanie się na co
dzień kontem administratora nie jest do-
brym rozwiązaniem. Dlatego warto jest
stworzyć dodatkowego użytkownika bazy
danych. Dokonujemy tego poleceniem
CRE-
Uprawnienia użytkownika mogą być modyi-
kowane przez administratora serwera za pomo-
cą polecenia
GRANT
, którego ogólna struktura
wygląda następująco:
$ java -cp hsqldb.jar cp org.hsqldb.u
til.DatabaseManager
GRANT { SELECT | DELETE | INSERT |
UPDATE | ALL } [,...]
ON { table | CLASS "package.class" }
TO <nazwa_użytkownika>;
Język SQL
Chcąc nadać użytkownikowi o nazwie
gmad
uprawnienia do pobierania danych oraz wsta-
wiania danych do tabeli o nazwie
tabela_1
po-
lecenie to przyjmie następujący kształt:
SQL (
Structured Query Language
) – strukturalny język zapytań używany do tworzenia, mo-
dyikowania baz danych oraz do umieszczania i pobierania danych z baz danych. Język
ten został opracowany na początku lat 70-tych w irmie IBM, z czasem stając się standar-
dem w komunikacji z bazami danych. Obecnie wykorzystywany jest przez wszystkie liczą-
ce się silniki bazodanowe, uzyskując liczne odmiany.
sql> grant select,insert on tabela_1
to gmad;
Relacyjne bazy danych
Oczywiście istnieje możliwość odebrania
wcześniej przyznanych uprawnień. Służy do
tego polecenie
REVOKE
, o następującej składni:
Relacyjne bazy danych wyróżniają się wśród innych typów (np. kartotekowe, obiekto-
we, hierarchiczne, …), że tablice w niej zawarte mogą być ze sobą wzajemnie powią-
zane (np. wymieniać się informacjami dzięki kluczom obcym). Bazy takie korzystają z
języków programowania, zwykle SQL, za pomocą których dana baza jest obsługiwa-
na. W bazach takich dane gromadzone są w postaci dwuwymiarowych tabel (nazywa-
nych relacjami), które obowiązkowo muszą zawierać przynajmniej jedną kolumnę (atry-
but) oraz mogą zawierać zero lub więcej wierszy (inaczej – krotek). Istotne jest to, że
z braku możliwości identyikacji wiersza przez jego pozycję, konieczna jest obecności
przynajmniej jednej niepowtarzalnej w obrębie całej tabeli kolumny, która pozwala od-
naleźć konkretny wiersz. Kolumnę taką określa się jako
klucz podstawowy
(ang.
pri-
mary key
) tabeli.
REVOKE { SELECT | DELETE | INSERT |
UPDATE | ALL } [,...]
ON { table | CLASS "package.class" }
FROM <nazwa_użytkownika>;
Odebranie użytkownikowi
gmad
uprzednio
nadanych uprawnień będzie wyglądało nastę-
pująco:
sql> revoke select,insert on tabela_1
from gmad;
16
luty 2009
Plik z chomika:
SOLARIX33
Inne pliki z tego folderu:
2004.11_Porównanie serwerów relacyjnych baz danych Open Source_[Bazy Danych].pdf
(603 KB)
2004.09_Kexi bazy danych_[Bazy Danych].pdf
(283 KB)
2004.05_Sybase SQL Anywhere Studio 9.0_[Bazy Danych].pdf
(423 KB)
2004.05_Rozproszone fraktale_[Bazy Danych].pdf
(410 KB)
2009.04_SQLite – lekka alternatywa_[Bazy Danych].pdf
(1156 KB)
Inne foldery tego chomika:
Administracja
Aktualnosci
Audio
Bezpieczenstwo
Biznes
Zgłoś jeśli
naruszono regulamin