Normally, when I hear "I need to optimize for fast reads with few inserts and can't use SQL" my first two thoughts are "why can't you use SQL?" and "LDAP or some other directory service is great for lots of reads and only a few inserts". However, I'm having trouble understanding your need to fully rebuild the database every night. Is that really what you meant to say? Will your users and the data you search really change that much every day?