Лучшая практика для локального кэша базы данных?

Я работаю над приложением, которое зависит от базы данных MySQL для части содержимого. В некоторых случаях приложение будет работать в среде с ограниченным подключением к Интернету (UMTS), в частности, с большими задержками.

Пользователь приложения может войти в систему, и большая часть контента для пользовательского интерфейса приложения извлекается из базы данных MySQL. Чтобы предотвратить задержки после входа пользователя в систему, я хотел бы кэшировать как можно больше содержимого базы данных на стороне клиента. Новый контент следует извлекать из базы данных только в случае внесения соответствующих изменений. Есть ли общий способ решения этой проблемы? Любая литература, которая описывает твердые решения этой проблемы?


Небольшое обновление: сейчас я рассматриваю CouchDB как решение для моего конкретного варианта использования. Основная причина в том, что:

он позволяет пользователям и серверам получать доступ и обновлять одни и те же общие данные, пока они отключены, а затем двунаправленно реплицировать эти изменения позже.

(от: http://couchdb.apache.org/docs/overview.html)

Пока что это выглядит действительно многообещающе.

2 ответа

Решение

Мы фактически запускаем локальную копию базы данных, и большинство программного обеспечения просто общаются с локальной базой данных, которая всегда доступна. Затем у нас есть фоновый процесс, который работает для синхронизации двух баз данных.

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

Я не уверен, что это обычная практика, но вы можете записать кэшированные данные в файл JavaScript, который клиент будет кэшировать. Затем вы можете сделать Ajax-вызовы, чтобы увидеть, произошли ли какие-либо изменения... Это будет небольшой запрос. Если изменений нет, используйте кэшированные данные.

Другие вопросы по тегам