Aby system Derby i baza danych były przystosowane do naszych potrzeb należy skonfigurować system Derby i bazę Derby poprzez ustawienie szeregu właściwości.

Zasięg właściwości

Ustawiane właściwości mogą mieć różne zasięgi (zakresy) (scope):

  • system – ustawienia dotyczą wszystkich baz danych w systemie Derby oraz wszystkich konglomeratów. Niektóre właściwości mogą być ustawione tylko dla tego zakresu
  • baza danych – dotyczą tylko tej jednej bazy danych. Niektóre właściwości mogą być ustawiane wyłącznie w tym zakresie
  • konglomerat (tabela, indeks) – ustawienie dotyczy tylko konglomeratów, które będą tworzone po ustawieniu właściwości. Ustawienie nie dotyczy konglomeratów już utworzonych

Trwałość właściwości

Zależy od zakresu.

  1. zakres ‘baza danych’ – właściwości są przechowywane w bazie i dlatego są trwałe. Mogą być zmienione z poziomu kodu Java lub nadpisane przez właściwości o zakresie ‘system’. Jeśli jakaś właściwość dla zakresu ‘baza danych’ zostanie ustawiona jako ‘null’ to zostanie usunięta z listy właściwości tej bazy danych, a właściwość zostanie pobrana z właściwości o zakresie ‘system’ o ile taka właściwość dla systemu może zostać ustawiona i o ile właściwość derby.database.propertiesOnly nie została w bazie ustawiona (ustawienie tej właściwości na ‘true’ nie pozwala na nadpisywanie właściwości o zakresie ‘baza danych’ przez właściwości o zakresie ‘system’)
  2. zakres ‘system’
    • właściwości ustawione z poziomu programu Java lub linii poleceń – nie są w żaden sposób utrwalane – obowiązują do zamknięcia JVM lub zamknięcia aplikacji
    • właściwości ustawione w pliku ‘derby.properies’ – obowiązują do:
      • zmiany wartości i restartu systemu
      • usunięcia pliku i restartu systemu
      • uruchomienia bazy danych poza systemem z plikiem – co jest rówoznaczne poprzedniemu
    1. Plik derby.properties musi być umieszczony w folderze systemu Derby. W środowisku ‘server’ jest – oczywiście – umieszczony na serwerze.

      Pierwszeństwo właściwości

      1. Właściwości o zakresie ‘system ’ ustawione z poziomu kodu Java lub poziomu linii poleceń
      2. Właściwości o zakresie ‘baza danych’
      3. Właściwości o zakresie ‘system’ ustawione w pliku derby.properties

      Można to zrozumieć np. tak.
      Jeśli jakaś właściwość jest ustawiona na poziomie 1,2,3 – będzie użyta wartość 1.
      Jeśli jakaś właściwość jest ustawiona na poziomie 2, 3 – będzie użyta wartość 2.
      Jeśli jakaś właściwość jest ustawiona na poziomie 3 – będzie użyta wartość 3.
      Ze względów bezpieczeństwa – aby zapobiec nadpisywaniu właściwości o zakresie ‘baza danych’ przez właściwości o zakresie ‘system’ – należy ustawić właściwość derby.database.propertiesOnly=true.

      Ustawianie i odczytywanie właściwości

      Zakres ‘system’

      Właściwość w systemie (Windows) może zostać ustawiona z poziomu aplikacji, przed uruchomieniem silnika Derby:

         Properties props = System.getProperites(); 
         props.setProperty(„nazwa”, „wartość”);
      

      Tak ustawiona wartość może być łatwo odczytana:

         String prop = props.getProperty(„nazwa”)
      

      Właściwości systemowe ustawione w pliku derby.properties nie mogą być odczytane w taki sposób z systemu.
      Informacje systemowe można też odczytywać przy użyciu bibliotek JMX – napiszemy o tym w innym wpisie.

      Zakres ‘baza danych’

      Są ustawiane i odczytywane z poziomu SQL poprzez użycie procedur systemowych:

      • do zapisywania: SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY
      • do odczytywania: SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY

      Sposób użycia procedur systemowych będzie pokazany w rozdziale poświęconym CallableStatement w części omawiającej JDBC.

      Środowisko klient-serwer

      Właściwości systemowe muszą być ustawione dla systemu na serwerze, a więc tam musi znajdować się plik derby.properties.
      Aplikacja kliencka może ustawić właściwości bazy danych na serwerze (jeśli ma stosowne uprawnienia) ponieważ właściwości te są ustawiane za pomocą SQL.

      Właściwości dynamiczne i statyczne

      Właściwości dynamiczne mogą być ustawione przy uruchomionym silniku Derby, czyli nie ma potrzeby ponownego uruchamiania silnika. Niektóre z właściwości dynamicznych zaczynają obowiązywać od razu, inne są dostępne dopiero od następnego połączenia.
      Właściwości statyczne, aby ich zmiana zaczęła obowiązywać, wymagają restartu systemu Derby.
      Właściwości ustawione z pliku derby.properties są zawsze statyczne, gdyż są pobierane przy starcie silnika Derby.
      Potencjalnie dynamiczne mogą być właściwości:

      • ustawione jako właściwości o zasięgu ‘baza danych’
      • właściwości o zasięgu ‘system’ przy pomocy obiektu Properties w aplikacji, w którą wbudowana jest baza danych.

Dodaj komentarz

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