Przygotowanie bazy tylko do odczytu

Często korzystamy z baz danych, które nie zmieniają się lub zmieniają się bardzo rzadko. Takim przykładem jest np. lista adresów urzędów skarbowych czy wykaz pocztowych kodów adresowych.

Taką bazę możemy uczynić bazą tylko do odczytu.

Taka baza może być zapisana do pliku JAR lub ZIP.

Baza w postaci przygotowanego folderu lub w postaci pliku JAR czy ZIP może być zapisana na mediach tylko do odczytu, np. na płytce CD lub DVD.

Tutaj pokażę jak przygotować bazę do zapisu na płytce CD lub DVD.

Przygotowanie bazy

W pliku resources/txts/urzedy.txt znajduje się stara baza urzędów skarbowych. Jest to kilkaset adresów, które zajmują objętość kilkudziesięciu stron.

W pliku resources/htmls/szablon.html znajduje się schemat danych i przykładowe dane jednego urzędu.

Tworzymy skrypt resources/sqls/r093.sql

 CREATE TABLE urzad(id INTEGER NOT NULL PRIMARY 
     KEY GENERATED ALWAYS AS IDENTITY(START WITH 1, 
     INCREMENT BY 1),
   nazwa VARCHAR(128),
   kod VARCHAR(6),
   miejscowosc VARCHAR(128),
   ulica VARCHAR(128),
   dom VARCHAR(16),
   cit VARCHAR(26),
   vat VARCHAR(26),
   pit VARCHAR(26),
   ind VARCHAR(26),
   jb VARCHAR(26),
   wyd VARCHAR(26),
   doch VARCHAR(26),
   bank VARCHAR(64),
   vatue1 VARCHAR(26),
   vatue2 VARCHAR(26),
   pitstp VARCHAR(26)
);

Niestety w skrypcie nie będziemy wprowadzali danych, gdyż kosztowałoby nas to zbyt dużo pracy. Musimy stworzyć metodę, która wczyta dane z pliku tekstowego.

Tworzymy klasę aderby.specyf.R093_rom, która utworzy baze danych i wczyta dane.

Po uruchomieniu klasy baza danych baza_urzedow znajdzie się w folderze c:/Przyklady

Przygotowanie bazy danych tylko do odczytu

1. Utwórz bazę danych na dysku twardym – zrobiliśmy to przed chwilą. Podczas przygotowywania bazy należy zwrócić uwagę aby zakończone zostały wszelkie transakcje a baza i silnik zostały zamknięte. Jeśli coś pozostało niezakończone zostanie podjęta próba odtworzenia bazy danych, ale odtworzenie na nośniku CD lub DVD albo w pliku archiwum – jest niemożliwe.

2. Sprawdzamy czy w folderze głównym bazy danych znajduje się folder tmp. Jeśli jest należy go usunąć. Jeśli ten folder pozostanie – przy następnym uruchomieniu system podejmie próbę usunięcia go – i wyrzuci błąd ponieważ nie będzie to możliwe.

Jak widać w naszym folderze go nie ma (Rys. 281).

Folder bazy danych
Rys. 281. Folder bazy danych

3. Ponieważ folder tmp może być utworzony, a na CD lub DVD jest to niemożliwe, należy zmienić miejsce tworzenia tego folderu, tak aby zachodziło na dysku twardym. W tym celu należy ustawić właściwość:

derby.storage.tempDirectory

Ponieważ w dziennikach zapisywane są również informacje o błędach, również dzienniki muszą być zapisane na dysku twardym. Aby to zrobić należy ustawić zmienną systemową:

derby.stream.error.file

Możemy to zrobić przy użyciu metody DerbyUtil.setReadOnlyProps()

public static void setReadOnlyProps() {
System.setProperty("derby.storage.tempDirectory", 
   "C:/temp/mytemp");
System.setProperty("derby.stream.error.file", 
   "C:/temp/mylog.log");
}

Jeżeli baza danych zostanie przeniesiona np. na inny komputer, aplikacja wykorzystująca bazę powinna dla niej ustawić obie powyższe właściwości w systemie operacyjnym.

Nasza baza jest przygotowana do zamknięcia w pliku JAR lub ZIP i do zapisania na nośniku CD albo DVD.

Pliki do ściągnięcia

R093_rom.zip (klasa uruchamiająca)
r093.zip (skrypt)
urzedy.zip (ppomocniczy plik tekstowy)
Aktualny (tworzony narastająco) plik module-info.java
Aktualny (tworzony narastająco) plik DerbyUtil.java
Pliki tworzone narastająco zastępują poprzednie pliki o tej samej nazwie i działają dla wszystkich wcześniej opublikowanych przykładów we wszystkich wpisach w projekcie. W przypadku pliku module-info.java może być potrzebne skreślenie niepotrzebnych wpisów.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *