地理的に異なる場所のローカルSQLiteデータベースを維持するAndroidアプリがあります。
次に、そのデータベースを「クラウド」に接続して、次のことを実行します。
アプリが最初にインストールされたとき(または要求に応じて)、すべての初期ダウンロード
ローカルに追加された新しい場所は、クラウドにアップロードする必要があります(自動的に)
オンラインデータベースは、新しいオンラインエントリがないか時々チェックし、ローカルデータベースにダウンロードする必要があります。
私はこれを達成する上で多くの問題を抱えています。
1つ目は、単にそれを行う方法です。contentProvidersとsyncProvidersが関係していると思いますが、その方法は正確にはわかりません。SQLiteデータベースをcontentProviderに複製する必要がありますか、それとも、カスタムコンテンツプロバイダーを介さずにデータベースを直接使用するために、基盤となる設計に誤りがありますか?
次に、ロケーションレコードは、ID番号が競合するため、オンラインデータベースから単純に上下にコピーすることはできません。タグIDをロケーションIDに関連付ける「タグ」など、いくつかのリレーショナルテーブルがあります。私のタグIDは、必ずしも別のユーザーのタグIDと一致するとは限りません。ロケーションIDと同じです。したがって、転送にはいくつかのロジックが必要になります。 これはどこで/どのように適切に処理する必要がありますか?それはcontentResolverの役割ですか?(それが実際に何であるかわからない)
第三に、2人のユーザーが同時に同じ場所を追加した場合(おそらく説明と詳細が異なる場合)はどうなりますか? これらのレコードをマージするためのベストプラクティスはありますか?
最後に、オンラインコンポーネントを構築/ホストする最も簡単な方法は何ですか? この部分は私にとってまったく新しいものです。マスターデータベースをパブリックドロップボックスフォルダーに配置することはできますか、それともカスタムphp Webアプリを最初から作成する必要がありますか?または、この部分を簡単にするパッケージ済みのソリューションはありますか?