Онлайн-хранилище / синхронизация больших пользовательских баз данных iPhone: работа на сервере или на устройстве? - PullRequest
0 голосов
/ 01 декабря 2010

Я работаю над онлайновой системой резервного копирования и синхронизации пользовательских баз данных для популярного приложения на основе SQLite для флэш-карт iPhone;это достаточно масштабно - мы можем довольно быстро получить до 100 миллионов отдельных записей флэш-карт или более (10 000 пользователей, 10 000 карт каждая) - и нам необходимо разработать систему с учетом такого рода масштабируемости.Но мы на самом деле не занимаемся разработкой программного обеспечения для веб-приложений, и, по крайней мере, изначально мы не планируем предоставлять такую ​​большую часть веб-интерфейса, за исключением администрирования учетных записей - все фактические манипуляции с пользовательскими данными будут выполняться в автономном режиме.1001 *

Похоже, у нас есть два основных варианта для реализации этого:

  • Выполнить синхронизацию на сервере;хранить все данные пользователей в базе данных MySQL (или кучу их по мере увеличения) и загружать / выгружать только списки изменений.

  • Выполнить синхронизацию локально;загрузите последнюю версию базы данных с сервера, проверьте / примените изменения на устройстве, затем загрузите объединенную базу данных.

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

Кто-нибудь чувствует, что один из этих вариантов явно лучше другого?Есть ли какой-то другой способ сделать это, который мы не рассмотрели?

Спасибо.

1 Ответ

0 голосов
/ 01 декабря 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...