Настройка веб-приложения с базой данных или данными высокой доступности?
У меня есть веб-приложение, используемое пользователями службы поддержки на местах для управления учетными записями пользователей. Приложение использует запросы LINQ для программного извлечения данных из нашей базы данных. Во время недавнего исправления база данных отключалась на несколько часов, оставляя приложение бесполезным для поддержки пользователей службы поддержки.
Я хотел бы реализовать метод для доступа данных к приложению, чтобы в случае простоя запросы все равно могли возвращать результаты. Самый успешный метод, который я нашел до сих пор, - это использование EntityFramework.Plus. Несмотря на то, что это прекрасно работает для общего кэширования, я по-прежнему предвидю время простоя, если база данных не работает по истечении срока действия, и заново создаю кэш, чтобы иметь последние данные. Меня интересуют другие варианты, кроме создания второй базы данных.
Приложение:
- Entity Framework 6
- MVC 4
- ~ 20 пользователей в день
- Одна база данных с 6-8 таблицами и 10-20 строками данных в каждой таблице.
- Не требует возможности записи данных, когда база данных не работает, только чтение.
Учитывая использование моего приложения, какие рекомендации существуют для обеспечения высокой доступности и актуальности данных в случае простоя базы данных? Является ли кэш второго уровня подходом или есть лучший способ?
1 ответ
Если база данных небольшая, вы можете либо кешировать все и использовать кеш в качестве отработки отказа базы данных, либо поместить базу данных на тот же компьютер.
Если база данных большая, вы не сможете кэшировать все, поэтому вам нужно подумать о том, какая политика кэширования лучше всего подходит для вашего приложения, тогда вы можете найти популярную систему кэширования, которая реализует эту политику, или просто внедрить ее самостоятельно. Я также рекомендовал бы вам дважды проверить, если вам действительно не нужно реализовывать политику истечения срока действия или выдавать предупреждение, если данные слишком старые.
Если вы собираетесь использовать кэш как для восстановления при сбое, так и для обеспечения более быстрых ответов, обязательно следите за каждой отметкой времени входа в кэш, поскольку вам придется проверять кэш, прежде чем пытаться получить данные из базы данных. (вы попадете в базу данных, только если кеш больше не обновляется)