NSD 4.0 DATABASE FORMAT. The NSD 4.0 database format is different from NSD 2 and NSD 3. It stores RRs, but in a way that they can be edited without leaking space. The file contains a 'buddy-system-style' 'malloc' of chunks. Pointers are offsets from the start of the file. For every pointer the reverse is kept track of, so that chunks can be moved to a new position. Free space is reused, and (gradually) moved to the end to shorten the file. It is about 23x larger than the NSD3 format and about 3x to 6x slower to read and write a full database. But you can use a tree to fetch a particular item at log(N) cost, and update a single item at log(N) cost. Therefore, adding a zone or removing a zone does not need a new compile of the nsd database, but can be performed by editing the database. The file format is endian-dependent, and uses 64bit file offsets. The file chunk format is defined in udb.h. the tree for lookups is defined in udbradtree.h. The rrsets and zone format is defined in udbzone.h.