Веб-служба C # для источника базы данных Oracle, которая иногда недоступна - PullRequest
0 голосов
/ 05 мая 2011

У нас есть большое приложение, которое содержит много данных.Мы хотели бы использовать его в качестве источника данных для различных веб-приложений, написанных на C #, поэтому у нас нет больше избыточных данных.

Данные, на которые мы смотрим, не сильно меняются, поэтому кэшированиеработать нормально большую часть времени.Таким образом, мы пишем веб-сервис на C # для данных, которые будут повторно использоваться в различных внутренних приложениях.

Однако примерно один раз в месяц источник базы данных Oracle недоступен.

Каков наилучший способ справиться с этим в веб-службе, чтобы другие приложения, использующие эти данные, не былинарушено также?

Ответы [ 2 ]

1 голос
/ 02 июня 2011

Решением было использование вторичного кеша, срок действия которого не истекает.
Вторичный кеш обновляется с использованием последних значений, если первый (более короткий) кеш успешно обновляется из базы данных.Если запрос базы данных завершается неудачно, а срок действия первого кэша истек, то первый кэш обновляется вторым кэшем.Так что всегда есть вторичный кеш.

1 голос
/ 05 мая 2011

Настройка партнеров по репликации или отработке отказа? Честно говоря, это не похоже на работу для большего количества кода; это звучит как работа для большей инфраструктуры. Я знаю, что лицензии Oracle стоят дорого, но платят разработчикам, чтобы обойти недоступность.

Если вам просто нужно было решить это с помощью кода, то веб-службы должны просто сохранять и возвращать свои кэшированные данные, если какой-либо регулярно запланированный запрос к БД завершается неудачно с сообщением тайм-аута или сообщения о сбое соединения. Кэшированные данные должны храниться столько времени, сколько необходимо в этих обстоятельствах, до тех пор, пока не вызовет обновление этих данных. Если кэшированные данные отсутствуют, вы можете либо проглотить ошибку и ничего не возвращать, либо вернуть ошибку, указав, что данные недоступны из обоих мест.

...