That's why all of PhotoStructure's metadata changes are stored using EXIF or XMP standards either within the file, or alongside in a sidecar (if you prefer). File organization is also completely customizable, and designed to work in concert with other DAMs, if desired. Details are here: https://photostructure.com/faq/system-of-record/
Also: if the business ends, the code becomes open source. Details here: https://photostructure.com/faq/why-photostructure/#if-photos...
Parallelism is provided by https://github.com/photostructure/batch-cluster.js/
Metadata reads and writes are via https://github.com/photostructure/exiftool-vendored.js/
Persistence is via SQLite: https://github.com/WiseLibs/better-sqlite3
Image transforms are via Sharp: https://sharp.pixelplumbing.com/
My more nerdier blog posts are tagged here: https://photostructure.com/tags/coding/