Нужны предложения о том, какой вариант будет эффективнее хранить данные на iPad - PullRequest
0 голосов
/ 27 декабря 2011

Я впервые работаю над большим проектом для клиента.Поэтому я не был уверен, как решить эту проблему.Однако я выдвинул две разные идеи, но мне нужно мнение профессионалов о том, какая из них лучше:)

Ситуация:

Существует приложение, которое работает на разных клиентах.IPAD.Данные приложения хранятся с использованием гигантского файла XML.Этот XML-файл является общим для всех клиентов сервером.Таким образом, сервер имеет централизованную копию, а каждый клиент имеет свою собственную копию.Как только клиент внес изменения в свою XML-копию, он обновляет серверную копию, а другой клиент обновляет свою копию обновленной серверной копией.

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

Визуальное представление:

enter image description here

Теперь на стороне клиента я должен придумать логику, с помощью которой я буду обновлять свою копию клиента и загружать ее на сервер.Есть два варианта:

Опция 1:

В варианте 1 я могу напрямую манипулировать файлом XML с помощью анализатора GDataXML и загружать эту копию на сервер.Для сохранения я могу сохранить копию клиента на своем iPad в каталоге документов.

enter image description here

Опция 2:

В варианте 2 я могучтение файла XML создает представление CoreData для локального хранилища.Когда я обновляю данные внутри основных данных, я тоже изменяю XML-файл и затем загружаю этот файл на сервер.Двойная работа, но я думаю, что настойчивость лучше.

enter image description here

Теперь, какой из них более надежный и целесообразный?Лично я планировал сделать вариант 2, потому что он кажется более надежным, поскольку я сохраняю данные приложения в основных данных.Но вариант 1 кажется более легкой работой, но я не знаю, насколько хорошая стойкость сохранится.

Извините за длинный вопрос,

Спасибо за любой предоставленный ввод.

Ответы [ 3 ]

2 голосов
/ 27 декабря 2011

Существует ряд факторов, которые могут повлиять на выбор второго варианта вместо первого.

  • Насколько велик файл XML? Если вам нужно работать с очень большими документами, вам может потребоваться поэтапный анализ XML (SAX) в основных данных. Это позволит вам получить доступ к содержимому документа, не загружая его все в память сразу.

  • Вам нужно выполнять сложные запросы в данных? Если это так, то лучше использовать предикаты выборки основных данных, а не xpath или XSL.

  • Вы уже используете основные данные? В зависимости от того, как структурированы данные XML, в целом может быть проще импортировать данные в существующее постоянное хранилище.

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

1 голос
/ 27 декабря 2011

Если вы хотите регулярно обновлять данные, используйте CoreData

1 голос
/ 27 декабря 2011

Если вам нужно создать граф объектов на основе того, что вы получаете с сервера, и показать его пользователю (что вам, скорее всего, нужно), вам следует придерживаться второго варианта, поскольку он обеспечивает простое и надежное сохранение данных.

Если вам не нужно предоставлять пользователю какие-либо данные из XML-файла, вы, конечно, можете сохранить их в каталоге Documents.

Итак, если это клиентское приложение и оноимеет по крайней мере некоторое визуальное представление данных из файла XML, который вы должны использовать CoreData.

...