Sincronização bidirecional entre o aplicativo do iPhone e o aplicativo da web

Eu tenho um aplicativo da Web que depende de um banco de dados MySQL, para o qual estou pensando em criar um aplicativo para iPhone. Este aplicativo permitiria aos usuários procurar / inserir / atualizar / excluir dados em suas contas no aplicativo da web.

A maneira mais fácil seria criar o aplicativo para iPhone simplesmente como uma interface para o aplicativo da web, ou seja, cada operação precisa estar conectada à web. No entanto, eu gostaria que o aplicativo para iPhone tivesse sua própria versão "offline" do banco de dados. Isso não apenas permitiria que o usuário trabalhasse offline, mas também proporcionaria uma experiência melhor, pois ter tudo localmente significa um aplicativo mais rápido e responsivo.

Eu lidaria com conflitos usando um carimbo de data e hora e mantendo a versão mais recente (eu já uso exclusão reversa, ou seja, quando o usuário exclui um registro, simplesmente defino um sinalizador), mas ainda não descobri como lidar com inserções. De fato, se o usuário inserir novos itens nos bancos de dados offline (aplicativo para iPhone) e online (aplicativo para web), haverá um conflito de chave primária (todas as minhas tabelas terão um campo INTEGER com auto incremento como chave primária). Como posso lidar com esse problema?

Eu estava pensando em ter uma chave primária de duas colunas, uma sendo o número inteiro auto-incrementado e a segunda específica do "dispositivo". Dessa forma, os novos registros adicionados pelo aplicativo da web teriam ID 1-web, 2-web, etc. e os criados pelo aplicativo do iPhone 1-iphone, 2-iphone, etc ... Isso permitiria mesclar os dois bancos de dados sem conflitos. O que você pensa dessa ideia ?