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/
https://photostructure.com/faq/why-photostructure/
The novel random "taste" UI makes navigating even very large libraries fun and serendipitous.
There are a ton of configurable image and video filters that can prevent the exif-less screenshots and other random nose from getting imported in the first place. Hop into the discord if you need any help with setup, I'm online.
(Also, know that I've open sourced a bunch of the core functionality, but this is commercial software, albeit with a very generous "free" tier).