Звучит неплохо и довольно для меня. Просто иди.
Вы используете локальный sqlite db как «кеш». Чтобы это было просто, не применяйте в этой программе нормальный код. Просто используйте локальный db. Затем, отдельно, вы кодируете синхронизатор. Этот проверяет онлайн-соединение и синхронизирует локальную базу данных sqlite с удаленной базой данных, возможно, с mysql.
Это должно быть прекрасно для всех приложений, которые не требуют немедленного обмена данными с другими процессами все время.
Существует один улов: низкая производительность sqlite на больших наборах данных. Это проблема со всеми решениями для баз данных. Таким образом, этот подход, вероятно, применим только для небольших наборов данных в целом или если вы можете уменьшить использование локальной базы данных только в части общих данных, возможно, только в критичных по времени материалах.
Другим обходным решением может быть использование объединений по двум отдельным базам данных - локальному и удаленному. Но такие вещи действительно повышают сложность кода, поэтому подумайте трижды, если это действительно необходимо.
Спасибо за ответ. Я не могу использовать sqlite для кэширования всегда, потому что моему приложению нужны немедленные обновления в онлайн-режиме. В других функциях не было бы проблем, если соединение отсутствует, но в той или иной функции мне нужна надежность, потому что пользователь мог бы потерять свои данные. Итак, решение, которое я подумал, похоже на ваше, создание sqlite DB (очень маленькие данные для управления), где я помещаю свои данные, и если есть соединение, я сохраняю свои данные там, а затем, где находится в сети, храните mysql db. – xcsob
Это будет классический подход к кешу. – arkascha
Другой вопрос: я создаю свой sqlite db для первого действия (для хранения информации локального пользователя). Я создаю таблицы в методе создания метода обработчика базы данных, поэтому таблицы создаются в первом действии. Теперь, как я могу получить один и тот же экземпляр БД в другом действии? – xcsob