Derby system

A Derby database exists within a system.

A Derby system is a single instance of the Derby database engine and the environment in which it runs. It consists of a system directory, zero or more databases, and a system-wide configuration. The system directory contains any persistent system-wide configuration parameters, or properties, specific to that system in a properties file called derby.properties. This file is not automatically created; you must create it yourself.

The Derby system is not persistent; you must specify the location of the system directory at every startup.

However, the Derby system and the system directory is an essential part of a running database or databases. Understanding the Derby system is essential to successful development and deployment of Derby applications. As the following figure shows, Derby databases live in a system, which includes system-wide properties, an error log, and one or more databases.

Figure 1. Derby system
This figure shows a Derby system that includes a database called Accounting and a database called Sales. The figure shows the derby.system.home system variable pointing to the databases and explains that this system variable tells Derby the name of your system directory. Additionally, this figure shows that the derby.properties file and the derby.log file are part of the Derby system.

The system directory can also contain an error log file called derby.log (see The error log).

Each database within that system is contained in a subdirectory, which has the same name as the database (see A Derby database).

In addition, if you connect to a database outside the current system, it automatically becomes part of the current system.

When you use the embedded driver, Derby database files and log files normally have whatever default permissions you specify for your file system. If you are running with Java SE 7 or later, however, you can enhance security by restricting file access to the user who creates the database. To do this, set the system property derby.storage.useDefaultFilePermissions to false. See the Derby Reference Manual for details.

Note: In-memory databases do not appear in the system directory.
Related concepts
Derby JDBC driver
Derby JDBC database connection URL
A Derby database
Connecting to databases
Working with the database connection URL attributes
Connections