# 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.

A database directory contains the following, as shown in Derby database directories contain files and directories used by the software.:

- 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.

Read-only database directories can be archived (and compressed, if desired) into jar or zip files. For more information, see Accessing a read-only database in a zip/jar file.

Figure 1. Derby database directories contain files and directories used by the software.

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 to Derby Database Objects
Type of Object | Limit
--- | ---
tables per database | java.lang.Long.MAX_VALUE Some operating systems impose a limit to the number of files allowed in a single directory.
indexes per table | 32,767 or storage
columns per table | 1,012
number of columns on an index key | 16
rows per 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, and therefore limit 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.

Parent topic: A Derby database
Related concepts
Database-wide properties
Derby database limitations
Double-booting system behavior