Я создаю приложение для обслуживания больших объемов данных через REST API, и я ищу некоторые входные данные о том, как его архитектуру. Я использую .NET (C # 4.0), ASP.NET MVC и Sql Server 2008.
Сейчас у меня около 400 тыс. Строк в реляционной базе данных, и + - 5% из них обновляются в течение дня внутренним приложением, которое напрямую попадает в базу данных. Мне нужно передать эти данные через REST API, возвращая пользовательский формат XML. Однако данные должны быть обработаны, прежде чем я смогу их вывести. Хорошо, что я могу предварительно обработать его, если потребуется.
Я написал небольшой POC, который получает данные, обрабатывает их и кэширует в локальный XML-файл. Из-за обработки этот процесс занимает около часа, чтобы работать на всех 400 тыс. Строк. После завершения кэширования я просто возвращаю физический файл в каждом запросе.
Теперь мне нужно иметь возможность обновлять данные по мере их обновления в источнике и обновлять мой кэш, чтобы мне не нужно было генерировать все при каждом обновлении одной строки.
Я думаю об использовании AppFabric для хранения кеша памяти и использования физических файлов, просто чтобы убедиться, что в случае, если кеш памяти исчерпан, мне не нужно начинать с нуля. Как только строка обновляется в источнике, я обновляю кэш-память и записываю физический файл, чтобы убедиться, что он обновлен.
Таким образом, моим основным источником будет кэш AppFabric, затем файл физического кеша и, в крайнем случае, регенерация файла из базы данных, что займет около часа и сделает файл недоступным для того, кто его вызывает.
Я не очень доволен этим, но это то, что я получил. Есть предложения?
Большое спасибо!