Я начинаю свой первый проект PhoneGap, используя AngularJS. Это приложение, основанное на базе данных, с использованием REST API в качестве бэкэнд. Начнем с того, что я не собираюсь хранить данные локально вообще, поэтому он не будет делать многое без Интернета.Стратегии синхронизации данных с сервером в PhoneGap
Однако, в конечном итоге, я хотел бы, чтобы он хранил данные локально и синхронизировался, когда доступен Интернет, так как я знаю, что я лично отключаю интернет-соединения на своем телефоне (авиационные самолеты, разряженные батареи) или не имеет баров , Мне было интересно, можете ли вы указать мне на некоторые хорошие ресурсы для такого типа синхронизации. Некоторые рекомендуемые библиотеки? Или, возможно, некоторые дискуссии о подводных камнях и о том, как их крутить вокруг. Я немного поработал, но думаю, что сейчас я не знаю вопросов, которые нужно задать.
Кроме того, мое намерение сначала создать его в Интернете, а затем добавить синхронизацию .... Это хорошая идея, или я стреляю себе в ногу? Нужно ли мне синхронизировать его с самого начала?
У кого-то предлагалось создать приложение как локально только сначала, а только для части, доступной только для Интернета, которая имеет определенную логику. Удаленное хранилище очень важно для меня. Я знаю, что решение имеет много общего с моими задачами для приложения, но с точки зрения построения этого, с конечной целью является локальное хранилище + интернет-хранилище и двухсторонняя синхронизация, что будет проще? Или это даже имеет значение?
Для начала я собираюсь использовать UUID, а не последовательные целые первичные ключи. Я также думал о назначении каждому устройству идентификатора, который имеет префикс на любых генерируемых им ключах, но это кажется деликатным. Кто-нибудь использовал любую технику? Мысли?
Наверное, мне нужна хорошая система, чтобы рассказать, какие данные были синхронизированы. На стороне клиента, я думаю, любые записи, которые создаются/редактируются, могут быть помечены для синхронизации. Но на стороне сервера у вас несколько клиентов, поэтому это не сработает. Я предполагаю, что вы могли бы иметь last_updated timestamp и синхронизировать все обновленные синхронизации последней успешной синхронизации.
Что относительно записей, отредактированных в нескольких местах? Если два клиента редактируют, а затем хотят синхронизировать, у вас есть некоторая двусмысленность в отношении слияния, например, при объединении ветвей в git или других системах управления версиями. Как вы справляетесь с этим? Я думаю, git делает это, сохраняя разницу в каждом фиксации. Думаю, вы могли бы хранить отличия? Чем больше я думаю об этом, тем сложнее это звучит. Я передумал это или не думал об этом?
А как насчет хранения на стороне клиента? Я думал о SQLite или о локальном хранилище PhoneGap (http://docs.phonegap.com/en/1.2.0/phonegap_storage_storage.md.html). Рекомендации? Синхронизация будет проходить через REST API, обмениваясь JSON, поэтому я думал о том, что на самом деле хранит данные как JSON, или что-то похожее на JSON, которое легко конвертировать, было бы неплохо. С другой стороны, если мне нужно будет обменять какой-то формат данных, возможно, это то, что мне нужно хранить?
Кто-нибудь использовал это? http://pouchdb.com/ Кажется, что это касается многих моих проблем, но хотелось бы услышать ваши мысли, если вы были на этом пути? – eimajenthat