The database directory

A Derby database
is stored in files that live in a directory of the same name as the database.
Database directories typically live in system directories.

Note: An in-memory database does not use the file system, but the size limits
listed in the table
Size limits for Derby database objects still
apply. For some limits, the maximum value is determined by the available main
memory instead of the available disk space and file system limitations.

A database directory contains the following, as shown in the following
figure.

log directory

Contains files that make up the database transaction
log, used internally for data recovery (not the same thing as the error log).

seg0 directory

Contains one file for each user table, system
table, and index (known as conglomerates).

service.properties file

A text file with internal configuration
information.

tmp directory

(might not exist.) A temporary directory used
by Derby for large sorts
and deferred updates and deletes. Sorts are used by a variety of SQL statements.
For databases on read-only media, you might need to set a property to change
the location of this directory. See "Creating Derby Databases
for Read-Only Use".

jar directory

(might not exist.) A directory in which jar files
are stored when you use database class loading.

The following figure shows the files and directories in the Derby database
directories that are used by the Derby software.

Figure 1. An example of a Derby database
directory and file structure.

Derby imposes relatively
few limitations on the number and size of databases and database objects.
The following table shows some size limitations of Derby databases
and database objects:

Table 1. Size limits for Derby
database objects

Type of Object

Limit

tables in each database

java.lang.Long.MAX_VALUE

Some operating systems
impose a limit to the number of files allowed in a single directory.

indexes in each table

32,767 or storage

columns in each table

1,012

number of columns on an index key

16

rows in each table

No limit.

size of table

No limit. Some operating systems impose a limit on the
size of a single file.

size of row

No limit. Rows can span pages. Rows cannot span tables
so some operating systems impose a limit on the size of a single file, which
results in limiting the size of a table and size of a row in that table.

For a complete list of restrictions on Derby databases
and database objects, see the Java DB Reference Manual.