Baza danych w pamięci

Baza danych jest umieszczona jedynie w pamięci w danej JVM. Nie są tworzone żadne pliki. Nie jest włączona do systemu Derby. Ze względu na brak długotrwałych operacji ‘odczyt-zapis’ baza w pamięci jest bardzo szybka. Po wyłączeniu komputera lub zamknięciu bazy – baza przestaje istnieć wraz z zawartymi w niej danymi.

W dwóch różnych JVM na jednym komputerze można uruchomić dwie różne bazy w pamięci o tej samej nazwie, ale nie jest to ta sama baza.

Najczęściej używana jest w celach testowych.

Tworzenie bazy danych

Jeśli chcesz utworzyć bazę ‘moja_baza’ w pamięci:

jdbc:derby:memory:moja_baza;create=true

Możesz też użyć poniższej metody z klasy DerbyUtil:code>

public static Connection connectMemoryDB(String dbName, 
  String properties) {
Connection conn = DriverManager.getConnection(
"jdbc:derby:memory:" + dbName + ";" + properties);
return conn;
}
    

W przypadku korzystania ze sterownika ClientDrvercode> polecenie to powinno wyglądać:

jdbc:derby://localhost:1527/memory:moja_baza;create=true

Ścieżki dostępu do bazy w przypadku bazy w pamięci nie mają żadnego znaczenia, gdyż baza nie jest umieszczona w systemie plików. Cokolwiek wpiszesz – baza i tak jest wyłącznie w pamięci.

W przypadku bazy w pamięci może być konieczne dostosowanie wielkości sterty i zmiana wielkości strony.

Usuwanie bazy

Bazę danych można zamknąć używając atrybutu shudown=true

Do usunięcia bazy z pamięci używa się atrybutu: drop=true. Użycie drop wykonuje również operację shutdown

Możesz też użyć metody dropInMemoryDb z klasy DerbyUtil omówionej w rozdziale poświęconym usuwaniu baz danych

Baza jest automatycznie usuwana z pamięci w przypadku:

  • zamknięcia JVM (normalnego lub awaryjnego)
  • użycia polecenia exit w narzędziu ij

Zapamiętanie bazy

W przypadku chęci zachowania bazy danych, która jest w pamięci można uruchomić procedurę systemową:
SYSCS_UTIL.SYSCS_BACKUP_DATABASE

Aby dowiedzieć się jak użyć tej procedury dowiesz się w rozdziale o JDBC.

Utrwalona baza może być uruchamiana jako baza w pamięci lub jako ‘normalna’ baza w systemie Derby.

Ze względu na tymczasowość danych znacznie wygodniejsze jest operowanie na bazie danych z poziomu narzędzia ij.

Przykład

Przykład w klasie aderby.specyf.R092_memory.

Wynik

1 | Mirka
2 | Ula
3 | Jacek
2 | Ula

Pliki do ściągnięcia

R092_memory.zip (klasa uruchamiająca)
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 *