Glad you don’t have a ton of heartburn about re-analyzing. This happened to me in 2023 and I was heartbroken about it. I didn’t understand how Engine DJ’s database architecture worked, and that corruption inspired me to dive into how things operate and then get more active in this community, sharing what I know. This has always been my model for working in tech, and is what’s known in the wider tech spaces as the Open Source Mindset.
You’ve asked a lot of very good questions, so I’m going to be a bit verbose in my answer in hopes that someone in the future might have a similar setup, needing the same advice.
Make sure you have a backup of that entire USB drive if that’s the only place you store your music.. This is something that so many people don’t do at all. That backup can be in the form of your data living on your future NAS and there are plenty of apps that can manage the backup process (only copying the deltas between changes for example).
Second, be aware that Engine won’t work with network mounted volumes, in case that’s where your mind was going. In other words, if you try to register music that lives on any network mounted volume inside of Engine, it will ignore it.
The most important database is that in which resides on your USB drive. Being that it’s where your music is stored, the database on that USB drive’s Engine Library/
contains all of your mission-critical data, so I would certainly prioritize that. Your USB Drive’s database dir will contain:
- Registered music, cue points, loops, sample registries, etc.. (
m.db)
- If that same USB drive is used for performances, your performance histories are stored there (
hm.db)
- Other databases (stubs for Serato, etc..)
The Engine Library/
on your PC will contain a copy of your history database, as well as copies of the playlists for your USB drive. Every time you connect your USB Drive, Engine will sync that data to the main PC databases.
Why?
Engine uses some what of a “hub and spoke” architecture when it comes to databases. The Hub is your PC, and the spokes are any and all USB storage devices (often called performance drives) that you’ve used with Engine. This allows you the freedom to have different performance drives for different use cases and maintain some consistency across them when it comes to history management, etc..
In my Mac’s History database (hm.db), there are 15 distinct performance volumes registered. Here’s a query that shows each of the database IDs for each performance volume (the type of ID is called a UUID or Universally Unique IDentifier).
This flexibility comes at a cost and creates frustration for so many people who aren’t very computer savvy, as Engine’s approach really assumes that the music is stored locally on your PC and you only use external volumes strictly as performance volumes.
One example of the source of frustration: When a DJ is searching for something that doesn’t seem to exist in Engine, they blame Engine, not realizing that they didn’t connect the external source of music (USB drive).
Here’s what Engine DJ looks like running with my music SSD unmounted. All of the playlists are here, but no music. If I was a non-tech savvy DJ i would be pretty upset seeing this at first glance, thinking Engine screwed up. But no, it wasn’t Engine, it was me (in this hypothetical case).
Hope the above helps. I’ve spent the past ~3 years diving into Engine’s database schema to learn how it works in order to develop my own tools.
Feel free to send any more questions you have and either myself or anyone else in the community will jump in =)