netatalk
netatalk copied to clipboard
CNID backend using modern database tech
This is a feature wishlist item about creating a new CNID backend that uses a modern light-weight database.
Our primary backend, dbd (database daemon), relies on BerkeleyDB which is by most measures abandoned software.
- Oracle isn't actively developing the commercial fork, final version 18.1 (2020 patch for 2018 release)
- The FLOSS fork hasn't had updates in 12 years
- This means that security bugs or incompatibilities with modern toolchains may appear at any time
All in all, staying with BDB isn't future proof.
We have the mysql backend, but it relies on a separately managed database instance to use. What we need is something that can be spun up on demand, be fast and highly reliable.
Sqlite has been brought up in the past as a potentially strong contender.
As a side note, I learned today that Bloomberg actively maintains a BerkeleyDB fork as the key store backend bundled with their in-house SQL database called comdb2. But it doesn't look like it can be built as a separate package without modification.
WIP branch: https://github.com/Netatalk/netatalk/tree/dgsga-cnid-sqlite
Two data points regarding obsolescence:
- Alpine Linux flagged the bdb package as deprecated with v3.13.0 in 2023: https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.13.0
- Debian Linux flagged the db5.3 package as orphaned in 2023: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1055356
While it is still available in both stable releases, there's a risk of removal in any future release version.