ローカルデータ保存用にsqliteを使用するアンドロイドアプリとiPhoneアプリ(同じ機能)があります。最初にアプリケーションにはデータがないので、最初の実行時にリモートサーバーからデータを受け取り、sqliteデータベースに格納します。 sqliteデータベースはサーバーによって作成され、アプリケーションはそれを1つのファイルとしてダウンロードし、それを使ってアプリを購入します。データベースファイルは、今日の標準ではそれほど大きくはありませんが、5〜6 MBほどの小ささではありません。sqliteデータベースの同期/更新
今、しばらくの間、アプリケーションはサーバーからデータを更新する必要があります。いくつかのアプローチが考えられます:
サーバーから新しい完全なデータベースをダウンロードし、既存のデータベースを置き換えます。これは、問題を処理する最も簡単な方法のように聞こえます。これは、5〜6 MBの繰り返しのダウンロードではないということです。アプリはアップデートをダウンロードするかどうかをユーザーに知らせるので、あまり問題になることはありません。
新しい/変更されたレコードのみを含むデルタデータベースをダウンロードし、削除するレコードに関する情報を何らかの形で保存します。これによりダウンロードサイズははるかに小さくなりますが、クライアント側の作業はより複雑になります。私は1つのデータベースを読んで、読まれたものに基づいて別のものを更新する必要があります。私の知る限りでは、
insert into db1.table1 (select * from db2.table1)
のようなものをsqliteで行う方法はありません。ここで、db1
とdb2
は同じ構造のtable1
を含む2つのsqliteデータベースです。 (完全なsqliteデータベースには約10個のテーブルがあり、おそらく約500個のレコードが含まれています)データのデルタを他の形式(json、xmlなど)でダウンロードし、この情報を使用して更新しますアプリケーションのデータベース。前と同じ:サーバー側の問題ではなく、完全なデータベースよりもダウンロードのサイズが小さくてすみますが、更新を行うには非常に面倒なプロセスです。
3つのアプローチのどれをお勧めしますか?それとも私が見逃した別の方法がありますか?
事前に感謝します。
https://stackoverflow.com/questions/4008015/android-sqlite-bidirectional-synchronization-sqlite –