4

MySQLデータベースに依存するWebアプリケーションがあり、そのためにiPhoneアプリを作成することを考えています。このアプリを使用すると、ユーザーはWebアプリケーションで自分のアカウントのデータを参照/挿入/更新/削除できます。

最も簡単な方法は、iPhoneアプリをWebアプリのインターフェイスとして単純に構築することです。つまり、各操作をWebに接続する必要があります。ただし、iPhoneアプリに独自の「オフライン」バージョンのデータベースを持たせたいと思います。これにより、ユーザーはオフラインで作業できるだけでなく、すべてをローカルに配置することでアプリの速度と応答性が向上するため、エクスペリエンスが向上します。

タイムスタンプを使用して最新バージョンを保持することで競合を処理します(すでにソフト削除を使用しています。つまり、ユーザーがレコードを削除するときにフラグを設定するだけです)が、挿入の処理方法がよくわかりません。実際、ユーザーがオフライン(iPhoneアプリ)データベースとオンライン(Webアプリ)データベースの両方に新しいアイテムを挿入すると、主キーの競合が発生します(すべてのテーブルには、主キーとして自動インクリメントを使用するINTEGERフィールドがあります)。この問題をどのように処理できますか?

私は2列の主キーを持つことを考えていました。1つは自動インクリメントされた整数で、もう1つは「デバイス」に固有のものです。このように、Webアプリを介して追加された新しいレコードのIDは1-web、2-webなどになり、iPhoneアプリを介して作成されたレコード1-iphone、2-iphoneなど...これにより、2つをマージできます。競合のないデータベース。このアイデアについてどう思いますか?

4

1 に答える 1

5

最も簡単な解決策は、UUIDを使用することです。

あまり洗練されていない解決策は、iPhoneIDがキースペースの定義されたサブセットを占めるようにすることです。たとえば、64ビットキーを使用すると、各iPhoneに上位20ビットの特定のパターンを割り当てることができます。

于 2010-06-23T23:48:47.810 に答える