Generally we take a tiered approach to data access: we have scheduled processes that replicate NS data to a local database. Most queries use the replicated data, and only access the live data when having real-time information actually matters. 90% of the time the replicated data is sufficient for our needs.