When should I use Derby vs an external database, and can I store my binaries in the database?

We have a lot of our customers working with Derby DB in production.


Up to a certain size (~500k of artifacts in our tests with Artifactory 3.x and Derby DB), Derby provides excellent performance results-- even better than the MySQL DB. This is because it runs in the same process as Artifactory. 

Beyond that, performance may degrade, especially under a very heavy load, since shared JVM resources such as caches and memory can lead to contention.


Other considerations besides performance when choosing an external and out-of-process DB, is if you have your own DBAs who should regularly manage the databases and connect to them with management tools.

Generally, we recommend to store the binaries on a filesystem. However, we provide our customers the freedom to choose for people who prefer to keep everything (binaries and metadata) managed under a single resource.