When does the nameserver re-read it's config file?

That depends on which nameserver you choose to use. :-)

Actions taken with the API and NicToolClient make real-time changes in the NicTool database. How often those changes are visible on the DNS servers is dependent on your export routines. Before I converted Interland's DNS over to NicTool and tinydns, our nameserver reloads happened every 12 hours and took about 4 hours to complete (BIND 8).

This was due to BIND inefficiencies which have been discussed in great detail on the BIND users list. Everyone that's dealt with BIND and more than 120,000 zones understands these issues all to well. After our first 250,000 zones were imported into NicTool, I was running full updates every four hours, a huge improvement. The mechanism was quite simple, dump the entire database every 4 hours.

This solution is effective on small DNS sites. It's still the export solution that I'm using today on my personal DNS servers. However, it's has it's limitations, particularly when it comes to scalability.

The sql dump took an hour to run, another 15 minutes to build the .cdb, and another 20 minutes to copy the enormous file to every server in the cluster. One of my goals was to publish updates in something closer to real time. With a stock tinydns, that wasn't going to be possible, simply because of the resource requirements. In retrospect, the solution was quite simple but it was also fairly innovative.

Since NicTool logs and timestamps all changes made to DNS data, it's very easy to see if new zones or records have been added, or changes made since the last export. I discussed the matter with Ray, our systems analyst and we decided to teach tinydns to read from two .cdb files, a full one updated every 12 hours, and an incremental file updated every minute.

Ray coded the hacks to tinydns, I rolled them out, we fixed the unexpected "features", and then we pushed them into production and never looked back.

Keep in mind that these hacks were necessary only because tinydns doesn't have any type of cdb update mechanism. Changes are all or nothing. Should you be using a DNS server like BIND 9 or PowerDNS that can read directly from a SQL database, your updates would be in real time.

However, you may have other, more easily resolvable issues. The obvious one that comes to mind is SQL efficiency. NicTool's database structure is designed for NicTool access, not efficient DNS queries (such as tinydns' CDB database). Thus, if you have a busy set of DNS servers, you'd want to export your DNS data from NicTool to a database designed specifically for that purpose. You would, of course, design the database to be the most efficient based on which DNS server you chose.

How frequently you chose to run updates in such a case would be the limiting factor. I would not expect it to be very difficult to run a query frequently (every minute?) to detect database changes and update the query db.

I haven't explored such a solution, frankly because I have no need. Tinydns has proven to be the perfect solution for my personal DNS servers (with only a few hundred zones) and with a bit of hackery, it's also nearly ideal for the purposes of one of worlds largest hosting providers. I can't imagine ever being compelled to use something else, but I rest comfortably knowing the possibility is there. :-)

Matt