Лучшая практика для кеша локальной базы данных? - PullRequest
3 голосов
/ 07 февраля 2010

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

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


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

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

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

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

Ответы [ 2 ]

4 голосов
/ 07 февраля 2010

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

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

0 голосов
/ 07 февраля 2010

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

...