У меня есть приложение для iPhone, синхронизирующееся с веб-сайтом с помощью веб-службы. Я использую следующую процедуру синхронизации:
- Отправка элементов, которые необходимо синхронизировать, с iPhone на веб-сайт
- Добавить товары на сайт MySql база данных
- Отправить обратно элементы, которые нужно синхронизировать с веб-сайта на iPhone
- Добавление элементов в базу данных iPhone Sqlite
Все это делается с помощью одного запроса к серверу. Часто у пользователя есть только несколько элементов (<20) для синхронизации, но иногда у пользователя может быть 2000 элементов для синхронизации. Добавление 2000 элементов в базу данных MySql может занять некоторое время. Я использую транзакции и фиксирую на сайте при добавлении элементов, что-то вроде этого: </p>
mysqlTransaction.BeginTransaction();
foreach item sent from iPhone
{
mysql.CommandText = //Sql query
mysql.ExecuteNonQuery();
}
mysqlTransaction.Commit();
Иногда, когда пользователю нужно добавить много элементов, это может занять очень много времени. Поэтому моя идея состоит в том, чтобы немного изменить процедуру синхронизации, и вместо того, чтобы использовать один большой запрос, я делю запрос на куски, возможно, отправляя и получая 50 элементов за раз. Это вызовет больше, но быстрее запросов. Что вы думаете об этом? Как бы вы решили это? Правильно ли использовать транзакции и фиксировать на сервере?