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.