Возможности для синхронизации базы данных в системе Андроид

  • Для Seminararbeit ищу материал по теме Синхронизация баз данных в системе Андроид, точнее возможности синхронизации базы данных мобильного аппарата с базой данных сервера. Еслы кто может помочь советом или информацией по данной теме, буду очень признателен.

  • сам не пробовал, но говорят ето очень не плохо:
    Пожалуйста зарегистрируйся для просмотра данного изображения.


    Пожалуйста зарегистрируйся для просмотра данного изображения.


    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.

    NULL

  • сам не пробовал, но говорят ето очень не плохо:
    Пожалуйста зарегистрируйся для просмотра данного изображения.


    Пожалуйста зарегистрируйся для просмотра данного изображения.


    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.

    Спасибо. Но тут представлен готовый клиент. Меня интересует процесс программирования синхронизации: например уже имеющиеся решения, библиотеки итд. Funabol имеет один комерческий framework. Меня интересуют больше open source решения.

  • ты второй линк смотрел?

    Да, я смотрел второй линк. Funambol синхронизирует личные данные пользователя. это уже готовый проект. Меня же интересует сам процесс создания синхронизации любых данных. Например имеем базу данных на сервере. Этими данными пользуется определённое приложение (App) мобильного устройства. Чтобы постоянно не делать запросы на сервер, создаётся база данных в моб. устройстве и все данные с сервера копируются туда. Это упрощает процесс работы приложения и экономит ресурсы моб. устройства ну и конечно деньги пользователя. Теперь стоит только проблема синхронизации баз данных с учётом не постоянной связи клиента и сервера.

  • Это упрощает процесс работы приложения и экономит ресурсы моб. устройства ну и конечно деньги пользователя. Теперь стоит только проблема синхронизации баз данных с учётом не постоянной связи клиента и сервера.


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

  • @ Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    Для чего нужно "копирование" базы данных: если твоё приложение будет постоянно "тянуть" данные с интернета это стоит бОльших денег, чем одно обновление базы данных, особенно если у тебя нет flatrate и если учитывать ещё возможное прерывание связи клиент-сервер это ещё скажется на скорости работы твоего приложения. Выход caching т.е база данных будет сохранена в мобильном устройстве и будеть обновляться ( именно обновляться и не полностью копироваться, т. е только изменения будут внесены) только в том случае, если на сервере произойдёт изменение базы данных. Для оповещения мобильного устройства есть много различных методов: C2DM von Google, SMS, Poling (не эффективен!в 90 процентах). Плюс сихронизировать базу можно только тогда, если мобильно устройство имеет выход в интернет через WLAN (опять большая экономия денег, но это оптионально).
    моя же проблема имменно в том, что бы эффективней провести синхронизацию с меньшей потерей ресурсов для сравнивания информации с базой данных сервера и локальной базой данных.

  • Ну это понятно, что ты делаешь базу данных на мобильное устройство и потом инкриментель добавляешь или вносишь только изменения , если ты считаешь чтоэто и есть экономия , то я могу видеть это по другому, как и проверяюший твою работу. Всё зависит конечно от того ешёнасколько актуальный датенбанк нужен человеку для работы , если подходят иногда и старые данные , то тогда конечно будет экономия , а если нужны всегда актуальные , то экономии не видно..Могу описать просто .
    1 вариант: датенбанк не в телефоне /// просто соединение с датенбанком и закачка небольшой инфы которая нужна имено сейчас . ( стоимость соединения ) + актуальность
    2 вариант: датенбанк в телефоне //// пришла смс что датенбанк обновился , но человеку он пока не нужен для работы , через 5 смс человек должен работать с актуальным датенбанком и поэтому тоже должен делать соединение , при этом закачивая все изменения ( стоимость соединения и это возможно дольше чем обычный запрос) + стоимость посланных смс .


    Надо конечно сравнивать два варианта, но если тебе это для Seminararbeit , то можно как я написал усомнитса в экономии . При этом не надо забывать что мобильное устройство с полностью загруженым датенбанком может дольше работать , конечно зависит от устройства и от размеров датенбанка . :thumbup:

  • Понятно, что если речь идёт о том, что данные меняются каждые скажем 10 мин., то caching как решение естественно отпадает. Если же данные меняются не столь часто, то его можно вполне использовать. Тем более, ты предоставляешь клиенту возможность работать с твоим приложением ещё и offline, без связи с интернет. А это большой плюс.
    К теме вариантов:
    датенбанк не в телефоне: где гарантия, что после закачки небольшой инфы, клиенту не потребуется ещё инфа с базы данных. Теперь считаем время на запрос+время на обработку запроса+время на ответ+время на отображение инфы (это конечно можно не брать в расчёт :) ). Теперь клиенту требуется ещё инфа и можно начинать считать по новой. Не думаю,что клиент будет рад если постоянно надо будет ждать.
    Если банк в телефоне, то синхронизация можно делать в отдельном threadе.
    датенбак в телефоне: использовать смс не выгодно, тут ты прав. Но я и не собирался использовать смс. Я написал только возможности. Выгодный C2DM. Страдают только клиенты у которых версии андроид ниже чем 2.2, но это меньше чем 20 %.
    На эту тему можно разговаривать долго. Конечно нужно всегда просчитывать все варианты и выбирать наиболее выгодный именно для определённого приложения.
    Моя же главная задача именно предостовление возможности для клиента работать с приложением в оффлайн. Отсюда и вытекает проблема с синхронизацией данных, что бы это проходило быстро без лишних соединений. Простой метод был бы, просто загонять датенбанк клиенту по новой, но если в ДБ поменяли только один бит, то это не самое лучшее решение :P